Разработка простейшей аркадной игры "Солдат"
Дата написания: 11.12.2016
Статья предназначена для начинающих программистов. Задача: написать игру, - упрощенный вариант "змейки". Сразу извиняюсь за простоту алгоритмов - это была моя первая серьёзная программа.
Для описания программного кода будет использоваться Borland Pascal 7.0
Program Solder_Version_1; { Make 21.11.1998 }
Uses { All rights reserved }
Crt,Dos;
Var
key : char;
stop : Boolean;
skor,startskor : byte;
r,c,rm,cm,p,o,i : integer;
dead,win,level,soldat,x,y : integer;
s,t : array [1..255] of byte;
b,d : boolean;
hsc,sc : integer;
{---------------------------------------------------------------------}
procedure help;
begin
clrscr;
readkey
end;
{---------------------------------------------------------------------}
procedure cursoroff;
begin
asm
mov ah,1
mov cx,$0100
int $10
end
end;
{---------------------------------------------------------------------}
procedure nastr;
var
stop : boolean;
x,y : byte;
begin
clrscr;
window(1,1,40,8);
textbackground(5);
clrscr;
textcolor(14);
stop:=false;
gotoxy(3,3);
writeln(' ',#26,' Ускорить ',#27,' Затормозить');
writeln(' ENTER-выход в главное меню');
textcolor(10);
x:=3;
y:=6;
while not stop do
begin
while not keypressed do
begin
gotoxy(x-1,y);
write(' ',#2);
delay(startskor);
x:=x+1;
if x = 37
then
begin
gotoxy(x-2,y);
write(' ');
x:=3
end
end;
key:=readkey;
if key = #13
then stop:=true;
if key = #0
then
begin
key:=readkey;
case key of
#75 : begin
startskor:=startskor+10;
if startskor = 250
then
startskor:=240
end;
#77 : begin
startskor:=startskor-10;
if startskor = 10
then
startskor:=20
end
end
end
end;
window(1,1,40,25);
textbackground(0);
clrscr
end;
{---------------------------------------------------------------------}
procedure klavisha;
begin
if keypressed
then
begin
key:=readkey;
if key = #27
then
begin
dead := 1;
soldat := 1;
end;
if key = #0
then
begin
key:=readkey;
case key of
#75:
begin
rm:=-1;
cm:=0
end;
#77:
begin
rm:=1;
cm:=0
end;
#72:
begin
rm:=0;
cm:=-1
end;
#80:
begin
rm:=0;
cm:=1
end
end
end
end
end;
{---------------------------------------------------------------------}
procedure bomb;
begin
textcolor(blue);
for i:=1 to 255 do
begin
s[i]:=0;
t[i]:=0
end;
for i:=1 to 6+level do
begin
s[i]:=r;
t[i]:=c;
while ((s[i]=r) and (t[i]=c)) or ((s[i]=p) and
(t[i]=o)) or (t[i]=12)do
begin
s[i]:=random(30)+2;
t[i]:=random(18)+4;
end;
gotoxy(s[i],t[i]);
write('+')
end
end;
{---------------------------------------------------------------------}
procedure status;
begin
clrscr;
textcolor(1);
for i:=0 to 1 do
begin
gotoxy(1,2+22*i);
write('+++++++++++++++++++++++++++++++++++++++')
end;
for i:=2 to 24 do
begin
gotoxy(1,i);
write('+');
gotoxy(40,i);
write('+')
end;
if sc>hsc
then
hsc:=sc;
textcolor(10);
gotoxy(1,1);
write('Ваши очки :',sc:3,' Лучший показатель :',hsc:3);
textcolor(11);
gotoxy(1,25);
write('Уровень игры :',level:2,' Количество жизней :',soldat);
end;
{---------------------------------------------------------------------}
procedure gobble;
begin
inc(sc);
skor:=skor-5;
if skor = 10
then
skor:=20;
win:=1
end;
{---------------------------------------------------------------------}
procedure solder;
begin
gotoxy(r,c);
write(' ');
r:=r+rm;
c:=c+cm;
if (r < 2) or (c < 3) or (r > 39) or (c > 23)
then
dead:=1;
for i:=1 to 6*level do
begin
if (r = s[i]) and (c = t[i])
then
begin
dead:=1;
break
end;
end;
if (r = p) and (c = o)
then
gobble;
gotoxy(r,c);
textcolor(red);
write(#2)
end;
{---------------------------------------------------------------------}
procedure target;
begin
p:=r;
o:=c;
while (p=r) and (o=c) do
begin
p:=random(30)+5;
o:=random(20)+4;
end;
gotoxy(p,o);
textcolor(green);
write('$')
end;
{---------------------------------------------------------------------}
procedure game;
begin
skor:=startskor;
d:=true;
b:=true;
while b do
begin
if d
then
begin
sc:=0;
soldat:=3;
level:=1;
d:=false
end;
dead:=0;
win:=0;
c:=12;
r:=10;
cm:=0;
rm:=1;
randomize;
status;
target;
bomb;
while (dead=0) and (win=0) do
begin
klavisha;
solder;
delay(skor*30);
end;
if win = 1
then
inc(level);
if dead = 1
then
begin
dec(soldat);
if soldat = 0
then
b:=false;
textcolor(red);
gotoxy(13,12);
write('Солдат взорвался');
delay(1500)
end;
if key = #0
then
key:=readkey
end;
clrscr
end;
{---------------------------------------------------------------------}
BEGIN
textmode(1);
cursoroff;
stop:=false;
startskor:=50;
while not stop do
begin
textcolor(11);
gotoxy(7,2);
writeln('Программа студента гр. ПА-97');
gotoxy(13,4);
writeln('Шарова Евгения');
gotoxy(10,23);
writeln('All rights reserved.');
textcolor(14);
gotoxy(13,6);
writeln('Бегущий человек');
textcolor(15);
gotoxy(10,11);
write('Игра.................1');
gotoxy(10,12);
write('О программе..........2');
gotoxy(10,13);
write('Настройка............3');
gotoxy(10,14);
write('Выход в ДОС..........4');
key:=readkey;
case key of
'1' : game;
'2' : help;
'3' : nastr;
'4' : stop:= not stop;
else
begin
Sound(160);
Delay(17);
NoSound
end
end
end;
textmode(3)
END.
Apache — это кросплатформаенное программное обеспечение, относящееся к классу http-серверов. Поддерживается множеством операционных систем: Windows, Linux, MacOS и т.д. Одним из ключевых факторов в вопросе использования данного web-сервера является гибкость настройки и надежность выполнения операций. Apache включает в себя множество дополнительных модулей, позволяющих работать с различными базами данных, контролировать аутентификацию пользователей и т.д. |
Интересные материалы на сайте:
|
|
|