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

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

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

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


Гость






Задание:

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

В виде мультфильма представить картину медленного захода солнца за линию горизонта с изменением освещения пейзажа.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






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

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


Гость






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

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


Гость






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

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


Гость






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

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

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


Профи
****

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

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


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

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


Гость






и как это палитра крутится
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


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

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

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


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


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


Гость






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

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

Кстати, ты в графический-то режим переходишь (InitGraph), а CloseGraph за тебя кто будет делать?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Профи
****

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

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


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


Гы smile.gif Через Copy, Paste программы не пишутся. Сохраняешь в начале в массив. Меняешь в цикле по ходу движения.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Профи
****

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

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


В этом коде ошибок нет. Летает солнышко как и задумано smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Новичок
*

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

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


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


Прикрепленные файлы
Прикрепленный файл  sanetfon.zip ( 623 байт ) Кол-во скачиваний: 230
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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

 





- Текстовая версия 16.04.2024 15:41
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name