Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program graRPG2;
- USES CRT;
- var
- hp,exp,maxhp,mp,maxmp,def,int,dex,str,level,klasa,liczba,wyborPokoju2,indeksTablicy,damage,damage2,eliksirZycia,eliksirMany,zloto,stan,I,I2,numerPokoju:integer;
- pexp,pHp,pDef,pInt,pDex,pStr,potwor,maxindeks,potworek,unik:integer;
- N,W,S,E : integer;
- polnoc,poludnie,wschod,zachod : boolean;
- imie,nazwaKlasy,wyborPokoju,przedmiocik,pNazwa:string;
- a,b:boolean;
- opisPokoju, nazwaBroni : string;
- plecak : array [1..8] of string;
- ekwipunek : array [1..6] of string;
- potwory : array [0..2] of string;
- potwory2 : array of integer;
- expNaLevel : array [1..3] of integer;
- helm,nogawice,zbroja,bron,tarcza,buty,walkaa : boolean;
- bstr : integer;
- wybor : char;
- procedure ustawExp;
- begin
- expNaLevel[1]:=100;
- expNaLevel[2]:=200;
- end;
- procedure ustawKlase(wybor : integer);
- begin
- case wybor of
- 1:
- begin
- level:=1;
- klasa:=1;
- nazwaKlasy:='Wojownik';
- hp:=1500;
- maxhp:=1500;
- mp:=30;
- maxmp:=30;
- int:=20;
- dex:=60;
- str:=60;
- def:=60;
- exp:=0;
- eliksirZycia:=4;
- zloto:=50;
- plecak[1]:= 'shuriken';
- plecak[2]:= 'miecz';
- plecak[3]:= 'xxxx';
- plecak[4]:= 'zzzz';
- plecak[5]:= 'ssss';
- plecak[6]:= 'aaaa';
- plecak[7]:= 'ffff';
- plecak[8]:= 'pusto';
- ekwipunek[1]:= 'pusto';
- ekwipunek[2]:= 'pusto';
- ekwipunek[3]:= 'pusto';
- ekwipunek[4]:= 'pusto';
- ekwipunek[5]:= 'pusto';
- ekwipunek[6]:= 'pusto';
- end;
- 2:
- begin
- klasa:=2;
- level:=1;
- nazwaKlasy:='Kleryk';
- hp:=100;
- maxhp:=100;
- mp:=80;
- maxmp:=80;
- int:=8;
- dex:=4;
- str:=5;
- def:=5;
- exp:=0;
- eliksirZycia:=1;
- eliksirMany:=3;
- zloto:=50;
- plecak[1]:= 'shuriken';
- plecak[2]:= 'pusto';
- plecak[3]:= 'pusto';
- plecak[4]:= 'pusto';
- plecak[5]:= 'pusto';
- plecak[6]:= 'pusto';
- plecak[7]:= 'pusto';
- plecak[8]:= 'pusto';
- end;
- end;
- end;
- procedure wyswietlMozliweKierunki;
- begin
- Write('Wyjscia: ');
- if polnoc = true then write('polnoc ');
- if poludnie = true then write('poludnie ');
- if wschod = true then write('wschod ');
- if zachod = true then write('zachod ');
- end;
- procedure sprawdzExp;
- begin
- if exp >= expNaLevel[level] then
- begin
- writeln('Gratulacje, wszedles na kolejny poziom doswiadczenia!');
- readkey;
- Inc(level);
- if klasa = 1 then
- begin
- maxhp+=15;
- maxmp+=5;
- str+=3;
- end;
- end;
- end;
- procedure generujPokoje(numerPokoiku:integer);
- begin
- case numerPokoiku of
- 1:
- begin
- opisPokoju:='Znajdujesz sie w lesie, przed toba sa dwie sciezki, ktora wybierasz?';
- wschod:= true;
- zachod:= true;
- poludnie:= true;
- E:=2;
- W:=3;
- S:=5;
- maxIndeks:=2;
- SetLength(potwory2, maxIndeks);
- potwory2[0]:= 0;
- potwory2[1]:= 1;
- end;
- 2:
- begin
- opisPokoju:='Jestes na polanie';
- zachod:= true;
- W:=1;
- end;
- 3:
- begin
- opisPokoju:='Jestes na sciezce prowadzacej do wielkiego miasta';
- wschod:= true;
- polnoc:= true;
- E:=1;
- N:=4;
- end;
- 4:
- begin
- opisPokoju:='Jestes przed bramami miasta';
- poludnie:= true;
- S:=3;
- end;
- 5:
- begin
- opisPokoju:='Znajdujesz w sie przy podniszczonej lesniczowce.';
- polnoc:= true;
- N:=1;
- end;
- end;
- a:= false;
- b:= false;
- randomize;
- liczba:=random(16);
- if liczba < 9 then a:= true
- else b:=true;
- end;
- function obrazeniaGracza(pStr,def:integer):integer;
- begin
- damage:=pStr-def;
- if damage < 0 then damage:=0;
- result:=damage;
- end;
- function hpGracza(damage:integer):integer;
- begin
- hp-=damage;
- Result:=hp;
- end;
- function sprawdzCzyMartwy : boolean;
- begin
- if hp <= 0 then
- begin
- writeln('Jestes MARTWY!');
- maxhp:=0;
- Result:= true;
- end
- else Result:=false;
- end;
- function obrazeniaPotwora(str,pdef : integer) : integer;
- begin
- damage2:=str-pDef;
- if damage2 < 0 then damage2:=0;
- result:=damage2;
- end;
- function hpPotwora(damage2:integer) : integer;
- begin
- Result:=pHp-damage2;
- end;
- procedure czyPotworMartwy;
- begin
- if pHp <= 0 then
- begin
- writeln('zabiles potwora!');
- exp+=pexp;
- sprawdzExp;
- end;
- end;
- Function wylosujPotwora(Tab : Array of Integer): Integer;
- Begin
- Result := Tab[Random(maxIndeks)];
- End;
- procedure generujPotwora(potworek:integer);
- begin
- potwory[0]:='Goblin';
- potwory[1]:='Szczur';
- case potworek of
- 0:
- begin
- pNazwa:='Goblin';
- pexp:=25;
- pHp:=80;
- pInt:=2;
- pStr:=6;
- pDex:=4;
- pdef:=4;
- end;
- 1:
- begin
- pNazwa:='Szczur';
- pexp:=5;
- pHp:=30;
- pInt:=1;
- pStr:=2;
- pDex:=4;
- pDef:=2;
- end;
- end;
- end;
- procedure wyswietlPokoik;
- begin
- Writeln(opisPokoju);
- Writeln;
- end;
- procedure uzyjPrzedmiotu(przedmiot:string);
- begin
- if (przedmiot = 'shuriken') then
- begin
- walkaa:=true;
- damage2:= 15;
- writeln('Rzuciles shurikena w strone potwora !');
- end;
- if ((przedmiot = 'miecz') and (bron = false)) then
- begin
- bstr:=10;
- str+=bstr;
- writeln('Dobyles miecza.');
- plecak[Ord(wybor)-48]:='pusto';
- nazwaBroni:= 'miecz';
- ekwipunek[1]:= nazwaBroni;
- bron:=true;
- end;
- end;
- function sprawdzZalozenie(przedmiot:integer) : boolean;
- begin
- for I := Low(plecak) to High(plecak) do
- begin
- if plecak[I] = 'pusto' then
- begin
- plecak[I]:= ekwipunek[przedmiot];
- Result:= true;
- break;
- end
- else Result:= false;
- end;
- end;
- procedure zdejmijPrzedmiot(przedmiot:integer);
- begin
- case przedmiot of
- 1:
- begin
- if bron = true then
- begin
- if sprawdzZalozenie(1) = false then writeln('Nie masz miejsca w plecaku')
- else
- begin
- writeln('Zdjales bron');
- str-=bstr;
- ekwipunek[1]:='pusto';
- bron:=false;
- end;
- end;
- end;
- end;
- end;
- procedure wyswietlPlecak;
- begin
- I2:=1; // numer itemu w slocie w plecaku np. 1.xxx 2.yyy
- Writeln('Jakiego przedmiotu chcesz uzyc?');
- for I := Low(plecak) to High(plecak) do
- begin
- Writeln(I2,'.',plecak[I]);
- Inc(I2); // Zwiekszenie zmiennej celem wypisania kolejnego itemu 1.xxx 2.yyy 3.zzz itd.
- end;
- end;
- procedure wyswietlEkwipunek;
- begin
- writeln;
- writeln('Twoj ekwipunek:');
- I2:=1; // numer itemu w slocie w plecaku np. 1.xxx 2.yyy
- for I := Low(ekwipunek) to High(ekwipunek) do
- begin
- case I2 of
- 1:
- writeln('1.miecz: ',ekwipunek[1]);
- 2:
- writeln('2.tarcza: ',ekwipunek[2]);
- 3:
- writeln('3.zbroja: ',ekwipunek[3]);
- 4:
- writeln('4.helm: ',ekwipunek[4]);
- 5:
- writeln('5.nogawice: ',ekwipunek[5]);
- 6:
- writeln('6.buty: ',ekwipunek[6]);
- end;
- Inc(I2); // Zwiekszenie zmiennej celem wypisania kolejnego itemu 1.xxx 2.yyy 3.zzz itd.
- end;
- end;
- procedure wyswietlStaty;
- begin
- Writeln;
- Writeln('Twoje statystyki to: HP: ',hp,' MP: ', mp,' STR: ',str,' DEX: ',dex,' INT: ',int);
- readkey;
- end;
- procedure Walka;
- begin
- randomize;
- writeln;
- writeln('Zaatakowal cie ',pNazwa,'! Co chcesz zrobic?');
- writeln('1.Zaatakowac orezem');
- writeln('2.Uzyc czaru');
- writeln('3.Uzyc przedmiotu');
- wybor:=readkey;
- case wybor of
- '1':
- begin
- damage:=obrazeniaGracza(pStr,def) + random(10);
- hp:=hpGracza(damage);
- writeln('Straciles ',damage,' HP!');
- writeln('Zostalo ci ',hp,' HP!');
- damage2:=obrazeniaPotwora(str,pdef) + random(10);
- pHp:=hpPotwora(damage2);
- writeln('Zadales potworowi ',damage2,' obrazen!');
- writeln('Zostalo mu ',pHp,' HP!');
- czyPotworMartwy;
- end;
- '3':
- begin
- wyswietlPlecak;
- wybor:=readkey;
- uzyjPrzedmiotu(plecak[ord(wybor)-48]); // przerobienie zmiennej char na int.
- if walkaa = true then
- begin
- pHp:=hpPotwora(damage2);
- writeln('Zadales potworowi ',damage2,' obrazen!');
- czyPotworMartwy;
- writeln('Zostalo mu ',php-damage,' HP!');
- end;
- end;
- end;
- end;
- procedure wyswietlPokoj(kierunek : integer);
- begin
- begin
- if a = true then
- begin
- generujPokoje(kierunek);
- writeln;
- end
- else
- begin
- repeat
- Walka;
- if pHp <= 0 then generujPokoje(kierunek);
- if sprawdzCzyMartwy = true then break;
- until (hp <= 0) or (pHp <=0) ;
- end;
- end;
- end;
- begin
- indeksTablicy:=0;
- Writeln('Witamy w prostej grze rpg!');
- Writeln('Podaj swoje imie!');
- readln(imie);
- Writeln('Wiec nazywasz sie ',imie);
- Writeln('Wybierz kim chcesz zostac:');
- Writeln('1.Wojownik');
- Writeln('2.Kleryk');
- wybor:=readkey;
- ustawKlase(ord(wybor)-48);
- Writeln('Twoj wybor to: ',nazwaKlasy);
- Writeln('Twoje statystyki to: HP: ',hp,' MP: ', mp,' STR: ',str,' DEX: ',dex,' INT: ',int);
- ustawExp;
- generujPokoje(1);
- repeat
- wylosujPotwora(potwory2);
- generujPotwora(wylosujPotwora(potwory2));
- Writeln;
- Writeln('HP: ',hp,' MP: ',mp,' Level: ',level, ' Exp: ',exp,' Zloto: ',zloto);
- Writeln('wschod - D, zachod - A, poludnie - S, polnoc - W');
- writeln;
- wyswietlPokoik;
- wyswietlMozliweKierunki;
- wyborPokoju := readkey;
- if (wyborPokoju = 'd') and (wschod = true) then wyborPokoju2:= 1;
- if (wyborPokoju = 'a') and (zachod = true) then wyborPokoju2:= 2;
- if (wyborPokoju = 's') and (poludnie = true) then wyborPokoju2:=3;
- if (wyborPokoju = 'w') and (polnoc = true) then wyborPokoju2:=4;
- if (wyborPokoju = 'p') then wyborPokoju2:=5;
- if wyborPokoju = 'o' then wyborPokoju2:=6;
- if wyborPokoju = 'b' then wyswietlStaty;
- if ((wyborPokoju = 'd') or (wyborPokoju = 'a') or (wyborPokoju = 's') or (wyborPokoju = 'w')) then
- begin
- wschod:=false;
- zachod:=false;
- polnoc:=false;
- poludnie:=false;
- end;
- case wyborPokoju2 of
- 1:
- begin
- wyswietlPokoj(E);
- end;
- 2:
- begin
- wyswietlPokoj(W);
- end;
- 3:
- begin
- wyswietlPokoj(S);
- end;
- 4:
- begin
- wyswietlPokoj(N);
- end;
- 5:
- begin
- wyswietlEkwipunek;
- wybor:=readkey;
- zdejmijPrzedmiot(ord(wybor)-48); // ord(wybor)-48 zamienienie chara na inta.
- continue;
- end;
- 6:
- begin
- wyswietlPlecak;
- wybor:=readkey;
- uzyjPrzedmiotu(plecak[ord(wybor)-48]); // przerobienie zmiennej char na int.
- if walkaa = true then writeln('Tego przedmiotu mozna uzyc tylko podczas walki.');
- end;
- end;
- until maxhp <= 0;
- readkey;
- end.
Add Comment
Please, Sign In to add comment