С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 29.02.2012
Сообщений: 54

Игра "Танки"

15.03.2014, 17:12. Показов 20711. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот получил код, рабочий. Не все там гладко, нужно подправлять кое что. Например танк которым управляем нужно что бы он стрелял, поворачивал корпус. К тому же мы просто проезжаем сквозь танк противника... Мне сейчас надо разобраться с кодом и с чего начать/продолжить писать код.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
program primer_tank;
{ Íàðèñîâàòü òàíê }
uses GraphABC, Crt;
 
type
    Tank=class
     name: string;  { çàäàåò èìÿ òàíêà }
     color, i: integer; { çàäàåò öâåò òàíêà }
     ax: array [0..10] of integer; { çàäàåò êîîðäèíàòû ýëåìåíòîâ òàíêà ïî Õ }
     ay: array [0..10] of integer; { çàäàåò êîîðäèíàòû ýëåìåíòîâ òàíêà ïî Y }
     { Êîíñòðóêòîðîâ â êëàññå ìîæåò áûòü ñòîëüêî, íà ñêîëüêî âåëèêî ðàçíîîáðàçèå ñîçäàâàåìûõ îáúåêòîâ }
     constructor Create;
       begin
        name:='tank';
        color:=$000000;
        ax[0]:=0;
        ay[0]:=0;
        ax[1]:=80;
        ay[1]:=40;
       end;
     constructor Create(nm: string);
       begin
        name:=nm;
        color:=$000000;
        ax[0]:=0;
        ay[0]:=0;
        ax[1]:=10;
        ay[1]:=10;
       end;
     constructor Create(nm: string; x1,y1,c1: integer);
       begin
        name:=nm;
        color:=c1;
        ax[0]:=x1+0;
        ay[0]:=y1+0;
        ax[1]:=x1+80;
        ay[1]:=y1+40;
        ax[2]:=x1+25;
        ay[2]:=y1+5;
        ax[3]:=x1+55;
        ay[3]:=y1+35;
       end;
      procedure Draw(x2,y2: integer);
       begin
          {ClrScr;}
          SetPenColor(color);
           SetPenWidth(2);
           { Îñíîâàíèå òàíêà }
            Rectangle(ax[0]+x2,ay[0]+y2,ax[1]+x2,ay[1]+y2);
           { Áàøíÿ òàíêà }
           if name='T34' then
           begin
            Rectangle(ax[2]+x2,ay[2]+y2,ax[3]+x2,ay[3]+y2);
            Rectangle(ax[3]+x2,ay[2]+y2+5,ax[3]+x2+5,ay[3]-5+y2);
           end;
           if name='Tiger' then
           begin
            Rectangle(ax[2]+x2,ay[2]+y2,ax[3]+x2,ay[3]+y2);
            Rectangle(ax[2]+x2-5,ay[2]+y2+5,ax[2]+x2,ay[3]-5+y2);
           end;
            
           SetPenWidth(1);
           { Ãóñåíèöà 1 òàíêà }
            Rectangle(ax[0]+x2,ay[0]-trunc((ay[1]-ay[0])/4)+y2,ax[1]+x2,ay[0]+y2);
            Line(ax[0]+trunc((ax[1]-ax[0])/10)+x2,ay[0]+y2,ax[0]+trunc((ax[1]-ax[0])/10)+x2,ay[0]-trunc((ay[1]-ay[0])/4)+y2);
            Line(ax[0]+2*trunc((ax[1]-ax[0])/10)+x2,ay[0]+y2,ax[0]+2*trunc((ax[1]-ax[0])/10)+x2,ay[0]-trunc((ay[1]-ay[0])/4)+y2);
            Line(ax[0]+3*trunc((ax[1]-ax[0])/10)+x2,ay[0]+y2,ax[0]+3*trunc((ax[1]-ax[0])/10)+x2,ay[0]-trunc((ay[1]-ay[0])/4)+y2);
            Line(ax[0]+4*trunc((ax[1]-ax[0])/10)+x2,ay[0]+y2,ax[0]+4*trunc((ax[1]-ax[0])/10)+x2,ay[0]-trunc((ay[1]-ay[0])/4)+y2);
            Line(ax[0]+5*trunc((ax[1]-ax[0])/10)+x2,ay[0]+y2,ax[0]+5*trunc((ax[1]-ax[0])/10)+x2,ay[0]-trunc((ay[1]-ay[0])/4)+y2);
            Line(ax[0]+6*trunc((ax[1]-ax[0])/10)+x2,ay[0]+y2,ax[0]+6*trunc((ax[1]-ax[0])/10)+x2,ay[0]-trunc((ay[1]-ay[0])/4)+y2);
            Line(ax[0]+7*trunc((ax[1]-ax[0])/10)+x2,ay[0]+y2,ax[0]+7*trunc((ax[1]-ax[0])/10)+x2,ay[0]-trunc((ay[1]-ay[0])/4)+y2);
            Line(ax[0]+8*trunc((ax[1]-ax[0])/10)+x2,ay[0]+y2,ax[0]+8*trunc((ax[1]-ax[0])/10)+x2,ay[0]-trunc((ay[1]-ay[0])/4)+y2);
            Line(ax[0]+9*trunc((ax[1]-ax[0])/10)+x2,ay[0]+y2,ax[0]+9*trunc((ax[1]-ax[0])/10)+x2,ay[0]-trunc((ay[1]-ay[0])/4)+y2);
           { Ãóñåíèöà 2 òàíêà }
            Rectangle(ax[0]+x2,ay[1]+y2,ax[1]+x2,ay[1]+trunc((ay[1]-ay[0])/4)+y2);
            Line(ax[0]+trunc((ax[1]-ax[0])/10)+x2,ay[1]+y2,ax[0]+trunc((ax[1]-ax[0])/10)+x2,ay[1]+trunc((ay[1]-ay[0])/4)+y2);
            Line(ax[0]+2*trunc((ax[1]-ax[0])/10)+x2,ay[1]+y2,ax[0]+2*trunc((ax[1]-ax[0])/10)+x2,ay[1]+trunc((ay[1]-ay[0])/4)+y2);
            Line(ax[0]+3*trunc((ax[1]-ax[0])/10)+x2,ay[1]+y2,ax[0]+3*trunc((ax[1]-ax[0])/10)+x2,ay[1]+trunc((ay[1]-ay[0])/4)+y2);
            Line(ax[0]+4*trunc((ax[1]-ax[0])/10)+x2,ay[1]+y2,ax[0]+4*trunc((ax[1]-ax[0])/10)+x2,ay[1]+trunc((ay[1]-ay[0])/4)+y2);
            Line(ax[0]+5*trunc((ax[1]-ax[0])/10)+x2,ay[1]+y2,ax[0]+5*trunc((ax[1]-ax[0])/10)+x2,ay[1]+trunc((ay[1]-ay[0])/4)+y2);
            Line(ax[0]+6*trunc((ax[1]-ax[0])/10)+x2,ay[1]+y2,ax[0]+6*trunc((ax[1]-ax[0])/10)+x2,ay[1]+trunc((ay[1]-ay[0])/4)+y2);
            Line(ax[0]+7*trunc((ax[1]-ax[0])/10)+x2,ay[1]+y2,ax[0]+7*trunc((ax[1]-ax[0])/10)+x2,ay[1]+trunc((ay[1]-ay[0])/4)+y2);
            Line(ax[0]+8*trunc((ax[1]-ax[0])/10)+x2,ay[1]+y2,ax[0]+8*trunc((ax[1]-ax[0])/10)+x2,ay[1]+trunc((ay[1]-ay[0])/4)+y2);
            Line(ax[0]+9*trunc((ax[1]-ax[0])/10)+x2,ay[1]+y2,ax[0]+9*trunc((ax[1]-ax[0])/10)+x2,ay[1]+trunc((ay[1]-ay[0])/4)+y2);
 
           { Ñòâîë òàíêà }
           if name='T34' then
            Rectangle(ax[1]+x2+10,ay[0]+trunc((ay[1]-ay[0])/2)+y2-2,ax[3]+5+x2,ay[0]+trunc((ay[1]-ay[0])/2)+y2+2);
           if name='Tiger' then
           begin
            Rectangle(ax[0]+x2-10,ay[0]+trunc((ay[1]-ay[0])/2)+y2-2,ax[2]-5+x2,ay[0]+trunc((ay[1]-ay[0])/2)+y2+2);
            Rectangle(ax[0]+x2-10,ay[0]+trunc((ay[1]-ay[0])/2)+y2-3,ax[0]-5+x2,ay[0]+trunc((ay[1]-ay[0])/2)+y2+3);
           end;
           
           { Áàêè òàíêà }
           if name='T34' then
           begin
            Rectangle(ax[0]+x2+5,ay[2]+y2+2,ax[0]+x2+20,ay[2]+y2+12);
            Rectangle(ax[0]+x2+5,ay[2]+y2+17,ax[0]+x2+20,ay[2]+y2+27);
           end;
            if name='Tiger' then
           begin
            Rectangle(ax[3]+x2+5,ay[2]+y2+2,ax[3]+x2+20,ay[2]+y2+12);
            Rectangle(ax[3]+x2+5,ay[2]+y2+17,ax[3]+x2+20,ay[2]+y2+27);
           end;
       end;
    end;
 
