Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 27.01.2017
Сообщений: 52
1

Возникли неполадки при создании игры на PascalAbc.net

27.01.2017, 15:50. Показов 483. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Короче, я не давно начал заниматься программированием. Вот решил попробывать создать простую игру, типо такая "стрелялка". Создаю движение. Для этого мне нужно складывать перееменную Am(некий щётчик) на один раз. Сделал это так:
Am:= Am + 1;. Поидеи всё должно быть правильно, но она не складывается!!! Я создал простой пример, и там всё работает(пример даже без всяких модулей). Помогите плиз, а? вот код:



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
uses GraphABC, ABCobjects, Timers;
var
OPlayer: RectangleABC;
OBot, Ammo1, Ammo2, Ammo3, Ammo4: array [1..9999] of RectangleABC;
direction, click, Am: integer; 
procedure MouseMove(x, y, mb: integer);
begin
Oplayer.Top:= y - 16;
Oplayer.Left:= x - 16;
end;
procedure Player();
begin
Oplayer:= RectangleABC.Create(300, 650, 32, 32, GraphABC.clCyan);
end;
procedure MoveAmmo();
begin
for var i:= 1 to Am do
begin
Ammo1[i].top:= Ammo1[i].top - 2;
Ammo2[i].left:= Ammo2[i].left + 2;
Ammo3[i].top:= Ammo3[i].top + 2;
Ammo4[i].left:= Ammo4[i].left - 2;
end;
end;
procedure KeyDown(key:integer);
var b, i:integer;
begin
case key of
VK_W: direction:= 1;
VK_D: direction:= 2;
VK_S: direction:= 3;
VK_A: direction:= 4;
end;
end;
procedure Bot();
begin
end;
procedure Ammo;
var
i: integer;
begin
while true do
begin
Am:= 1;
if direction = 1 then
begin
Ammo1[Am]:= RectangleABC.Create(Oplayer.left + 10, Oplayer.top - 10, 10, 10);
Am:= Am + 1;
end;
if direction = 2 then
begin
Ammo2[Am]:= RectangleABC.Create(Oplayer.left + 31, Oplayer.top + 10, 10, 10);
Am:= Am + 1;
end;
if direction = 3 then
begin
Ammo3[Am]:= RectangleABC.Create(Oplayer.left + 12, Oplayer.top + 31, 10, 10);
Am:= Am + 1;
end;
if direction = 4 then
begin
begin
Ammo4[Am]:= RectangleABC.Create(Oplayer.left - 10, Oplayer.top + 10, 10, 10);
Am:= Am + 1;
end;
end;
sleep(100);
end;
end;
procedure interf();
begin
end;
procedure Update();
begin
MoveAmmo();
end;
procedure KeyUp(key:integer);
begin
direction:= 0;
end;
procedure windowGame(nameGame : string ; w , h : integer);
begin
window.Caption:=nameGame;
window.SetSize(w , h);
window.IsFixedSize:=true;
window.Clear();
end;
begin
var timeGame := new timer(1 , Update);
timeGame.start();
windowGame('Game' , 600 , 700);
Player();
OnKeyDown := KeyDown;
OnKeyUp:= KeyUp;
OnMouseMove:= MouseMove;
Ammo();
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.01.2017, 15:50
Ответы с готовыми решениями:

Ошибка при создании меню в PascalABC.net для игры
ПОМОГИТЕ СРОЧНО!Я хочу заключить процедуры в одну процедуру для меню, для того чтобы запускать...

При переводе с PascalABC на Turbo Pascal возникли ошибки (работа с файлами)
файл - text.txt: the word is mine of foo oof the end the word is second of foo oof the end the...

Персонаж для игры на PascalABC.NET
Здравствуйте. Я программирую игру на PascalABC.NET и я столкнулся с такой проблемой. Смысл игры в...

После замены видеокарты и БП возникли неполадки
Поставил в ПК видеокарту Sapphire AMD Radeon HD7850 2048MB OC и БП Chieftec APS-600C. Опробовал,...

2
5079 / 2651 / 2349
Регистрация: 10.12.2014
Сообщений: 10,028
30.01.2017, 07:07 2
Дык, оно же у тебя в цикле:
— сначала делается =1
— потом +1
— и снова =1
— и снова +1
и т.д.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure Ammo;
begin
  Am := 0;
  while true do
    begin
      Am += 1;
      case direction of
        1 : Ammo1[Am] := RectangleABC.Create(Oplayer.left + 10, Oplayer.top - 10, 10, 10);
        2 : Ammo2[Am] := RectangleABC.Create(Oplayer.left + 31, Oplayer.top + 10, 10, 10);
        3 : Ammo3[Am] := RectangleABC.Create(Oplayer.left + 12, Oplayer.top + 31, 10, 10);
        4 : Ammo4[Am] := RectangleABC.Create(Oplayer.left - 10, Oplayer.top + 10, 10, 10);
      end;
      sleep(100);
   end;
end;
0
0 / 0 / 0
Регистрация: 27.01.2017
Сообщений: 52
05.02.2017, 21:00  [ТС] 3
Да, спасибо, я через 30 мин после заливки темы понял =).
0
05.02.2017, 21:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.02.2017, 21:00
Помогаю со студенческими работами здесь

Ошибка в Visual Studio.NET при создании ASP.NET приложения
Пробую создать в Visual Studio.NET 2003 новый проект ASP.NET Web Application и не получается. ...

Исходный код игры "Сапер" на PascalABC.Net
Доброго времени суток. Скиньте кто-небудь пожалуйста исходный код игры "Сапер" (упрощенный вариант).

График температур. Подправить код из turbo (не знаю где писать в PascalABC или PascalABC.net)
На Pascal ABC не запускается(( uses crt,graph; const n=31; {массив - константа, можно...

Где можно скачать PascalABC а не PascalABC.Net
Где можно скачать PascalABC а не PascalABC.Net?


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru