Глюк с игрой
20.04.2011, 03:51. Показов 805. Ответов 4
привет всем, честно говоря не смотрел есть ли похожие темы поэтому решил написать тут. Я написал одну игрушку, но в ней есть один глюк, который я никак не могу исправить. там есть процедуры КОРАБЛЬ и АТАКА, в первый раз все идет норм но во второй раз процедура КОРАБЛЬ не срабатывает почему то, может ошибка в цикле не пойму и надеюсь на вашу помощь и буду очень признателен. Внизу сам код игры.
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
| USES Graph,CRT;
VAR s_tor,s_pod_kor,x_kor,y_kor,x_tor,y_tor, Device,Mode :Integer;
imya,otvet,vibor :String;
klavisha,a :Char;
{operegayushie opisaniya procedur}
PROCEDURE MENU; forward;
PROCEDURE RISUNOK; forward;
PROCEDURE NACHALO; forward;
PROCEDURE ZAVERSHENIE_IGRI;
BEGIN
if s_pod_kor=0 then begin
GotoXY(36,5); WriteLn('MAZILA')
end;
if s_pod_kor>=8 then begin
GotoXY(36,5); WriteLn('Professional');
end;
if (s_pod_kor>=1) AND (s_pod_kor<=7) then begin
GotoXY(36,5); WriteLn('Serednyak');
end;
GotoXY(30,7);
WriteLn('Hotite sigrat eshe raz?');
GotoXY(38,9);
ReadLn(vibor);
if vibor='da' then NACHALO else Halt
END;
PROCEDURE SCHETCHIK;
BEGIN
s_tor:=s_tor+1;
if s_tor>1 then ZAVERSHENIE_IGRI else RISUNOK
END;
PROCEDURE NEPOPAL;
VAR hz :Integer;
BEGIN
hz:=100;
repeat
Sound(hz); Delay(3000);
hz:=hz+20;
until hz>400;
repeat
Sound(hz); Delay(3000);
hz:=hz-20;
until hz<10;
NoSound;
SCHETCHIK;
END;
PROCEDURE POPAL;
VAR hz :Integer;
BEGIN
{sdelat vzriv}
s_pod_kor:=s_pod_kor+1;
hz:=100;
repeat
Sound(hz); Delay(3000);
hz:=hz+20;
until hz>1000;
NoSound;
SCHETCHIK;
END;
PROCEDURE ATAKA;
BEGIN
y_tor:=420;
repeat
SetColor(White);
Ellipse(x_kor,y_kor,0,360,20,7);
Ellipse(x_tor,y_tor,0,360,3,15);
Delay(2000);
SetColor(Black);
Ellipse(x_kor,y_kor,0,360,20,7);
Ellipse(x_tor,y_tor,0,360,3,15);
x_kor:=x_kor+1; y_tor:=y_tor-1;
until y_tor<y_kor;
if (x_tor<=x_kor+20) AND (x_tor>=x_kor)
OR (x_tor>=x_kor-20) AND (x_tor<=x_kor) then POPAL else NEPOPAL;
END;
PROCEDURE KORABL;
BEGIN
x_kor:=40;
repeat
SetColor(White);
Ellipse(x_kor,y_kor,0,360,20,7);
Delay(2000);
SetColor(Black);
Ellipse(x_kor,y_kor,0,360,20,7);
x_kor:=x_kor+1;
if x_kor>620 then x_kor:=40;
if KeyPressed then klavisha:=ReadKey;
until klavisha=#32;
ATAKA;
END;
PROCEDURE RISUNOK;
VAR y_line,x_line :Integer;
BEGIN
ClearDevice;
SetColor(Cyan);
Line(0,35,640,35); Line(0,455,640,455);
SetColor(Magenta);
y_line:=458;
repeat
Line(0,y_line,640,y_line);
y_line:=y_line+3
until y_line>480;
x_line:=0;
repeat
Line(x_line,458,x_line,480);
x_line:=x_line+5
until x_line>640;
GotoXY(1,2);
WriteLn(imya,' ', 'TopIIeDo=',s_tor, ' ', 'y6uTue KopaBJIu=',s_pod_kor);
KORABL;
END;
PROCEDURE NACHALO;
BEGIN
ClearDevice;
s_tor:=0; s_pod_kor:=0;
Write('Vvedite vashe imya ');
ReadLn(imya);
RISUNOK;
END;
PROCEDURE Developer;
BEGIN
ClearDevice;
SetTextStyle(0,0,1);
OutTextXY(10,20,'Developer Ahbulatov Alidibir');
OutTextXY(90,40,'student of group P-23');
SetTextStyle(3,0,1);
OutTextXY(250,400,'Copyright @ Ahbulatov Alidibir. 2011 year');
ReadKey;
if ReadKey=#13 then MENU;
END;
PROCEDURE Help;
BEGIN
ClearDevice;
SetTextStyle(1,0,4);
OutTextXY(160,20,'TORPEDNAYA ATAKA');
SetTextStyle(2,0,8);
OutTextXY(220,60,'POMOSH B UGPE');
SetTextStyle(0,0,1);
OutTextXY(1,120,'CmucJl ugpu zakluchaetca B Tom shTo6u cTpeJlaT TopIIeDamu B JleTaushue kopa6Jlu');
OutTextXY(1,140,'Ugpa 3akaN4uBaeTca kogDa noD6utux kopa6Jlei cTaNoBuTca 10.');
OutTextXY(1,160,'U pocJle eTogo kompytep aNaJlu3upyeT Bashu ycpexu.');
ReadKey;
if ReadKey=#13 then MENU;
END;
PROCEDURE MENU;
BEGIN
ClearDevice;
SetTextStyle(4,0,4);
OutTextXY(250,50, '1. Play');
OutTextXY(250,90,'2. Help');
OutTextXY(250,130,'3. Developer');
OutTextXY(250,170,'4. Exit');
a:=ReadKey;
END;
BEGIN
Device:=0;
InitGraph(Device,Mode, 'C:/PROGRA~1/BP/BGI');
DirectVideo:=false;
x_kor:=40; y_kor:=80;
x_tor:=450; y_tor:=420;
MENU;
CASE a OF
'1': NACHALO;
'2': Help;
'3': Developer;
'4': Halt;
END;
CloseGraph
END. |
|
Добавлено через 21 минуту
извиняюсь первый код неправильный там с меню экспериментировал и все такое. Вот нормальный код этой игры без лишнего.
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
| USES Graph,CRT;
VAR s_tor,s_pod_kor,x_kor,y_kor,x_tor,y_tor, Device,Mode :Integer;
imya,otvet,vibor :String;
klavisha :Char;
{operegayushie opisaniya procedur}
PROCEDURE RISUNOK; forward;
PROCEDURE NACHALO; forward;
PROCEDURE ZAVERSHENIE_IGRI;
BEGIN
if s_pod_kor=0 then begin
GotoXY(36,5); WriteLn('MAZILA')
end;
if s_pod_kor>=8 then begin
GotoXY(36,5); WriteLn('Professional');
end;
if (s_pod_kor>=1) AND (s_pod_kor<=7) then begin
GotoXY(36,5); WriteLn('Serednyak');
end;
GotoXY(30,7);
WriteLn('Hotite sigrat eshe raz?');
GotoXY(38,9);
ReadLn(vibor);
if vibor='da' then NACHALO else Halt
END;
PROCEDURE SCHETCHIK;
BEGIN
s_tor:=s_tor+1;
if s_tor>10 then ZAVERSHENIE_IGRI else RISUNOK
END;
PROCEDURE NEPOPAL;
VAR hz :Integer;
BEGIN
hz:=100;
repeat
Sound(hz); Delay(3000);
hz:=hz+20;
until hz>400;
repeat
Sound(hz); Delay(3000);
hz:=hz-20;
until hz<10;
NoSound;
SCHETCHIK;
END;
PROCEDURE POPAL;
VAR hz :Integer;
BEGIN
{sdelat vzriv}
s_pod_kor:=s_pod_kor+1;
hz:=100;
repeat
Sound(hz); Delay(3000);
hz:=hz+20;
until hz>1000;
NoSound;
SCHETCHIK;
END;
PROCEDURE ATAKA;
BEGIN
y_tor:=420;
repeat
SetColor(White);
Ellipse(x_kor,y_kor,0,360,20,7);
Ellipse(x_tor,y_tor,0,360,3,15);
Delay(2000);
SetColor(Black);
Ellipse(x_kor,y_kor,0,360,20,7);
Ellipse(x_tor,y_tor,0,360,3,15);
x_kor:=x_kor+1; y_tor:=y_tor-1;
until y_tor<y_kor;
if (x_tor<=x_kor+20) AND (x_tor>=x_kor)
OR (x_tor>=x_kor-20) AND (x_tor<=x_kor) then POPAL else NEPOPAL;
END;
PROCEDURE KORABL;
BEGIN
x_kor:=40;
repeat
SetColor(White);
Ellipse(x_kor,y_kor,0,360,20,7);
Delay(2000);
SetColor(Black);
Ellipse(x_kor,y_kor,0,360,20,7);
x_kor:=x_kor+1;
if x_kor>620 then x_kor:=40;
if KeyPressed then klavisha:=ReadKey;
until klavisha=#32;
ATAKA;
END;
PROCEDURE RISUNOK;
VAR y_line,x_line :Integer;
BEGIN
ClearDevice;
SetColor(Cyan);
Line(0,35,640,35); Line(0,455,640,455);
SetColor(Magenta);
y_line:=458;
repeat
Line(0,y_line,640,y_line);
y_line:=y_line+3
until y_line>480;
x_line:=0;
repeat
Line(x_line,458,x_line,480);
x_line:=x_line+5
until x_line>640;
GotoXY(1,2);
WriteLn(imya,' ', 'TopIIeDo=',s_tor, ' ', 'y6uTue KopaBJIu=',s_pod_kor);
KORABL;
END;
PROCEDURE NACHALO;
BEGIN
s_tor:=0; s_pod_kor:=0;
Write('Vvedite vashe imya ');
ReadLn(imya);
RISUNOK;
END;
BEGIN
Device:=0;
InitGraph(Device,Mode, 'C:/PROGRA~1/TURBOP~1.1/BGI');
DirectVideo:=false;
x_kor:=40; y_kor:=80;
x_tor:=450; y_tor:=420;
NACHALO;
ReadLn;
CloseGraph
END. |
|
0
|