Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 3
Регистрация: 20.06.2011
Сообщений: 36

Исправить ошибку в игровой программе

19.11.2012, 18:14. Показов 884. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Нужно что бы по нажатию Enter игра переходила в меню, у меня переходит в меню но после нажатия "Новая игра" в игре оставлялись следы от метеоритов и от корабля, я сделал что бы они дестроились, но проблема в том что все работает хорошо когда корабль сталкивается со 2ым метеоритом. В противном случае выдается ошибка
"Ошибка: Неверный номер рисунка при выполнении DestroyPicture (abcobjects.pas, строка 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
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
uses crt,graphabc,abcobjects;
var a,b:array[1..10] of string;
    x,y,k,img,img2,img3,img4,img5,img6,img7,img8,img13,g,t,tima, ttt:integer;
    xx,yy:array[1..3] of integer;
    s:string;
    c:char;
Car,img9,img10,img11:pictureabc;
// ПРОЦЕДУРА МЕНЮ
procedure menu(x,y,n:integer;var k:integer);
var i:integer; c:char;
begin
setbrushstyle(bsClear);
Setfontsize(14);
repeat
   for i:=1 to n do
   begin
   if  i=k then setfontcolor(clgreen) else setfontcolor(claqua);
   textout(x+50,y+75*i, a[i]);
   end;
   c:=readkey;
   if c=#80 then k:=k+1; if k>n then  k:=1;
   if c=#72 then k:=k-1; if k<1 then  k:=n;
   until c=#13;
   setfontcolor(clBlack);
end;
//КОНЕЦ ПРОЦЕЛУРЫ МЕНЮ
 
//ПРОЦЕДУРА ИГРЫ
procedure game;
begin
fillwindow('doroga.jpg');
car:=pictureabc.create(360,330,'bollid.bmp');
x:=360;y:=330;   //img9:=loadpicture('12.png');
xx[1]:=300+random(100);
yy[1]:=random(400)-400;
xx[2]:=300+random(100);
yy[2]:=random(400)-400;
xx[3]:=300+random(100);
yy[3]:=random(400)-400;
 
t:=30;
repeat
img9:=pictureabc.create(xx[1],yy[1],'12.bmp');
 
if (xx[1]>x-80)and(xx[1]<x+80)and(yy[1]>y-70)and(yy[1]<y+100) then begin setbrushstyle(bsClear);  img13:=loadpicture('13.jpg');
drawpicture(img13,0,0); textout(350,200,'Game Over'); break; end;
//drawpicture(img9,,yy);
yy[1]:=yy[1]+5;
if yy[1]>600 then begin
                 yy[1]:=0;
                  xx[1]:=random(800);
               end;
               
               img10:=pictureabc.create(xx[2],yy[2],'12.bmp');
if (xx[2]>x-80)and(xx[2]<x+80)and(yy[2]>y-70)and(yy[2]<y+100) then begin setbrushstyle(bsClear);  img13:=loadpicture('13.jpg');
drawpicture(img13,0,0);  textout(350,200,'Game Over'); break; end;
//drawpicture(img9,,yy);
yy[2]:=yy[2]+2;
if yy[2]>600 then begin
                 yy[2]:=0;
                  xx[2]:=random(800);
               end;
 
               img11:=pictureabc.create(xx[3],yy[3],'12.bmp');
if (xx[3]>x-80)and(xx[3]<x+80)and(yy[3]>y-70)and(yy[3]<y+100) then begin setbrushstyle(bsClear); img13:=loadpicture('13.jpg');
drawpicture(img13,0,0); textout(350,200,'Game Over'); break; end;
//drawpicture(img9,,yy);
yy[3]:=yy[3]+3;
if yy[3]>600 then begin
                 yy[3]:=0;
                  xx[3]:=random(800);
               end;
 
 
  if keypressed then c:=readkey;
 // fillwindow('doroga.jpg');
 
