rafael
Administrator
Dołączył: 07 Lut 2006
Posty: 72
Przeczytał: 0 tematów
Ostrzeżeń: 0/3 Skąd: Pszczyna
|
Temat postu: Adventure |
|
|
Kod: | program adventure;
{$APPTYPE CONSOLE}
uses
SysUtils, crt;
type
Truch = record
x: integer;
y: integer;
end;
Texp = record
next: integer;
nr: integer;
exp: integer;
zdobyte: integer;
end;
Tpostac = record
wytrzymalosc: integer;
wytrzymalosc_max: integer;
sila: integer;
zrecznosc: integer;
imie: string[20];
end;
Twrogowie = array[1..10] of Tpostac;
procedure intro;
begin
writeln('*********************************');
writeln('*********************************');
writeln(' ADVENTURE ');
writeln(' Copyright 2006 by RAFAEL ');
writeln('*********************************');
writeln('*********************************');
readln;
clrscr;
end;
procedure losuj_imie(var wrog: Twrogowie);
var
numer: byte;
begin
Randomize;
numer := Random(10);
case numer of
0: wrog[2].imie := 'Mantikora';
1: wrog[2].imie := 'Jaszczur';
2: wrog[2].imie := 'Zloty smok';
3: wrog[2].imie := 'Harpia Wiedzma';
4: wrog[2].imie := 'Bialy wilk';
5: wrog[2].imie := 'Tarantula';
6: wrog[2].imie := 'Wilkolak';
7: wrog[2].imie := 'Drzewiec';
8: wrog[2].imie := 'Wilczy jezdziec';
9: wrog[2].imie := 'Goblin';
end;
end;
procedure pokaz_woja(postac: Twrogowie; n: byte);
begin
writeln('Statystyki: ');
writeln('Imie: ', postac[n].imie);
writeln('Sila: ', postac[n].sila);
writeln('Zrecznosc: ', postac[n].zrecznosc);
writeln('Wytrzymalosc: ', postac[n].wytrzymalosc,'/',postac[n].wytrzymalosc_max, ' HP');
writeln;
end;
procedure generuj_przeciwnika(var wrog: Twrogowie; staty: Truch);
begin
clrscr;
Randomize;
if staty.x < 0 then staty.x := staty.x*(-1);
if staty.y < 0 then staty.y := staty.y*(-1);
losuj_imie(wrog);
wrog[2].wytrzymalosc := 10*(staty.x + staty.y) + Random(staty.x + staty.y + 5);
wrog[2].wytrzymalosc_max := wrog[2].wytrzymalosc;
wrog[2].sila := 2*staty.x + 2*staty.y + Random(staty.x + staty.y+5);
wrog[2].zrecznosc := 2*staty.x + 2*staty.y + Random(staty.x + staty.y+5);
end;
procedure doswiadczenie(var dosw: Texp; var woj: Twrogowie);
var
zrecznosc, sila, wytrzymalosc, i: integer;
begin
if dosw.nr < 1 then dosw.nr := 1;
if dosw.next < 100 then dosw.next := 100;
dosw.exp := dosw.exp + dosw.zdobyte;
if dosw.exp >= dosw.next then
begin
dosw.nr := dosw.nr + 1;
dosw.next := dosw.next*dosw.nr;
clrscr;
writeln('Awansowales na ',dosw.nr,' poziom!!!');
readln;
writeln('Otrzymujesz 10 punktow do rozdysponowania!');
readln;
repeat
i := 10;
write('Zrecznosc: '); readln(zrecznosc);
write('Sila: '); readln(sila);
write('Wytrzymalosc: '); readln(wytrzymalosc);
i := i - zrecznosc - sila - wytrzymalosc;
if i < 0 then
begin
writeln('Przekroczyles limit dostepnych punktow! Sproboj jeszcze raz ;)');
readln;
clrscr;
end;
until i >= 0;
woj[1].wytrzymalosc := woj[1].wytrzymalosc_max + 10*wytrzymalosc;
woj[1].wytrzymalosc_max := woj[1].wytrzymalosc_max + 10*wytrzymalosc;
woj[1].sila := woj[1].sila + sila;
woj[1].zrecznosc := woj[1].zrecznosc + zrecznosc;
writeln('Twoje nowe staty: ');
writeln;
pokaz_woja(woj,1);
end
else
writeln('Do ', dosw.nr+1,' poziomu brakuje Ci: ', dosw.next-dosw.exp, ' expa.');
end;
procedure walka(var wrog: Twrogowie; var dosw: Texp);
var
s1, s2, zrodlo, wytrz: integer;
begin
readln;
Randomize;
zrodlo := Random(10)+1;
if zrodlo > 3 then
begin
writeln('Zostales zaatakowany!!!');
pokaz_woja(wrog,1);
writeln('********** VS ************');
pokaz_woja(wrog,2);
repeat
Randomize;
s1 := round(0.2*wrog[1].sila) + (Random(round(0.1*wrog[1].sila*wrog[1].zrecznosc)));
s2 := round(0.2*wrog[2].sila) + (Random(round(0.1*wrog[2].sila*wrog[2].zrecznosc)));
if s1 > s2 then
begin
writeln('Zaatakowales!!! ', wrog[2].imie,' traci: ', s1, ' HP!');
wrog[2].wytrzymalosc := wrog[2].wytrzymalosc - s1;
end
else
begin
writeln('Twoj przeciwnik zaatakowal!!! Straciles: ', s2, ' HP!');
wrog[1].wytrzymalosc := wrog[1].wytrzymalosc - s2;
end;
readln;
until (wrog[1].wytrzymalosc <= 0) or (wrog[2].wytrzymalosc <= 0);
if wrog[1].wytrzymalosc <= 0 then
writeln('Zostales pokonany!!!')
else
begin
dosw.zdobyte := wrog[2].sila*wrog[2].zrecznosc;
writeln('Wygrales walke!!! Zdobyles ',dosw.zdobyte,' exp!');
readln;
doswiadczenie(dosw,wrog);
end;
end
else
begin
writeln('Trafiles na zrodlo z krystalicznie czysta woda!');
if wrog[1].wytrzymalosc = wrog[1].wytrzymalosc_max then
writeln('Nie chce Ci sie pic.')
else
begin
wytrz := wrog[1].wytrzymalosc_max - wrog[1].wytrzymalosc;
if wytrz > 0.2*wrog[1].wytrzymalosc_max then
begin
wrog[1].wytrzymalosc := wrog[1].wytrzymalosc + Round(0.2*wrog[1].wytrzymalosc_max);
writeln('Napiles sie i zyskales: ',wytrz, ' HP!');
end
else
begin
wrog[1].wytrzymalosc := wrog[1].wytrzymalosc_max;
writeln('Napiles sie, masz HP na fula!');
end;
end;
end;
readln;
clrscr;
end;
procedure game(postac: Twrogowie);
var
ruch: Truch;
kierunek: integer;
doswiadczenie: Texp;
begin
doswiadczenie.next := 100;
doswiadczenie.nr := 1;
doswiadczenie.exp := 0;
doswiadczenie.zdobyte := 0;
ruch.x := 0;
ruch.y := 0;
repeat
writeln('**** (',ruch.x,',',ruch.y,') ****');
writeln;
repeat
write('Wybierz kierunek marszu: "1" - lewo, "3" - prawo, "5" - gora, "2" - dol: ');
read(kierunek);
until keypressed;
if kierunek = 1 then ruch.x := ruch.x - 1
else
if kierunek = 2 then ruch.y := ruch.y - 1
else
if kierunek = 3 then ruch.x := ruch.x + 1
else
if kierunek = 5 then ruch.y := ruch.y + 1
else
ruch.x := ruch.x + 1;
clrscr;
generuj_przeciwnika(postac, ruch);
walka(postac,doswiadczenie);
until postac[1].wytrzymalosc <= 0;
writeln('KONIEC GRY!!!');
readln;
end;
procedure tworz_woja(var postac: Twrogowie);
var
i: integer;
begin
writeln('Na poczatek stworz swojego woja.');
writeln('Masz 50 punktow do rozdysponowania. Dobrze sie zastanow w co przypakowac :).');
readln;
write('Podaj imie swojego woja: '); readln(postac[1].imie);
repeat
i := 50;
write('Zrecznosc: '); readln(postac[1].zrecznosc);
write('Sila: '); readln(postac[1].sila);
write('Wytrzymalosc: '); readln(postac[1].wytrzymalosc);
i := i - postac[1].zrecznosc - postac[1].sila - postac[1].wytrzymalosc;
if i < 0 then
begin
writeln('Przekroczyles limit dostepnych punktow! Sproboj jeszcze raz ;)');
readln;
end;
clrscr;
until i >= 0;
postac[1].wytrzymalosc := postac[1].wytrzymalosc*10;
postac[1].wytrzymalosc_max := postac[1].wytrzymalosc;
pokaz_woja(postac,1);
clrscr;
end;
var
wojownik: Twrogowie;
begin
intro;
tworz_woja(wojownik);
game(wojownik);
end. |
Aby pobrać plik exe. kliknij :arrow: [link widoczny dla zalogowanych]
Post został pochwalony 0 razy
|
|