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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2015, 15:09   #1
Sour1
 
Регистрация: 15.12.2015
Сообщений: 8
По умолчанию Помогите создать движение танка и рандомные мины

Он делает только одно движение вверх
Код:
program TanK1;
uses Crt, graph;
var
grDriver : Integer;
grMode   : Integer;
x,i,y: Integer;
c:char;
begin
grDriver:= Detect;
InitGraph(grDriver, grMode, 'X:\BP');
x:=3;
y:=400;
 Rectangle(x,y+15,x+20,y+50);
 Circle(x+10,y+30,7);
 line(x+10,y+5,x+10,y+25);
repeat
c:=readkey;
 if (ord(C)=072) then
  begin
  Rectangle(x,y,x+20,y-35);
  Circle(x+10,y-20,7);
  line(x+10,y-45,x+10,y-25);
   setfillstyle(1,BLACK);
end;
 if (ord(C)=080) then
  begin
   setfillstyle(1,0);
  Rectangle(x,y+30,x+20,y+30);
        Circle(x+10,y+60,7);
     line(x+10,y+30,x+10,y+55);
   end;

 if(ord(C)=077) then
  begin
   setfillstyle(1,0);
   Rectangle(x,y+25,x+20,y+60);
        Circle(x+10,y+30,7);
     line(x+10,y+5,x+10,y+25);
end;
 if (ord(C)=075) then
  begin

   Rectangle(x,y+15,x+20,y+50);
        Circle(x+10,y+30,7);
     line(x+10,y+5,x+10,y+25);
   end;
   until
ord(C)=27 ;
closegraph;
end.

А эти темы чем не нравятся?

http://programmersforum.ru/showthread.php?t=287020
http://programmersforum.ru/showthread.php?t=287060

Кросспостинг на форуме запрещен

Последний раз редактировалось Аватар; 24.12.2015 в 17:28.
Sour1 вне форума Ответить с цитированием
Старый 24.12.2015, 16:52   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

патаму что "текст по .... написан" (с)
ковыряй
Код:
program TanK1;
uses Crt, graph;
var
grDriver : Integer;
grMode   : Integer;
x,y: Integer;
c:char;
procedure Tank(x,y,path:integer);
begin
case path of
     1: begin
      Rectangle(x,y+15,x+20,y+55);
      Circle(x+10,y+35,7);
      line(x+10,y+5,x+10,y+25);
    end;
2: begin
    Rectangle(x,y+15,x+20,y+55);
    Circle(x+10,y+35,7);
    line(x+10,y+45,x+10,y+45+25);
   end;
3: begin
    Rectangle(x,y+15,x+40,y+35);
    Circle(x+20,y+25,7);
    line(x+27,y+25,x+47,y+25);
   end;
4: begin
    Rectangle(x,y+15,x+40,y+35);
    Circle(x+20,y+25,7);
    line(x+13,y+25,x-5,y+25);
   end;
end;
end;

begin
grDriver:= Detect;
InitGraph(grDriver, grMode, 'X:\BP');
x:=3;
y:=400;
tank(x,y,1);

repeat
c:=readkey;
if ord(c)=072 then
 begin
   cleardevice;
   y:=y-15;
   if y<0 then y:=480;
   tank(x,y,1);
 end;
if ord(c)=080 then
 begin
   cleardevice;
   y:=y+15;
   if y>480 then y:=0;
   tank(x,y,2);
 end;
if ord(c)=077 then
 begin
   cleardevice;
   x:=x+10;
   if x>640 then x:=0;
   tank(x,y,3);
 end;
if ord(c)=075 then
 begin
   cleardevice;
   x:=x-10;
   if x<0 then x:=640;
   tank(x,y,4);
 end;
until ord(c)=027;
closegraph;
end.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 24.12.2015, 18:11   #3
Sour1
 
Регистрация: 15.12.2015
Сообщений: 8
По умолчанию