var
  x1,y1,x2,y2,color,
  i,j
  : integer;
  tank1,tank2: Tank;
  key1: char;
 
 
  begin
  SetWindowCaption('Òàíêè');
 
  tank1:= Tank.Create('T34',50,50,$0000FF);
  tank2:= Tank.Create('Tiger',0,0,$000000);
  x1:=0;
  y1:=0;
  x2:=random(600);
  y2:=random(350);
  ClrScr;
   tank1.Draw(x1,y1);
   tank2.Draw(x2,y2);
  while true do
  begin
   SetPenColor($FFFFFF);
   SetPenWidth(0);
   key1:=readKey;
   if key1 = #27 then
      Exit;
   if key1 = #0 then
     begin
     key1:=readKey;
      case key1 of
        #77: begin x1:=x1-3;   ClrScr; tank1.Draw(x1,y1); tank2.Draw(x2,y2); end;
        #75: begin x1:=x1+3;   ClrScr; tank1.Draw(x1,y1); tank2.Draw(x2,y2); end;
        #72: begin y1:=y1-3;   ClrScr; tank1.Draw(x1,y1); tank2.Draw(x2,y2); end;
        #80: begin y1:=y1+3;   ClrScr; tank1.Draw(x1,y1); tank2.Draw(x2,y2); end;
      end;
     end;
  end;
