Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2011, 00:11   #1
Oliveyra
 
Регистрация: 12.04.2011
Сообщений: 6
Вопрос Графика в Паскале. Мультипликация.

Помогите пожалуйста с задачей!

Нарисавать квадрат заданого размера, обеспечить возможность управления движением квадрата спомощью клавишь-стрелочек.

Есть похожая программка, но только здесь два квадрата двигаются рандомно до нажатия клавиши.

Код:
uses graph,crt;
var x,y,r1,r2,x1,y1,x2,y2,d:integer;
    u1,u2:real;
begin
x:=0;
initgraph(x,y,'');
x:=getmaxX div 2;
y:=getmaxY div 2;
outtextXY(x-80,20,'Vyhod any key...');
r1:=75;
r2:=150;
d:=10;
u1:=0;
u2:=0;
x1:=x+round(r1*cos(u1));
y1:=y-round(r1*sin(u1));
setcolor(12);
rectangle(x1-d,y1-d,x1+d,y1+d);
x2:=x+round(r2*sin(u2));
y2:=y-round(r2*cos(u2));
setcolor(14);
rectangle(x2-d,y2-d,x2+d,y2+d);
repeat
delay(50);
setcolor(0);
rectangle(x1-d,y1-d,x1+d,y1+d);
rectangle(x2-d,y2-d,x2+d,y2+d);
u1:=u1+0.04;
u2:=u2+0.02;
x1:=x+round(r1*cos(u1));
y1:=y-round(r1*sin(u1));
setcolor(12);
rectangle(x1-d,y1-d,x1+d,y1+d);
x2:=x+round(r2*sin(u2));
y2:=y-round(r2*cos(u2));
setcolor(14);
rectangle(x2-d,y2-d,x2+d,y2+d);
until keypressed;
end.
Здесь похожая пограммка, эллипс двигается по нажатию на стрелочки, но это немного не то. Я думаю что стрелочку нужно нажать 1 раз и в эту сторону должен перемещаться квадрат, но я незнаю как это реализовать.

Код:
USes Graph, Crt;
Var Gd, Gm, i, j : Integer;
ch: char;
procedure fshk(i,j:integer);
Var dx ,dy, xx,yy : Integer;
begin
 dx:=3 ;
 dy:=13;
 xx:=i*30+dx+15;
 yy:=j*30+dy+15;
 setcolor(4);
 setfillstyle(1,4);
 fillellipse(xx,yy,30,20);
 setcolor(15);
 
end;
Begin
 Gd:=Detect;
 InitGraph(Gd, Gm, 'C:\BP\BGI'); 
 SetTextStyle(10,0,7);
 setcolor(0);
 for i:=-5 to 5 do
 for j:=-5 to 5 do
 if abs(i)+abs(j) < 9 then OutTextXY(140+i,10+j,'SH A SH K I');
 SetColor(0);
 for i:=-4 to 4 do
 for j:=-4 to 4 do
 if abs(i)+abs(j) < 7 then OutTextXY(200+i,40+j,'SH A SH K I');
 repeat
 cleardevice;
   fshk(i,j);
  ch:=readkey;
  if ch=#0 then begin
   ch:=readkey;
   case ch of
    #75: i:=i-1;
    #77: i:=i+1;
    #80: j:=j+1;
    #72: j:=j-1;
   end;
  end;
 until ch=#27;
 ReadKey;
 CloseGraph;  
End.
Помогите пожалуйста! Спасибо зарание!
Oliveyra вне форума Ответить с цитированием
Старый 20.05.2011, 02:14   #2
Oliveyra
 
Регистрация: 12.04.2011
Сообщений: 6
Восклицание

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

Код:
uses graph,crt;
var x,y,r1,x1,y1,d:integer; u1:real;
    ch:char;
begin
x:=0;
initgraph(x,y,'');
x:=getmaxX div 2;
y:=getmaxY div 2;
outtextXY(x-80,20,'Vyhod Esc...');
r1:=100;
d:=40;
u1:=0;
x1:=x+round(r1*cos(u1));
y1:=y-round(r1*sin(u1));
setcolor(12);
rectangle(x1-d,y1-d,x1+d,y1+d);
setcolor(14);
repeat
delay(50);
setcolor(0);
rectangle(x1-d,y1-d,x1+d,y1+d);
u1:=u1+0.04;
x1:=x+round(r1*cos(u1));
y1:=y-round(r1*sin(u1));
setcolor(12);
rectangle(x1-d,y1-d,x1+d,y1+d);
ch:=#0;
while keypressed do ch:=readkey
until ch=#27;
end.
Oliveyra вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мультипликация Meatdealer Помощь студентам 0 09.12.2010 15:29
Графика в паскале Aman Паскаль, Turbo Pascal, PascalABC.NET 5 02.10.2010 17:11
C++ | Мультипликация. Теория множества b1otekk Помощь студентам 0 08.06.2009 16:09
Графика на Паскале HECTOR.A. Помощь студентам 1 24.03.2009 04:14