IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задание: В виде мультфильма представить картину, сделать в паскале графический результат
flashg
сообщение 2.08.2005 21:16
Сообщение #1


Гость






Задание:

Кто нибудь знает как это сделать, есть ли исходник

В виде мультфильма представить картину медленного захода солнца за линию горизонта с изменением освещения пейзажа.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 19)
volvo
сообщение 2.08.2005 21:33
Сообщение #2


Гость






flashg, а пейзаж должен быть, конечно, 3D? Иначе какое же изменение освещения? blink.gif Тогда ты ошибся разделом... Тебе в Delphi (или 32-битные компиляторы) + OpenGL в руки...

Или уточни задание: Что за пейзаж, как задаешь, чем можно пользоваться ...
 К началу страницы 
+ Ответить 
Guest
сообщение 3.08.2005 0:02
Сообщение #3


Гость






нет нас пока учат на паскале я глаза не видел дельфи

а разве нельзя его вест этот 2ух мерный пейзаж цветом радуги сплошным оброзом изменять
 К началу страницы 
+ Ответить 
flashg
сообщение 3.08.2005 0:04
Сообщение #4


Гость






это вот всё задание нам таким оброзом дают - а пользоватся можно тока паскалем.

выше отавленый комент под GUEST это мое сообщение
 К началу страницы 
+ Ответить 
volvo
сообщение 3.08.2005 0:26
Сообщение #5


Гость






Цитата(Guest @ 3.08.05 0:02)
а разве нельзя его вест этот 2ух мерный пейзаж цветом радуги сплошным оброзом изменять

Во-первых, чтобы его изменять, надо его сначала нарисовать... Ты это умеешь? И потом, что значит "цветом радуги" и "сплошным образом"? Непонятно... Единственное, что можно попытаться сделать - это прочитать "пейзаж" из внешнего BMP (или PCX) файла, поверх него отрисовать "солнце", и потом затемнять все изображение, начиная с того момента, как "солнце" коснулось "горизонта" (при этом яркость изображения будет = 100%), до того момента, как "оно" за горизонтом скроется полностью (тогда яркость будет = 0%, и экран будет полностью черным)...

Но вот как реализовать отрисовку пикселов с заданной степенью яркости (или просто смену яркости для пикселов) - надо думать...
 К началу страницы 
+ Ответить 
Malice
сообщение 3.08.2005 9:07
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(volvo @ 3.08.05 0:26)
Но вот как реализовать отрисовку пикселов с заданной степенью яркости (или просто смену яркости для пикселов) - надо думать...

Палитру крутить надо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
flashg
сообщение 3.08.2005 11:35
Сообщение #7


Гость






и как это палитра крутится
 К началу страницы 
+ Ответить 
Malice
сообщение 3.08.2005 13:31
Сообщение #8


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(flashg @ 3.08.05 11:35)
и как это палитра крутится


Для начала сохрани начальную палитру:
Код
port[$3c8]:=номер цвета;
red;=port[$3c9];
green:=port[$3c9];
blue:=port[$3c9];

Так установить цвет:
Код
port[$3c8]:=номер цвета;
port[$3c9]:=красный;
port[$3c9]:=зеленый;
port[$3c9]:=синий;


По мере "восхождения" меняй все палитру от 0 до оригинальной, все как бы проявится.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
flashg
сообщение 12.08.2005 16:20
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской

Репутация: -  0  +


Моё задание звучит так

В виде мультфильма представить картину медленного захода солнца за линию горизонта с изменением освещения пейзажа.
========================================================
вопрос как мне сделать линию на сплошном цвете и изменение цвета пейзажа

+ у меня ко всем графическим програ==ам глюк после запуска не возможно вернутся к редоктированию он (паскаль) зависает на этой процедуре показывания графического результата.





Код

{прототип заката}
program zakat;
uses
   crt,graph;
var
  grdr,grmd,i,j,g:integer;
begin
    grdr:=detect;
    initgraph(grdr,grmd,'c:\pascal\bgi');
    setbkcolor(lightblue);
    g:=getbkcolor;
    i:=50; j:=50;
    while i<getmaxX do
    begin
         setcolor(red);
         setfillstyle(1,yellow);
         fillellipse(i,j,20,20);
         delay(3000);
         setcolor(g);
         setfillstyle(1,g);
         fillellipse(i,j,20,20);
         i:=i+random(3);
         j:=j+random(2);
    end;