end.
Кто может помогите разобраться в коде... Для начала мне не понятно на счет конструкторов
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 constructor Create;
       begin
        name:='tank';
        color:=$000000;
        ax[0]:=0;
        ay[0]:=0;
        ax[1]:=80;
        ay[1]:=40;
       end;
     constructor Create(nm: string);
       begin
        name:=nm;
        color:=$000000;
        ax[0]:=0;
        ay[0]:=0;
        ax[1]:=10;
        ay[1]:=10;
       end;
     constructor Create(nm: string; x1,y1,c1: integer);
       begin
        name:=nm;
        color:=c1;
        ax[0]:=x1+0;
        ay[0]:=y1+0;
        ax[1]:=x1+80;
        ay[1]:=y1+40;
        ax[2]:=x1+25;
        ay[2]:=y1+5;
        ax[3]:=x1+55;
        ay[3]:=y1+35;
       end;
в первом конструкторе имя танка задается ,а во втором уже присвоено какое то значение. то же самое касается цвета в 2 и 3 конструкторе. Да и вообще почему конструктор 3 раза объявляется?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.03.2014, 17:12
Ответы с готовыми решениями:

Игра в «Одиннадцать предметов», игра Баше.
прошу помощи в создании программы! Разработать программную модель следующей игры двух игроков(пользователь-компьютер),реализовав...

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

Игра Танки
Вот прорисовал два танка. заставил один двигаться. а как сделать так что бы он при столкновении с другим танком останавливался??? Танк...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.03.2014, 17:12
Помогаю со студенческими работами здесь

игра танки..
пишу игру танки. после нажатия на spase танк не едет...в чем проблема??

Игра танки тормозит при появлении 6 и более врагов
как то писал курсач -"танки". c# знал плохо, ооп вообще не понимал. сейчас стал кое что понимать решил повторить попытку. столкнулся с тем,...

Мини-игра Танки на Win Form. Зависание проекта
Доброго времени суток. Есть вот такая мини-игрушка (ТАНКИ...

Игра танки. Как привязать объекты к единой системе для взаимодействия?
Добрый день, решил я написать игру танки в консоли в учебных целях. Сделал класс танк, пуля, блоки различные наделал. Я не могу...

Пойдёт ли игра "Танки Онлайн" на Ubuntu?
пробовал запускать через wine, приложение запустилось как бы "в трее", т.е. запустил, ничего не вышло, заново запустил - пишет приложение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru