Разработка простейшей аркадной игры "Солдат"
Дата написания: 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 включает в себя множество дополнительных модулей, позволяющих работать с различными базами данных, контролировать аутентификацию пользователей и т.д. |
Интересные материалы на сайте:
|
![]() |