if (c=#75) and (x<650) then begin car.moveon(50,0);x:=x+50; end else
if (c=#77) and (x>10) then begin car.moveon(-50,0);x:=x-50;end;
 
delay(t);  img9.destroy; img10.destroy; img11.destroy;
{car.moveon(1,0); car.moveon(-1,0);} c:='a';     tima:=tima+1; if tima >1000 then
begin
tima:=0;
t:=t-5;  if t<1 then t:=1;
end;
until c=#27;
end;
//КОНЕЦ ПРОЦЕДУРЫ ИГРА
 
 
//ПРОЦЕДУРА ПОДМЕНЮ ВЫХОД
procedure menu1(x,y,n:integer;var k:integer);
var i:integer;c:char;
begin
repeat
for i:=1 to n do
begin
if i=k then setfontcolor(claqua) else setfontcolor(clgreen);
textout(x+60*i,y,b[i]);
end;
c:=readkey;
if c=#75 then k:=k+1; if k>n then k:=1;
if c=#77 then k:=k-1; if k<1 then k:=n;
until c=#13;
setfontcolor(clblack);
end;
//КОНЕЦ ПРОЦЕДУРЫ ПОДМЕНЮ ВЫХОД
 
 
//ПРОЦЕДУРА ЗАСТАВКА
procedure titlist;
var n1:integer;
begin
setwindowsize(800,500);
img8:=loadpicture('4.jpg');
drawpicture(img8,0,0);
Setbrushstyle(BSclear);
setfontcolor(clwhite);
setfontstyle(fsBold);
Setfontsize(15);
textout(290,90,'Курсовая работа');
textout(280,140,'Проект:"Space war"');
setfontsize(10);
textout(500,280,'Выполнил: Никитин А.П.');
textout(500,300,'Проверил: Дирксен С.В.');
textout(500,320,'Группа: 3ПР-14');
setfontsize(12);
textout(170,475, 'Для продолжения используйте клавишу "Enter"');
end;
//КОНЕЦ ПРОЦЕДУРЫ ЗАСТАВКА
 
 
//НАЧАЛО ОСНОВНОЙ ПРОГРАММЫ
Begin
hidecursor;
titlist;
         c:='q';
         repeat
         setfontsize(12);
         setfontstyle(fsBold);
 
         c:=readkey;
         until c=#13;
         setfontsize(15);
img:=LoadPicture('Logo.jpg');
hidecursor;
k:=1;
setfontstyle(fsBold);
setwindowsize(800,500);
setfontname('Comic Sans MS');
a[1]:='Новая игра';
a[2]:=' Рекорды';
a[3]:='Как играть';
a[4]:=' О игре';
a[5]:=' Выход';
repeat
img:=LoadPicture('Logo.jpg');
drawpicture(img,0,0);
menu(300,50,5,k);
setfontcolor(claqua);
case k of
 
 
//ПУНКТ МЕНЮ НОВАЯ ИГРА
1:begin
fillwindow('doroga.jpg');
c:='q';
repeat
clearwindow;
 game;
c:=readkey;
until c=#13;
car.destroy;
img9.destroy; img10.destroy; img11.destroy;
end;
{//ПОДМЕНЮ ВЫХОД ИЗ ЗАПУЩИНОЙ ИГРЫ
setfontcolor(claqua);setfontsize(20);
textout(330,200,'Выйти из игры?');
g:=1;
b[1]:='Да';
b[2]:='Нет';
menu1(320,250,2,g);
case g of
1:game;
2:closewindow;
end;
end;
//КОНЕЦ ПОДМЕНЮ}
 
//ПУНКТ МЕНЮ РЕКОРДЫ
2:begin
c:='q';
repeat
clearwindow;
setfontsize(10);
textout(100,300, 'В разработке');
textout(200,430, 'Для выхода в главное меню используйте клавишу "Enter"');
c:=readkey;
until c=#13;
setfontsize(15);
end;
 
 
//ПУНКТ МЕНЮ ИГРА
3:begin
clearwindow;
c:='q';
repeat
clearwindow;
setfontsize(10);
setbrushstyle(bsClear);
img2:=LoadPicture('fon3.jpg');
drawpicture(img2,0,0);
textout(160,300, '    Для управления кораблем используйте клавиши управления');
textout(300,340, '            и          ');
textout(200,430, 'Для выхода в главное меню используйте клавишу');
c:=readkey;
until c=#13;
setfontsize(15);
end;
 
 
//ПУНКТ МЕНЮ О ИГРЕ
4:begin
c:='q';
repeat
clearwindow;
setfontsize(10);
//Фон
setbrushstyle(bsClear);
img2:=LoadPicture('fon4.jpg');
drawpicture(img2,0,0);
hidecursor;
textout(170,300, 'Игра "Space war". Смысл игры заключается в уворачивании ');
textout(170,315, '  от надвигающихся астероидов, тем самым набирая очки.');
textout(200,430, 'Для выхода в главное меню используйте клавишу');
c:=readkey;
until c=#13;
setfontsize(15);
end;
 
 
//ПУНКТ МЕНЮ ВЫХОД
5:begin
clearwindow;
setbrushstyle(bsClear);
img5:=LoadPicture('exit.jpg');
drawpicture(img5,0,0);
setfontcolor(claqua);setfontsize(20);
textout(330,200,'Хотите выйти?');
g:=1;
b[1]:='Да';
b[2]:='Нет';
menu1(310,250,2,g);
case g of
1:clearwindow;
2:closewindow;
end;
end;
end;
until keypressed;
end.
Картинки для программы можно взять из этой темы Игра "Space war": Необходимы исправления в программе
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.11.2012, 18:14
Ответы с готовыми решениями:

Исправить маленькую ошибку в программе на линейные списки
Программа, выводящая трех самых молодых мужчин питерцев из списка в 10 человек решена с помощью...

Рекурсия. Нужно исправить ошибку в программе.
Народ, нужна ваша помощь. Вот условие задачи: Найти знaчeние выpaжения, испoльзyя peкурсивный...

Сортировка выбором (исправить ошибку в программе)
просьба найти ошибку в программе и сказать что и где надо дополнить/исправить Задача: Дан...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.11.2012, 18:14
Помогаю со студенческими работами здесь

Помогите найти ошибку в программе и исправить ее
program laba5; uses wincrt; var t:string; w,max,i,n:byte; begin writeln('Vvodim stroku');...

Исправить ошибку в программе Леверье
вод код программы: unit Unit1; interface uses Windows, Messages, SysUtils, Variants,...

Исправить ошибку в программе
var a: array of integer; i, t :integer; begin for i:= 0 to 10 do a:=i; t:=a; for i := 10...

Исправить ошибку в программе
uses wincrt; var s, t:string; i:integer; d, f, d1:text; begin for i:=1 to 100 do ...

Исправить ошибку в программе.Функции
Здравствуйте! Программа должна удалять лишние запятые и восклицательные знаки (они лишние, если...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. На мобильном - сканируйте QR-код. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru