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

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

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

 
 Ответить  Открыть новую тему 
> Движущийся объект, солнце
nesh
сообщение 22.04.2008 17:57
Сообщение #1


Пионер
**

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

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


Всем привет!!!
У меня есть рисунок на паскале на нем надо сделать движущееся солнце, чтобы оно восходило на востоке и заходило на западе, пожалуйста помогите сделать!


program domik;

uses CRT,Graph;
const n=500;
var grdr,grmd,error,d: Integer;
i: integer;

dx,gx,gy,gd,gm,x1,y1:integer;
x,y,vx,vy,p:array[1..n] of integer;
r,l,c:boolean;
procedure solnce(x,y: word;col:byte);
begin
setcolor(col);
circle(x,y,45);
floodfill(x,y,col);
end;
begin
grdr:=detect;
InitGraph(grdr, grmd,'c:\FPC\2.2.0\bin');
ErrorCode := GraphResult;
if ErrorCode <> 0 then
begin
writeln(GraphErrorMsg(ErrorCode));
halt;
end;
setlinestyle(0,255,3);

setcolor(2);
setfillstyle(4,2);
moveto(80,240);
lineto(95,300);
lineto(65,300);
lineto(80,240);
floodfill(80,250,2);
moveto(80,300);
lineto(110,380);
lineto(50,380);
lineto(80,300);
floodfill(80,310,2);
moveto(80,380);
lineto(120,460);
lineto(40,460);
lineto(80,380);
floodfill(80,400,2);
setcolor(6);
setfillstyle(1,6);
bar(75, 460, 85, 500);
{„®¬ЁЄ}
setcolor(4);
rectangle(250,250, 500, 500);
setfillstyle(1,4);
floodfill(255,255,4);
line(250, 250,375,125);
line(500,250,375,125);
moveto(432,180);
lineto(432,130);
line(432,130,452,130);
moveto(452,130);
lineto(452,200);
setcolor(14);
rectangle(300,300,450,420);
setfillstyle(1,14);
floodfill(310,310,14);
setcolor(15);
line(300,333,450,333);
line(375,333,375,420);
setcolor(6);
circle(375,200,30);
line(375,170,375,230);

setcolor(14);
setfillstyle(1,14);
circle(800,80,45);
floodfill(800,80,14);

setcolor(2);
rectangle(0,500,1279,500);
setfillstyle(11,2);
floodfill(0,510,2);

setcolor(8);
rectangle(500,350,1279,350);
setfillstyle(0,8);
bar(500,350,1279,350);
line(600,350,600,500);
line(700,350,700,500);
line(800,350,800,500);
line(900,350,900,500);
line(1000,350,1000,500);
line(1100,350,1100,500);
line(1200,350,1200,500);



readkey;
closegraph;

end.



--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
renesko1
сообщение 22.04.2008 18:13
Сообщение #2


поиск
****

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

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


Солнце движется по кругу -->
Вот формулы :
x := round(x0 + cos ( alfa ) * cer ) ;
y := round(y0 + sin ( alfa ) * cer ) ;

x0, y0 : центр вращения.
cer : растояние от центра.
Для передвижения солнца меняем угол alfa.

Или солнце справа по линии ползет на лево.
Тогда меняем координату x.
-------------------------
Рисоавние :
Рисуем солнце.
Меняем координату.
Ждемс.
Стираем солнце.
Рисуем заново.и тд.



--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
nesh
сообщение 22.04.2008 19:58
Сообщение #3


Пионер
**

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

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


Цитата
Рисоавние :
Рисуем солнце.
Меняем координату.
Ждемс.
Стираем солнце.
Рисуем заново.и тд.


Этот алгоритм мне очень понятен! smile.gif А вот его реализация не очень!!! dry.gif


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
renesko1
сообщение 22.04.2008 20:06
Сообщение #4


поиск
****

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

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


Солнце это arc(x, y, 0, 360, 30) ;
Меняем координаты по вышестоящим формулам.
Пример

цикл

SetColor(0);
arc(x,y,...);
SetColor(15);
arc(x,y...)
x:=...
y:=...


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
nesh
сообщение 22.04.2008 22:14
Сообщение #5


Пионер
**

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

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


Цитата
SetColor(0);
arc(x,y,...);
SetColor(15);
arc(x,y...)
x:=...
y:=...


Это в цикле или за ним?! Если делать в цикле, то нужно условие ставить и какое оно здесь?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
nesh
сообщение 23.04.2008 16:17
Сообщение #6