readln;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 12.08.2005 17:02
Сообщение #10


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Ты не закрыл графику.
CloseGraph.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.08.2005 17:04
Сообщение #11


Гость






flashg,
Цитата
вопрос как мне сделать линию на сплошном цвете и изменение цвета пейзажа

Линия НА ЛЮБОМ цвете рисуется через Line(x1, y1, x2, y2), ну а насчет изменения цвета пейзажа - попробуй ВНИМАТЕЛЬНО перечитать, например, пост №8...

Кстати, ты в графический-то режим переходишь (InitGraph), а CloseGraph за тебя кто будет делать?
 К началу страницы 
+ Ответить 
flashg
сообщение 12.08.2005 18:57
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской

Репутация: -  0  +


Цитата(Malice @ 3.08.05 16:31)
Для начала сохрани начальную палитру:
Код
port[$3c8]:=номер цвета;
red;=port[$3c9];
green:=port[$3c9];
blue:=port[$3c9];

Так установить цвет:
Код
port[$3c8]:=номер цвета;
port[$3c9]:=красный;
port[$3c9]:=зеленый;
port[$3c9]:=синий;






Цитата(flashg @ 12.08.05 19:20)
Код

{прототип заката}
program zakat;
uses
   crt,graph;
var
  grdr,grmd,i,j,g:integer;
begin
    grdr:=detect;
    initgraph(grdr,grmd,'c:\pascal\bgi');
    setbkcolor(lightblue);
    g:=getbkcolor;
    i:=50; j:=50;
    while i<getmaxX do
    begin
         setcolor(red);
         setfillstyle(1,yellow);
         fillellipse(i,j,20,20);
         delay(3000);
         setcolor(g);
         setfillstyle(1,g);
         fillellipse(i,j,20,20);
         i:=i+random(3);
         j:=j+random(2);
    end;
readln;
end.



ну и куда мне это в мою заготовку втыкать blink.gif

Сообщение отредактировано: flashg - 12.08.2005 18:57
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Malice
сообщение 12.08.2005 19:15
Сообщение #13


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(flashg @ 12.08.05 18:57)
ну и куда мне это в мою заготовку втыкать  blink.gif


Гы smile.gif Через Copy, Paste программы не пишутся. Сохраняешь в начале в массив. Меняешь в цикле по ходу движения.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
flashg
сообщение 12.08.2005 20:51
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской

Репутация: -  0  +


окей нашёл пример домик с палянкой и нужный фон дом и фон убрал пытался втиснуть солнце а вышла глюконация

вот глянте - в чём моя ошибка

Код
uses crt,graph;
const a:array [1..9] of byte=(0,0,1,3,11,3,1,0,0);
var GrDriver,GrMode,i,g,j:integer;

procedure dom;
const
cga=1;
begin
    setcolor(2);
    line(0,400,getmaxX,400);
    g:=getbkcolor;
    i:=50; j:=50;
    while i<700 do
    begin
        setcolor(yellow);
         setfillstyle(1,yellow);
         fillellipse(i,j,40,40);
         delay(2000);
         setcolor(g);
         setfillstyle(1,g);
         fillellipse(i,j,40,40);
         i:=i+random(3);
         j:=j+random(2);
    end;
end;

procedure fon (i:word);
Begin
    SetBkColor(i);
    SetFillStyle(1,green);
    SetColor(lightgreen);
End;

BEGIN
    GrDriver:=EGA; GrMode:=EGAHi;
    initgraph(GrDriver,GrMode,'c:\pascal\BGI'); {прописать расположение паскаля}
    if GraphResult<>grOK then halt(1);
    for i:=1 to 9 do
       begin
             fon(a[i]);
             dom;
             delay(65000);
             delay(65000);
        end;
closegraph;
end.
    readln;

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Malice
сообщение 12.08.2005 21:04
Сообщение #15


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


В этом коде ошибок нет. Летает солнышко как и задумано smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
flashg
сообщение 13.08.2005 10:37
Сообщение #16


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской

Репутация: -  0  +