А как сделать рандомные мины если cleardevice все стирает ?
Sour1 вне форума Ответить с цитированием
Старый 24.12.2015, 18:31   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Sour1 Посмотреть сообщение
А как сделать рандомные мины если cleardevice все стирает ?
Либо не использовать ClearDevice (тогда нужно стирать танк локально).
Либо после использования ClearDevice рисовать мины заново.

я бы рекомендовал первый вариант (иначе всё будет мерцать).

И, в любом случае, лучше разделять игровую логику/данные от вывода графики на экран.

Хранить координаты и танка и мин в какой-то структуре, менять в ней же.
При необходимости выводить на экран.

Что Вы с такой простой задачей уже много дней маетесь?
если не рассусоливать, то там всех делов на час.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.12.2015, 20:58   #5
Sour1
 
Регистрация: 15.12.2015
Сообщений: 8
По умолчанию Подкорректируйте ошибки 😅😇

Код:
program TanK1;
uses Crt, graph;
var
a,b:array[1..100] of integer;
grDriver : Integer;
grMode   : Integer;
y1,x1,x,y,Z,N,i: Integer;
c:char;
begin
grDriver:= Detect;
InitGraph(grDriver, grMode, 'X:\BP');
x:=3;
y:=400;
x1:=23;
y1:=440;
Rectangle(x,y+15,x+20,y+55);
Circle(x+10,y+30,7);
line(x+10,y+5,x+10,y+25);

 randomize;

 for i:=1 to 100 do
begin
  n:=random(15)+3;
  z:=random(19)+1;
  a[i]:=(x+3)+(65*n);
  b[i]:=(y-76)-(42*z);
  end;
  for i:=1 to 100 do
  begin
   setfillstyle(1,red);
   circle(a[i],b[i],8);
   floodfill(a[i],b[i],getmaxcolor);
  end;
 randomize;
     repeat
     for i:=1 to 100 do
  begin
  if ((x+8)=a[i]) or ((y-10)=b[i]) then
   begin
    setfillstyle(1,black);
    bar(0,0,640,480);
    outtextxy(100,480,'game over') ;

    end;
    end;

 c:=readkey;
 if (ord(C)=072) then
   begin
  y:=y-80;
   Rectangle(x,y+15,x+20,y+55);
   Circle(x+10,y+35,7);
line(x+10,y+5,x+10,y+25);
setfillstyle(1,0);
y1:=y1-20;
bar(x,y1+35,x+20,y+85);
 end;

 if (ord(C)=080) then
  begin
  y:=y+80;
   Rectangle(x,y+15,x+20,y+55);
   Circle(x+10,y+35,7);
   line(x+10,y-10,x+10,y-40);
setfillstyle(1,0);
y1:=y1-80;
bar(x,y1+40,x+20,y-80);
end;
 if(ord(C)=077) then
begin
   x:=x+50;
   Rectangle(x,y+15,x+40,y+35);
   Circle(x+20,y+25,7);
   line(x+27,y+25,x+47,y+25);
setfillstyle(1,0);
x1:=x1+50;
bar(x1-87,y1+25,x1-35,y-40);

end;
 if (ord(C)=075) then
  begin
 x:=x-50;
   Rectangle(x,y+15,x+40,y+35);
   Circle(x+20,y+25,7);
   line(x+13,y+25,x-5,y+25);
setfillstyle(1,0);
x1:=x1-50;
bar(x1+87,y1+25,x1+35,y-40);
   end;


   until ord(C)=27 ;
closegraph;
end.
Sour1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заменить определенное слово на рандомные слова igrok111 Общие вопросы Delphi 3 04.08.2013 00:15
Создать и обработать движение картинки на Timage, Delphi Человек Панда Помощь студентам 3 21.01.2013 18:54
Рандомные числа shrek1993 Visual C++ 13 02.07.2012 15:24
Рандомные лабиринты в одноименной игре. Kamilius Общие вопросы C/C++ 1 01.03.2012 00:02
Сапер: расчет вероятности нахождения мины Explode Помощь студентам 0 04.10.2010 00:33