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

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

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

 
 Ответить  Открыть новую тему 
> Движущийся объект, солнце
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


поиск
****

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

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


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

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

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



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


Пионер
**

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

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


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


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


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


поиск
****

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

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


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

цикл

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


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


Пионер
**

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

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


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


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


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


Пионер
**

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

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


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


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Пионер
**

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

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


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


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


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: 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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.



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

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

 





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