да но фон та чёрный постоянный а задумывался сменяющейся
Код
uses crt,graph;
const a:array [1..9] of byte=(0,0,1,3,11,3,1,0,0);
var GrDriver,GrMode,i:integer;

procedure fon (i:word);
Begin
    SetBkColor(i);
    SetFillStyle(1,green);
    SetColor(lightgreen);
End;

BEGIN
    GrDriver:=EGA; GrMode:=EGAHi;
    initgraph(GrDriver,GrMode,'c:\pascal\BGI'); {прописать расположение паскаля}
    if GraphResult<>grOK then halt(1);
    for i:=1 to 9 do
        begin
             fon(a[i]);
             delay(65000);
             delay(65000);
             end;
closegraph;
end.
    readln;
    END.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 14.08.2005 13:31
Сообщение #17


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


я конечно не уверен...попробуй вот так :


procedure fon (i:word);
Begin
SetBkColor(i);
SetFillStyle(0,i);
FloodFill(0,0,i);
End;


тока с цветами уже сам разберсь как тебе менять


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
flashg
сообщение 14.08.2005 14:13
Сообщение #18


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской

Репутация: -  0  +


вот вариант в котором фон тока не меняется а всё остальное работает


Прикрепленные файлы
Прикрепленный файл  sanetfon.zip ( 623 байт ) Кол-во скачиваний: 167
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
flashg
сообщение 14.08.2005 18:12
Сообщение #19


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской

Репутация: -  0  +


дубль 3

фон меняется солнце есть но за солнцем глючный след и снова бесконечность
Код
uses crt,graph;
const a:array [1..9] of byte=(10,9,5,3,11,7,8,10,11);
var GrDriver,GrMode,i,g,j:integer;
f:word;

procedure dom;
const
cga=1;
begin
    line(0,300,getmaxX,300);
    SetBkColor(f);
    i:=50; j:=50;
    while i<300 do
    begin
        setcolor(yellow);
         setfillstyle(1,yellow);
         fillellipse(i,j,40,40);
         delay(2000);
         setcolor(f);
         setfillstyle(1,f);
         fillellipse(i,j,40,40);
         i:=i+random(3);
         j:=j+random(2);
    end;
end;

procedure fon (f:word);
Begin
    SetBkColor(f);
    SetFillStyle(1,f);
    SetColor(f);
End;

BEGIN
    GrDriver:=cGA; GrMode:=cGAHi;
    initgraph(GrDriver,GrMode,'c:\pascal\BGI'); {прописать расположение паскаля}
    if GraphResult<>grOK then halt(1);
    for f:=1 to 9 do
       begin
             fon(a[f]);
             dom;
             delay(100);
             delay(100);
        end;
closegraph;
end.
    readln;

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
flashg
сообщение 17.08.2005 21:35
Сообщение #20


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской

Репутация: -  0  +


сделал:
Код

uses crt,graph;
const a:array [1..9] of byte=(10,9,5,3,11,7,8,10,11);
var GrDriver,GrMode,i,g,j:integer;
   Palette : PaletteType;
f:word;

procedure dom;
const
    maxi = 400;
    starti = 0;
begin
    line(0,maxi,getmaxX,maxi);
    i:=starti; j:=50;
   { SetRGBPalette(f, round((maxi - i - starti)*256/maxi), 0, 0);{}
    SetBkColor(f);
    while i<360 do
    begin
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
         SetRGBPalette(f, round((maxi - i - starti)*63/maxi), 0, 0);{}
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

         setcolor(yellow);
         setfillstyle(1,yellow);
         fillellipse(j,i,40,40);
         delay(4000);
         setcolor(f);
         setfillstyle(1,f);
         fillellipse(j,i,40,40);
         i:=i+random(3);
         j:=j+random(2);
    end;
end;

procedure fon (f:word);
Begin
    SetBkColor(f);
    SetFillStyle(1,f);
    SetColor(f);
End;

BEGIN
    GrDriver:=VGA; GrMode:=VGAHi;
    initgraph(GrDriver,GrMode,'c:\pascal\bgi'); {прописать расположение паскаля}
    if GraphResult<>grOK then halt(1);
    f := 1;
    GetPalette(Palette);
    fon(a[f]);{}
    dom;
    SetAllPalette(Palette);

closegraph;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.07.2025 9:53
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"