Jednoduchá simulácia hry HAD
Delphi & Pascal (česká wiki)
Kategória: KMP (Klub mladých programátorov)
Autor: Matej Ridzoň
Program: Hadr.pas, Pohyb.pas
Súbor exe: Hadr.exe
Potrebné: Had.zip
Vývoják: Had_prezentacia.pdf
Autor: Matej Ridzoň
Program: Hadr.pas, Pohyb.pas
Súbor exe: Hadr.exe
Potrebné: Had.zip
Vývoják: Had_prezentacia.pdf
Jednoduchá simulácia hry HAD. Ovládanie je šípkami. Program má v sebe zabudovanú jednoduchú AI (pôvodne to bol test funkčnosti nejakých aspektov hry), ktorá nebola úplne dokončená. Progam bol kompilovaný cez fpc 2.2 mód object pascal. Program mal vukázať možnosť vytvorenia komplexnejšieho programu za použitia minimálnych knižníc (wincrt a graph). Dúfam, že sa vám bude páčiť a inšpiruje vás.
Celý program bol vytvorený v prostredí lazarus, ale bez použitie OOP, teda len nejaké procedúrky a unit pre AI.
Potrebné súbory pre kompiláciu:
Celý program bol vytvorený v prostredí lazarus, ale bez použitie OOP, teda len nejaké procedúrky a unit pre AI.
Potrebné súbory pre kompiláciu:
- Had.lpr (hlavný program)
- Had.lpi (tento je potrebný len pre otvorenie ako projekt pre lazarus)
- Had.rc Had.ico (resource pre ikonku)
- pohyb.pas (unit pre AI)
- Skompilovaný program - Had.exe
- README.txt (anglický stručný popis pre sourceforge.net)
unit pohyb; {$mode objfpc}{$H+} interface const P=1; L=2; H=3; D=4; type TAIpole=array[1..50,1..100] of longint; procedure AIvypln(y,x:longint;var AIpole:TAIpole;typ:longint); //typ - pre vyssie urovne AI function AIzisti(y,x:longint;AIpole:TAIpole):longint; implementation procedure AIvypln(y,x:longint;var AIpole:TAIpole;typ:longint); var Ri,Rj:longint; begin if (x mod 2)=0 then for Ri:=1 to x do begin if Ri=1 then begin for Rj:=1 to y do begin if Rj=y then AIpole[Ri,Rj]:=D else AIpole[Ri,Rj]:=P; end; end else if Ri=2 then begin for Rj:=1 to y do begin if Rj=1 then AIpole[Ri,Rj]:=H else if Rj=y then AIpole[Ri,Rj]:=D else if (Rj mod 2)=0 then AIpole[Ri,Rj]:=D else AIpole[Ri,Rj]:=L; end; end else if Ri=x then begin for Rj:=1 to y do begin if (Rj mod 2)=0 then AIpole[Ri,Rj]:=L else AIpole[Ri,Rj]:=H; end; end else begin for Rj:=1 to y do begin if (Rj mod 2)=0 then AIpole[Ri,Rj]:=D else AIpole[Ri,Rj]:=H; end; end; end else begin for Ri:=1 to x do for Rj:=1 to y do AIpole[Ri,Rj]:=P; end; end; function AIzisti(y,x:longint;AIpole:TAIpole):longint; begin if AIpole[x,y]=H then AIzisti:=72 else if AIpole[x,y]=L then AIzisti:=75 else if AIpole[x,y]=P then AIzisti:=77 else if AIpole[x,y]=D then AIzisti:=80; end; end.