rafael
Administrator
Dołączył: 07 Lut 2006
Posty: 72
Przeczytał: 0 tematów
Ostrzeżeń: 0/3 Skąd: Pszczyna
|
Temat postu: War [wersja testowa] |
|
|
TESTOWA GRA WAR. PROSZĘ WAS O PODAWANIE BŁĘDÓW, KTÓRE ZNAJDZIECIE W GRZE, LUB SWOJE POMYSŁY JAK JĄ UROZMAICIĆ. Z GÓRY DZIĘKUJE!
NIE DZIAŁAJĄCE FUNKCJE:
-wczytaj grę
-niedostępna postać zakapturzonego człowieka w karczmie
-brak ograniczenia ruchu (można chodzić np. po lesie lub wychodzić poza mape)
-niedostępna pomoc
Kod: | program war;
{$APPTYPE CONSOLE}
uses
crt;
type
Tgracz=record
imie: string;
wojsko: integer;
doswiadczenie: integer;
wytrzymalosc: integer;
obwarowanie: boolean;
zloto: integer;
end;
procedure losuj_wydarzenie(var czlowiek: Tgracz; var komputer: Tgracz; tura: integer);forward;
procedure start(var czlowiek: Tgracz);
begin
czlowiek.wojsko := 300;
czlowiek.doswiadczenie := 10;
czlowiek.wytrzymalosc := 100;
end;
function losuj_imie: string;
var
imie: array[1..20] of string;
x: byte;
begin
imie[1] := 'Valhari';
imie[2] := 'Rafael';
imie[3] := 'EL Polaco';
imie[4] := 'Tommus';
imie[5] := 'Meshif';
imie[6] := 'Quaran';
imie[7] := 'Felix';
imie[8] := 'Hannibal';
imie[9] := 'Spartakus';
imie[10] := 'Pompejusz';
imie[11] := 'Xay';
imie[12] := 'Tuxer';
imie[13] := 'Alibaba';
imie[14] := 'Elzix';
imie[15] := 'Szymonson';
imie[16] := 'Bolbin';
imie[17] := 'Helmut';
imie[18] := 'Weron';
imie[19] := 'Zygzan';
imie[20] := 'Traton';
randomize;
x := random(20)+1;
losuj_imie := imie[x];
end;
procedure losuj_przeciwnika(var czlowiek: Tgracz; var komputer: Tgracz);
var
y: byte;
begin
randomize;
komputer.wojsko := random(czlowiek.wojsko)+200;
komputer.doswiadczenie := random(czlowiek.doswiadczenie)+random(czlowiek.doswiadczenie)+1;
komputer.wytrzymalosc := random(50)+51;
komputer.imie := losuj_imie;
y := random(2)+1;
if y = 1 then komputer.obwarowanie := true;
if y = 2 then komputer.obwarowanie := false;
end;
procedure przegrana;
begin
window(1,1,80,80);
textbackground(black);
clrscr;
gotoxy(30,10);
textcolor(white);
writeln('G A M E O V E R');
gotoxy(28,12);
writeln('www.turbopascal.cba.pl');
delay(5000);
halt;
end;
procedure bitwa(var czlowiek: Tgracz; var komputer: Tgracz);
var
sila: array[1..2] of real;
x: integer;
odpowiedz: char;
zdobyte_dos: real;
begin
randomize;
writeln('WALKA!!!');
losuj_przeciwnika(czlowiek,komputer);
writeln('Imie: ',komputer.imie);
x:=random(50);
writeln('Wojsko ok. ',komputer.wojsko-x);
write('Obwarowanie: ');
if komputer.obwarowanie = true then writeln('jest')
else
writeln('nie ma');
x := random(10);
if komputer.doswiadczenie < x then x := 0;
writeln('Przypuszczalne doswiadczenie: ',komputer.doswiadczenie-x);
writeln;
write('Walczysz? (T)ak / (N)ie: ');
repeat
odpowiedz:=readkey;
until odpowiedz in ['T','t','N','n'];
if odpowiedz in ['N','n'] then
begin
clrscr;
x:=random(czlowiek.wojsko);
writeln('Podczas ucieczki straciles ',x,' zolnierzy');
czlowiek.wojsko := czlowiek.wojsko - x;
if czlowiek.wojsko <= 0 then przegrana;
end;
if odpowiedz in ['T','t'] then
begin
if czlowiek.obwarowanie = true then czlowiek.doswiadczenie := czlowiek.doswiadczenie + 10;
sila[1] := czlowiek.doswiadczenie * czlowiek.wytrzymalosc/100;
if komputer.obwarowanie = true then komputer.doswiadczenie := komputer.doswiadczenie + 10;
sila[2] := komputer.doswiadczenie * komputer.wytrzymalosc/100;
repeat
clrscr;
writeln('B I T W A ! ! !');
komputer.wojsko := komputer.wojsko - round(sila[1]);
if komputer.wojsko < 0 then komputer.wojsko := 0;
czlowiek.wojsko := czlowiek.wojsko - round(sila[2]);
if czlowiek.wojsko < 0 then czlowiek.wojsko := 0;
writeln('Twoja armia: ',czlowiek.wojsko);
writeln('Armia ',komputer.imie,': ',komputer.wojsko);
delay(300);
until (komputer.wojsko <= 0) or (czlowiek.wojsko <= 0);
delay(1000);
if czlowiek.wojsko <= 0 then przegrana;
if komputer.wojsko <= 0 then
begin
clrscr;
x:=random(5)+1;
writeln('Zdobyles ',x,' skrzynie zlota');
czlowiek.zloto := czlowiek.zloto + x;
zdobyte_dos := komputer.doswiadczenie / 5;
writeln('Zdobyles ',round(zdobyte_dos),' punkty doswiadczenia');
czlowiek.doswiadczenie := czlowiek.doswiadczenie + round(zdobyte_dos);
end;
end;
end;
procedure najemnicy(var czlowiek: Tgracz);
var
ilu, koszt: integer;
znak: char;
begin
koszt:=0;
ilu:=0;
repeat
clrscr;
writeln('Witaj w gildi najemnikow! ESC-wyjscie;');
writeln;
writeln('Ilu najemnikow ma dolaczyc do Twojej armii?');
writeln(' <- ',ilu,' ->');
writeln(' Koszt: ',koszt,' - skrzynie zlota');
znak := readkey;
if znak=#75 then
if ilu >= 100 then
begin
ilu := ilu-100;
koszt := koszt-2;
end;
if znak=#77 then
begin
ilu := ilu+100;
koszt := koszt+2;
end;
if znak=#13 then
begin
if (czlowiek.zloto < koszt) or (czlowiek.zloto = 0) then
writeln('Niestety nie masz wystarczajacych funduszy.');
if (czlowiek.zloto >= koszt) and (czlowiek.zloto <> 0) then
begin
czlowiek.zloto := czlowiek.zloto - koszt;
czlowiek.wojsko := czlowiek.wojsko + ilu;
writeln('Do twojej armi dolaczylo ',ilu,' najemnikow.');
end;
delay(3000);
end;
until znak=#27;
end;
procedure karczma(var czlowiek: Tgracz);
var
ile, koszt: integer;
znak: char;
x: byte;
begin
koszt:=0;
ile:=0;
x:=1;
repeat
clrscr;
textcolor(white);
writeln('Dzien dobry! Znajdujesz sie w karczmie ESC-wyjscie;');
if znak=#72 then x := x-1;
if znak=#80 then x := x+1;
if x=0 then x := 3;
if x=4 then x := 1;
if x=1 then
textcolor(yellow)
else
textcolor(white);
gotoxy(1,3);
writeln('Porozmawiaj z zakapturzonym czlowiekiem');
if x=2 then
textcolor(yellow)
else
textcolor(white);
gotoxy(9,4);
writeln('Kup zolnierzom piwo');
if x=3 then
textcolor(yellow)
else
textcolor(white);
gotoxy(15,5);
writeln('Wjscie');
znak:=readkey;
if znak=#13 then
if x=4 then break;
if x=2 then
begin
repeat
clrscr;
writeln('Beczki (1 beczka = + 20 wytrzymalosci:');
writeln(' <- ',ile,' ->');
writeln(' Koszt: ',koszt,' - skrzynie zlota');
znak := readkey;
if znak=#75 then
if ile >= 1 then
begin
ile := ile-1;
koszt := koszt-1;
end;
if znak=#77 then
begin
ile := ile+1;
koszt := koszt+1;
end;
if znak=#13 then
begin
if (czlowiek.zloto >= koszt) and (czlowiek.zloto <> 0) then
begin
czlowiek.zloto := czlowiek.zloto - koszt;
ile := ile * 20;
czlowiek.wytrzymalosc := czlowiek.wytrzymalosc + ile;
if czlowiek.wytrzymalosc > 100 then czlowiek.wytrzymalosc := 100;
writeln('Pomyslnie zakonczyles transakcje! Twoja obecna wytrzymalosc: ',czlowiek.wytrzymalosc);
delay(3000);
break;
end;
if (czlowiek.zloto < koszt) or (czlowiek.zloto = 0) then
writeln('Niestety nie masz wystarczajacych funduszy.');
delay(3000);
end;
until znak=#27;
end;
if x=1 then
begin
{czlowiek dajacy questy}
end;
until znak=#27;
end;
procedure uniwersytet(var czlowiek: Tgracz);
var
ile, koszt: integer;
znak: char;
begin
koszt:=0;
ile:=0;
repeat
clrscr;
writeln('Wchodzac tu masz nadziejie, ze zdolasz sie czegos nauczyc; ESC-wyjscie;');
writeln;
writeln('O ile chcesz podniesc swoje doswiadczenie?');
writeln(' <- ',ile,' ->');
writeln(' Koszt: ',koszt,' skrzynie zlota');
znak := readkey;
if znak=#75 then
if ile >= 1 then
begin
ile := ile-1;
koszt := koszt-2;
end;
if znak=#77 then
begin
ile := ile+1;
koszt := koszt+2;
end;
if znak=#13 then
begin
if (czlowiek.zloto < koszt) or (czlowiek.zloto = 0) then
writeln('Niestety nie masz wystarczajacych funduszy.');
if (czlowiek.zloto >= koszt) and (czlowiek.zloto <> 0) then
begin
czlowiek.zloto := czlowiek.zloto - koszt;
czlowiek.doswiadczenie := czlowiek.doswiadczenie + ile;
writeln('Twoje doswiadczenie wzroslo o ',ile,' punktow.');
end;
delay(3000);
end;
until znak=#27;
end;
procedure miasto (var czlowiek: Tgracz);
var
znak: char;
x: byte;
begin
window(1,1,55,55);
textbackground(black);
clrscr;
x:=1;
repeat
clrscr;
if znak=#72 then x := x-1;
if znak=#80 then x := x+1;
if x=0 then x := 4;
if x=5 then x := 1;
textcolor(white);
gotoxy(11,1);
writeln('MIASTO');
if x=1 then
textcolor(yellow)
else
textcolor(white);
gotoxy(7,3);
writeln('Gildia najemnikow');
if x=2 then
textcolor(yellow)
else
textcolor(white);
gotoxy(11,4);
writeln('Karczma');
if x=3 then
textcolor(yellow)
else
textcolor(white);
gotoxy(9,5);
writeln('Uniwersytet');
if x=4 then
textcolor(yellow)
else
textcolor(white);
gotoxy(11,6);
writeln('Wyjscie');
znak := readkey;
if znak=#13 then
begin
if x=1 then najemnicy(czlowiek);
if x=2 then karczma(czlowiek);
if x=3 then uniwersytet(czlowiek);
if x=4 then break;
end;
until znak=#27;
end;
procedure losuj_wydarzenie(var czlowiek: Tgracz; var komputer: Tgracz; tura:integer);
var
wydarzenie: byte;
liczba: integer;
y: real;
znak: char;
begin
window(1,1,55,55);
textbackground(black);
clrscr;
czlowiek.obwarowanie := false;
writeln('Chcesz wybudowac umocnienia wokol twojego obozu?');
writeln('Koszty: 5 pkt wytrzymalosci; 1 skrzynia zlota;');
writeln('(T)ak / (N)ie: ');
repeat
znak := readkey;
until znak in['T','t','N','n'];
if znak in ['T','t'] then
begin
if (czlowiek.wytrzymalosc < 5) or (czlowiek.zloto < 1) then
writeln('Masz za malo zlota lub punktow wytrzymalosci!');
if (czlowiek.wytrzymalosc >= 5) and (czlowiek.zloto >= 1) then
begin
czlowiek.wytrzymalosc := czlowiek.wytrzymalosc - 5;
czlowiek.zloto := czlowiek.zloto - 1;
czlowiek.obwarowanie := true;
writeln('Wybudowales umocnienia!');
end;
end;
if znak in ['N','n'] then writeln('Twoj oboz pozostal bez umocnien');
delay(2000);
clrscr;
writeln('DZIEN: ',tura);
randomize;
wydarzenie := random(5)+1;
if wydarzenie = 1 then
begin
y := random(czlowiek.wojsko)/2;
liczba := round(y);
writeln('Do twojej armii dolacza ',liczba,' zolnierzy');
czlowiek.wojsko := czlowiek.wojsko + liczba;
writeln('Obecnie posiadasz: ',czlowiek.wojsko, ' zolnierzy');
end;
if wydarzenie = 2 then
begin
liczba := random(30)+1;
writeln('Twoi zolnierze napotkali przeszkode na drodze');
writeln('ominiecie jej kosztuje twoje wojsko ',liczba,' wytrzymalosci');
czlowiek.wytrzymalosc := czlowiek.wytrzymalosc-liczba;
writeln('Wytrzymalosc wojska: ',czlowiek.wytrzymalosc);
end;
if wydarzenie = 3 then
begin
writeln('Podroz przebiega bez przeszkod');
czlowiek.wytrzymalosc := 100;
writeln('Wytrzymalosc twojego wojska sie odnowila.');
end;
if wydarzenie in [4,5,6] then
begin
bitwa(czlowiek, komputer);
end;
end;
procedure ugruntowanie;
var
pos1,pos2,i, k: byte;
begin
window(60,5,75,20);
textbackground(brown);
clrscr;
pos1:=16;
pos2:=16;
gotoxy(pos1,pos2);
write('M');
textbackground(green);
for k := 1 to 14 do
for i := 4+k to 16 do
writexy('L',i,k);
for k := 14 downto 1 do
for i := 1 to 14-k do
writexy('L',i,k);
textbackground(lightcyan);
writexy('Z',9,6);
textbackground(green);
end;
procedure mapa(var czlowiek: Tgracz; var komputer: Tgracz);
var
x,y: byte;
znak: char;
tura: integer;
begin
ugruntowanie;
x:=14;
y:=15;
gotoxy(x,y);
write('@');
tura:=0;
repeat
ugruntowanie;
textbackground(brown);
textcolor(black);
gotoxy(x,y);
write('@');
repeat
znak := readkey;
until znak in [#75,#72,#80,#77];
if znak=#80 then
begin
y := y + 1;
gotoxy(x,y-1);
write (' ');
gotoxy(x,y);
write('@');
end;
if znak=#72 then
begin
y := y - 1;
gotoxy(x,y+1);
write (' ');
gotoxy(x,y);
write('@');
end;
if znak=#77 then
begin
x := x + 1;
gotoxy(x-1,y);
write (' ');
gotoxy(x,y);
write('@');
end;
if znak=#75 then
begin
x := x - 1;
gotoxy(x+1,y);
write (' ');
gotoxy(x,y);
write('@');
end;
textcolor(white);
if (x=16) and (y=15) then miasto(czlowiek)
else
begin
tura:=tura+1;
losuj_wydarzenie(czlowiek,komputer,tura);
end;
textcolor(white);
until znak=#27;
end;
procedure menu(var czlowiek: Tgracz; var komputer: Tgracz);
var
znak: char;
x: byte;
begin
x:=1;
repeat
if znak = #72 then x := x-1;
if znak = #80 then x := x+1;
if x = 0 then x := 4;
if x = 5 then x := 1;
if x=1 then textcolor(yellow)
else
textcolor(white);
gotoxy(35,10);
writeln('NOWA GRA');
if x=2 then textcolor(yellow)
else
textcolor(white);
gotoxy(34,11);
writeln('WCZYTAJ GRE');
if x=3 then textcolor(yellow)
else
textcolor(white);
gotoxy(36,12);
writeln('POMOC');
if x=4 then textcolor(yellow)
else
textcolor(white);
gotoxy(35,13);
writeln('WYJSCIE');
znak := readkey;
until znak in [#13,#27];
clrscr;
if x = 1 then
begin
start(czlowiek);
mapa(czlowiek,komputer);
end;
end;
procedure logo;
begin
textcolor(lightred);
gotoxy(29,2);
write('# # ### ####');
gotoxy(29,3);
write('# # # # # #');
gotoxy(29,4);
write('# # # ##### #### ');
gotoxy(29,5);
write('# # # # # # # ');
gotoxy(29,6);
write(' ### # # # # ');
gotoxy(28,7);
write('-----------------------');
gotoxy(33,15);
WRITE('AUTOR: RAFAEL');
gotoxy(26,16);
WRITE('WSZYSTKIE PRAWA ZASTRZEZONE.');
end;
var
czlowiek: Tgracz;
komputer: Tgracz;
begin
logo;
menu(czlowiek,komputer);
end. |
:arrow: Plik *.exe [link widoczny dla zalogowanych]
Post został pochwalony 0 razy
|
|