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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2010, 23:49   #1
DeyaInferi
 
Регистрация: 31.10.2010
Сообщений: 9
Печаль Движение обьектов: машинка

Здравствуйте!
Очень нужна помощь.
Задача такая, что бы нарисовать машинку, заставить ее двигаться в разные стороны и переворачиваться.
Все это сделала.
Т.е. машинка у меня нарисована, двигается. Но.. Она не поворачивается.
Т.е. мне нужно, что бы при нажатии влево она поворачивалась, а не ехала задом. Понимаю, что это как-то через еще одну процедуру. Но не знаю, как это сделать.
Заранее спасибо
Код программы:
Код:
Uses Graph, crt;
Var
 dv,mv,r,x,y,c:integer;
 v:char;

procedure car(x,y:integer);
var
k,m,c,dv,mv:integer;
begin
setcolor(green);
setfillstyle(1,3);
rectangle(x,y,x+110, y+100);
Floodfill(x+1, y+1, green);

setfillstyle(1,4);
rectangle(x+110, y+40, x+150, y+100);
floodfill(x+111, y+41, green);

setfillstyle(1,6);
rectangle(x+125, y+50, x+144, y+90);
floodfill(x+126, y+60, green);

setfillstyle(1,5);
circle(x+125, y+120, 15);
floodfill(x+126, y+121, green);

setfillstyle(1,1);
circle(x+125, y+120, 8);
floodfill(x+126, y+121, green);

setfillstyle(1,5);
circle(x+30, y+120, 15);
floodfill(x+31, y+121, green);

setfillstyle(1,1);
circle(x+30, y+120, 8);
floodfill(x+31, y+121, green);

setcolor(8);
line(0,220,640,220);
delay(99);
end;
 begin


 dv:=detect;
 initgraph(dv,mv,'');
 x:=320;
 y:=240;
 c:=15;
   setcolor(c);
   setfillstyle(1,c);
   circle(x,y,r);
          floodfill(x,y,c);
 repeat
  v:=readkey;
           Cleardevice;
           setcolor(0);
setfillstyle(1,0);
bar(x-100, y-100, x+150, y+135);
floodfill(x+10, y+10, 0);
    case v of
     #77:
      begin
       x:=x+5;
        if x>640 then x:=1;
       end;
       #75:
         begin
         x:=x-5;
         if x<1 then x:=640;
         end;
       #80:
     begin y:=y+5; If y>480 then y:=1;
         end;
        #72:
         begin y:=y-5; if y<1 then y:=480;
           end;
         end;
          setcolor(c);
          setfillstyle(1,c);
     car(x,y);
          until v=#27;
          end.

Последний раз редактировалось DeyaInferi; 01.11.2010 в 00:02.
DeyaInferi вне форума Ответить с цитированием
Старый 01.11.2010, 00:34   #2
NSvirus
пропагандирую жизЪ
Форумчанин
 
Аватар для NSvirus
 
Регистрация: 19.03.2007
Сообщений: 950
По умолчанию

Добавляем дополнительную переменную, которая отвечает за поворот. "pr"
Код:
rectangle(x,y,x+110*pr,y+100);
floodfill(x+1*pr,y+1,green)
Домножаем координаты каждого элемента рисунка.
Только переменные рядом с X. Прим:
X+100*pr

А здесь регистрируем. При нажатии вправо, переменная положительная.
Влево - отрицательная.
Код:
    #77:
      begin
       x:=x+5; pr:=1; 
        if x>640 then  x:=1; 
       end;
       #75:
         begin
         x:=x-5;pr:=-1; 
         if x<1 then x:=640; 
         end;
       #80:
     begin y:=y+5; If y>480 then y:=1;
         end;
        #72:
Вложения
Тип файла: rar HELPIN.rar (632 байт, 14 просмотров)
Посторонним В.

Последний раз редактировалось NSvirus; 01.11.2010 в 00:44.
NSvirus вне форума Ответить с цитированием
Старый 01.11.2010, 01:16   #3
DeyaInferi
 
Регистрация: 31.10.2010
Сообщений: 9
По умолчанию

Спасибо огромное)
DeyaInferi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Машина Тьюринга ДваДваВо7 Помощь студентам 0 25.10.2010 16:43
виртуальная машина technik_312 Софт 8 12.01.2010 15:06
Машина Тьюринга. skorpi Помощь студентам 0 30.12.2009 21:40
Машина Тьюринга ReM Общие вопросы C/C++ 3 28.05.2009 21:19