Пионер
**

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

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


Народ, че-то у меня вобще ниче не получается, ПОМОГИТЕ!!!


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 24.04.2008 1:51
Сообщение #7


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


в том виде, в котором ты выложила, не компилируется - неизвестная переменная ErrorCode.

а дальше - ты сама себе создала проблему, нарисовав все так крупно, что солнцу не осталось чистого места. оно же должно ходить ЗА домиком => придется каждый раз домик перерисоввывать. оно тебе надо?

примерно так может выглядеть движение солнца "в чистом поле":
for alpha:=100 to 200 do
begin
setcolor(6);
x0:=(getmaxx div 2)+round(cos(alpha*pi/100)*300);
y0:=getmaxy+round(sin(alpha*pi/100)*300);
circle(x0,y0,40);
setfillstyle(1,6);
floodfill(x0,y0,6);
setcolor(0);
setfillstyle(1,0);
delay(50000);
circle(x0,y0,40);
floodfill(x0,y0,0);
end;


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
nesh
сообщение 29.04.2008 16:09
Сообщение #8


Пионер
**

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

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


Че-то оно у меня не двигается!!!


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
renesko1
сообщение 29.04.2008 16:56
Сообщение #9


поиск
****

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

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



while true do
begin
delay(100);
SetColor(0);
arc(x,y,...);
SetColor(желтый цвет);
arc(x,y...)
x := round(x0 + cos ( alfa ) * cer ) ;
y := round(y0 + sin ( alfa ) * cer ) ;
alfa := alfa + 0.1 ;
end ;



Попробуй так.
Здесь солнце желтая окружность.



--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
падла
сообщение 27.02.2015 13:59
Сообщение #10


Гость






Цитата(nesh @ 22.04.2008 17:57) *

Всем привет!!!
У меня есть рисунок на паскале на нем надо сделать движущееся солнце, чтобы оно восходило на востоке и заходило на западе, пожалуйста помогите сделать!


program domik;

uses CRT,Graph;
const n=500;
var grdr,grmd,error,d: Integer;
i: integer;

dx,gx,gy,gd,gm,x1,y1:integer;
x,y,vx,vy,p:array[1..n] of integer;
r,l,c:boolean;
procedure solnce(x,y: word;col:byte);
begin
setcolor(col);
circle(x,y,45);
floodfill(x,y,col);
end;
begin
grdr:=detect;
InitGraph(grdr, grmd,'c:\FPC\2.2.0\bin');
ErrorCode := GraphResult;
if ErrorCode <> 0 then
begin
writeln(GraphErrorMsg(ErrorCode));
halt;
end;
setlinestyle(0,255,3);

setcolor(2);
setfillstyle(4,2);
moveto(80,240);
lineto(95,300);
lineto(65,300);
lineto(80,240);
floodfill(80,250,2);
moveto(80,300);
lineto(110,380);
lineto(50,380);
lineto(80,300);
floodfill(80,310,2);
moveto(80,380);
lineto(120,460);
lineto(40,460);
lineto(80,380);
floodfill(80,400,2);
setcolor(6); yes2.gif
setfillstyle(1,6);
bar(75, 460, 85, 500);
{„®¬ЁЄ}
setcolor(4);
rectangle(250,250, 500, 500);
setfillstyle(1,4);
floodfill(255,255,4);
line(250, 250,375,125);
line(500,250,375,125);
moveto(432,180);
lineto(432,130);
line(432,130,452,130);
moveto(452,130);
lineto(452,200);
setcolor(14);
rectangle(300,300,450,420);
setfillstyle(1,14);
floodfill(310,310,14);
setcolor(15);
line(300,333,450,333);
line(375,333,375,420);
setcolor(6);
circle(375,200,30);
line(375,170,375,230);

setcolor(14);
setfillstyle(1,14);
circle(800,80,45);
floodfill(800,80,14);

setcolor(2);
rectangle(0,500,1279,500);
setfillstyle(11,2);
floodfill(0,510,2);

setcolor(8);
rectangle(500,350,1279,350);
setfillstyle(0,8);
bar(500,350,1279,350);
line(600,350,600,500);
line(700,350,700,500);
line(800,350,800,500);
line(900,350,900,500);
line(1000,350,1000,500);
line(1100,350,1100,500);
line(1200,350,1200,500);
readkey;
closegraph;

end.



 К началу страницы 
+ Ответить 

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

 



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