Guest User

Untitled

a guest
Oct 15th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 11.21 KB | None | 0 0
  1. program graRPG2;
  2. USES CRT;
  3.  
  4. var
  5.   hp,exp,maxhp,mp,maxmp,def,int,dex,str,level,klasa,liczba,wyborPokoju2,indeksTablicy,damage,damage2,eliksirZycia,eliksirMany,zloto,stan,I,I2,numerPokoju:integer;
  6.   pexp,pHp,pDef,pInt,pDex,pStr,potwor,maxindeks,potworek,unik:integer;
  7.   N,W,S,E : integer;
  8.   polnoc,poludnie,wschod,zachod : boolean;
  9.   imie,nazwaKlasy,wyborPokoju,przedmiocik,pNazwa:string;
  10.   a,b:boolean;
  11.   opisPokoju, nazwaBroni : string;
  12.   plecak : array [1..8] of string;
  13.   ekwipunek : array [1..6] of string;
  14.   potwory : array [0..2] of string;
  15.   potwory2 : array of integer;
  16.   expNaLevel : array [1..3] of integer;
  17.   helm,nogawice,zbroja,bron,tarcza,buty,walkaa : boolean;
  18.   bstr : integer;
  19.   wybor : char;
  20.  
  21. procedure ustawExp;
  22. begin
  23.   expNaLevel[1]:=100;
  24.   expNaLevel[2]:=200;
  25. end;
  26.  
  27. procedure ustawKlase(wybor : integer);
  28. begin
  29.   case wybor of
  30.   1:
  31.     begin
  32.       level:=1;
  33.       klasa:=1;
  34.       nazwaKlasy:='Wojownik';
  35.       hp:=1500;
  36.       maxhp:=1500;
  37.       mp:=30;
  38.       maxmp:=30;
  39.       int:=20;
  40.       dex:=60;
  41.       str:=60;
  42.       def:=60;
  43.       exp:=0;
  44.       eliksirZycia:=4;
  45.       zloto:=50;
  46.       plecak[1]:= 'shuriken';
  47.       plecak[2]:= 'miecz';
  48.       plecak[3]:= 'xxxx';
  49.       plecak[4]:= 'zzzz';
  50.       plecak[5]:= 'ssss';
  51.       plecak[6]:= 'aaaa';
  52.       plecak[7]:= 'ffff';
  53.       plecak[8]:= 'pusto';
  54.       ekwipunek[1]:= 'pusto';
  55.       ekwipunek[2]:= 'pusto';
  56.       ekwipunek[3]:= 'pusto';
  57.       ekwipunek[4]:= 'pusto';
  58.       ekwipunek[5]:= 'pusto';
  59.       ekwipunek[6]:= 'pusto';
  60.     end;
  61.   2:
  62.     begin
  63.       klasa:=2;
  64.       level:=1;
  65.       nazwaKlasy:='Kleryk';
  66.       hp:=100;
  67.       maxhp:=100;
  68.       mp:=80;
  69.       maxmp:=80;
  70.       int:=8;
  71.       dex:=4;
  72.       str:=5;
  73.       def:=5;
  74.       exp:=0;
  75.       eliksirZycia:=1;
  76.       eliksirMany:=3;
  77.       zloto:=50;
  78.       plecak[1]:= 'shuriken';
  79.       plecak[2]:= 'pusto';
  80.       plecak[3]:= 'pusto';
  81.       plecak[4]:= 'pusto';
  82.       plecak[5]:= 'pusto';
  83.       plecak[6]:= 'pusto';
  84.       plecak[7]:= 'pusto';
  85.       plecak[8]:= 'pusto';
  86.     end;
  87.   end;
  88. end;
  89.  
  90. procedure wyswietlMozliweKierunki;
  91. begin
  92.   Write('Wyjscia: ');
  93.   if polnoc = true then write('polnoc ');
  94.   if poludnie = true then write('poludnie ');
  95.   if wschod = true then write('wschod ');
  96.   if zachod = true then write('zachod ');
  97. end;
  98. procedure sprawdzExp;
  99. begin
  100.   if exp >= expNaLevel[level] then
  101.   begin
  102.        writeln('Gratulacje, wszedles na kolejny poziom doswiadczenia!');
  103.        readkey;
  104.        Inc(level);
  105.        if klasa = 1 then
  106.        begin
  107.             maxhp+=15;
  108.             maxmp+=5;
  109.             str+=3;
  110.        end;
  111.   end;
  112. end;
  113. procedure generujPokoje(numerPokoiku:integer);
  114. begin
  115.   case numerPokoiku of
  116.   1:
  117.     begin
  118.        opisPokoju:='Znajdujesz sie w lesie, przed toba sa dwie sciezki, ktora wybierasz?';
  119.        wschod:= true;
  120.        zachod:= true;
  121.        poludnie:= true;
  122.        E:=2;
  123.        W:=3;
  124.        S:=5;
  125.        maxIndeks:=2;
  126.        SetLength(potwory2, maxIndeks);
  127.        potwory2[0]:= 0;
  128.        potwory2[1]:= 1;
  129.     end;
  130.   2:
  131.     begin
  132.        opisPokoju:='Jestes na polanie';
  133.        zachod:= true;
  134.        W:=1;
  135.     end;
  136.   3:
  137.     begin
  138.        opisPokoju:='Jestes na sciezce prowadzacej do wielkiego miasta';
  139.        wschod:= true;
  140.        polnoc:= true;
  141.        E:=1;
  142.        N:=4;
  143.     end;
  144.   4:
  145.     begin
  146.        opisPokoju:='Jestes przed bramami miasta';
  147.        poludnie:= true;
  148.        S:=3;
  149.     end;
  150.   5:
  151.     begin
  152.        opisPokoju:='Znajdujesz w sie przy podniszczonej lesniczowce.';
  153.        polnoc:= true;
  154.        N:=1;
  155.     end;
  156.   end;
  157.   a:= false;
  158.   b:= false;
  159.   randomize;
  160.   liczba:=random(16);
  161.   if liczba < 9 then a:= true
  162.   else b:=true;
  163. end;
  164. function obrazeniaGracza(pStr,def:integer):integer;
  165. begin
  166.   damage:=pStr-def;
  167.   if damage < 0 then damage:=0;
  168.   result:=damage;
  169. end;
  170. function hpGracza(damage:integer):integer;
  171. begin
  172.   hp-=damage;
  173.   Result:=hp;
  174. end;
  175. function sprawdzCzyMartwy : boolean;
  176. begin
  177.   if hp <= 0 then
  178.   begin
  179.        writeln('Jestes MARTWY!');
  180.        maxhp:=0;
  181.        Result:= true;
  182.   end
  183.   else Result:=false;
  184. end;
  185. function obrazeniaPotwora(str,pdef : integer) : integer;
  186. begin
  187.   damage2:=str-pDef;
  188.   if damage2 < 0 then damage2:=0;
  189.   result:=damage2;
  190. end;
  191. function hpPotwora(damage2:integer) : integer;
  192. begin
  193.   Result:=pHp-damage2;
  194. end;
  195. procedure czyPotworMartwy;
  196. begin
  197.   if pHp <= 0 then
  198.   begin
  199.        writeln('zabiles potwora!');
  200.        exp+=pexp;
  201.        sprawdzExp;
  202.   end;
  203. end;
  204. Function wylosujPotwora(Tab : Array of Integer): Integer;
  205. Begin
  206.  Result := Tab[Random(maxIndeks)];
  207. End;
  208.  
  209. procedure generujPotwora(potworek:integer);
  210. begin
  211.   potwory[0]:='Goblin';
  212.   potwory[1]:='Szczur';
  213.   case potworek of
  214.   0:
  215.     begin
  216.       pNazwa:='Goblin';
  217.       pexp:=25;
  218.       pHp:=80;
  219.       pInt:=2;
  220.       pStr:=6;
  221.       pDex:=4;
  222.       pdef:=4;
  223.     end;
  224.   1:
  225.     begin
  226.       pNazwa:='Szczur';
  227.       pexp:=5;
  228.       pHp:=30;
  229.       pInt:=1;
  230.       pStr:=2;
  231.       pDex:=4;
  232.       pDef:=2;
  233.     end;
  234.   end;
  235. end;
  236. procedure wyswietlPokoik;
  237. begin
  238.   Writeln(opisPokoju);
  239.   Writeln;
  240. end;
  241. procedure uzyjPrzedmiotu(przedmiot:string);
  242. begin
  243.   if (przedmiot = 'shuriken') then
  244.   begin
  245.        walkaa:=true;
  246.        damage2:= 15;
  247.        writeln('Rzuciles shurikena w strone potwora !');
  248.   end;
  249.   if ((przedmiot = 'miecz') and (bron = false)) then
  250.   begin
  251.        bstr:=10;
  252.        str+=bstr;
  253.        writeln('Dobyles miecza.');
  254.        plecak[Ord(wybor)-48]:='pusto';
  255.        nazwaBroni:= 'miecz';
  256.        ekwipunek[1]:= nazwaBroni;
  257.        bron:=true;
  258.   end;
  259. end;
  260. function sprawdzZalozenie(przedmiot:integer) : boolean;
  261. begin
  262.   for I := Low(plecak) to High(plecak) do
  263.   begin
  264.     if plecak[I] = 'pusto' then
  265.     begin
  266.          plecak[I]:= ekwipunek[przedmiot];
  267.          Result:= true;
  268.          break;
  269.     end
  270.     else Result:= false;
  271.   end;
  272. end;
  273.  
  274. procedure zdejmijPrzedmiot(przedmiot:integer);
  275. begin
  276.   case przedmiot of
  277.   1:
  278.     begin
  279.        if bron = true then
  280.        begin
  281.             if sprawdzZalozenie(1) = false then writeln('Nie masz miejsca w plecaku')
  282.             else
  283.             begin
  284.                  writeln('Zdjales bron');
  285.                  str-=bstr;
  286.                  ekwipunek[1]:='pusto';
  287.                  bron:=false;
  288.             end;
  289.        end;
  290.     end;
  291.   end;
  292. end;
  293.  
  294. procedure wyswietlPlecak;
  295. begin
  296.   I2:=1; // numer itemu w slocie w plecaku np. 1.xxx 2.yyy
  297.   Writeln('Jakiego przedmiotu chcesz uzyc?');
  298.   for I := Low(plecak) to High(plecak) do
  299.   begin
  300.     Writeln(I2,'.',plecak[I]);
  301.     Inc(I2); // Zwiekszenie zmiennej celem wypisania kolejnego itemu 1.xxx 2.yyy 3.zzz itd.
  302.   end;
  303. end;
  304. procedure wyswietlEkwipunek;
  305. begin
  306.   writeln;
  307.   writeln('Twoj ekwipunek:');
  308.   I2:=1; // numer itemu w slocie w plecaku np. 1.xxx 2.yyy
  309.   for I := Low(ekwipunek) to High(ekwipunek) do
  310.   begin
  311.     case I2 of
  312.     1:
  313.       writeln('1.miecz: ',ekwipunek[1]);
  314.     2:
  315.       writeln('2.tarcza: ',ekwipunek[2]);
  316.     3:
  317.       writeln('3.zbroja: ',ekwipunek[3]);
  318.     4:
  319.       writeln('4.helm: ',ekwipunek[4]);
  320.     5:
  321.       writeln('5.nogawice: ',ekwipunek[5]);
  322.     6:
  323.       writeln('6.buty: ',ekwipunek[6]);
  324.     end;
  325.     Inc(I2); // Zwiekszenie zmiennej celem wypisania kolejnego itemu 1.xxx 2.yyy 3.zzz itd.
  326.   end;
  327. end;
  328. procedure wyswietlStaty;
  329. begin
  330.   Writeln;
  331.   Writeln('Twoje statystyki to: HP: ',hp,' MP: ', mp,' STR: ',str,' DEX: ',dex,' INT: ',int);
  332.   readkey;
  333. end;
  334. procedure Walka;
  335. begin
  336.   randomize;
  337.   writeln;
  338.   writeln('Zaatakowal cie ',pNazwa,'! Co chcesz zrobic?');
  339.   writeln('1.Zaatakowac orezem');
  340.   writeln('2.Uzyc czaru');
  341.   writeln('3.Uzyc przedmiotu');
  342.   wybor:=readkey;
  343.   case wybor of
  344.   '1':
  345.     begin
  346.       damage:=obrazeniaGracza(pStr,def) + random(10);
  347.       hp:=hpGracza(damage);
  348.       writeln('Straciles ',damage,' HP!');
  349.       writeln('Zostalo ci ',hp,' HP!');
  350.       damage2:=obrazeniaPotwora(str,pdef) + random(10);
  351.       pHp:=hpPotwora(damage2);
  352.       writeln('Zadales potworowi ',damage2,' obrazen!');
  353.       writeln('Zostalo mu ',pHp,' HP!');
  354.   czyPotworMartwy;
  355.     end;
  356.   '3':
  357.     begin
  358.       wyswietlPlecak;
  359.       wybor:=readkey;
  360.       uzyjPrzedmiotu(plecak[ord(wybor)-48]); // przerobienie zmiennej char na int.
  361.       if walkaa = true then
  362.       begin
  363.            pHp:=hpPotwora(damage2);
  364.            writeln('Zadales potworowi ',damage2,' obrazen!');
  365.            czyPotworMartwy;
  366.            writeln('Zostalo mu ',php-damage,' HP!');
  367.       end;
  368.     end;
  369.   end;
  370. end;
  371. procedure wyswietlPokoj(kierunek : integer);
  372. begin
  373.   begin
  374.   if a = true then
  375.      begin
  376.           generujPokoje(kierunek);
  377.           writeln;
  378.      end
  379.   else
  380.   begin
  381.        repeat
  382.              Walka;
  383.              if pHp <= 0 then generujPokoje(kierunek);
  384.              if sprawdzCzyMartwy = true then break;
  385.        until (hp <= 0) or (pHp <=0) ;
  386.      end;
  387. end;
  388. end;
  389.  
  390. begin
  391.   indeksTablicy:=0;
  392.   Writeln('Witamy w prostej grze rpg!');
  393.   Writeln('Podaj swoje imie!');
  394.   readln(imie);
  395.   Writeln('Wiec nazywasz sie ',imie);
  396.   Writeln('Wybierz kim chcesz zostac:');
  397.   Writeln('1.Wojownik');
  398.   Writeln('2.Kleryk');
  399.   wybor:=readkey;
  400.   ustawKlase(ord(wybor)-48);
  401.   Writeln('Twoj wybor to: ',nazwaKlasy);
  402.   Writeln('Twoje statystyki to: HP: ',hp,' MP: ', mp,' STR: ',str,' DEX: ',dex,' INT: ',int);
  403.   ustawExp;
  404.   generujPokoje(1);
  405.   repeat
  406.         wylosujPotwora(potwory2);
  407.         generujPotwora(wylosujPotwora(potwory2));
  408.         Writeln;
  409.         Writeln('HP: ',hp,' MP: ',mp,' Level: ',level, ' Exp: ',exp,' Zloto: ',zloto);
  410.         Writeln('wschod - D, zachod - A, poludnie - S, polnoc - W');
  411.         writeln;
  412.         wyswietlPokoik;
  413.         wyswietlMozliweKierunki;
  414.         wyborPokoju := readkey;
  415.         if (wyborPokoju = 'd') and (wschod = true) then wyborPokoju2:= 1;
  416.         if (wyborPokoju = 'a') and (zachod = true) then wyborPokoju2:= 2;
  417.         if (wyborPokoju = 's') and (poludnie = true) then wyborPokoju2:=3;
  418.         if (wyborPokoju = 'w') and (polnoc = true) then wyborPokoju2:=4;
  419.         if (wyborPokoju = 'p') then wyborPokoju2:=5;
  420.         if wyborPokoju = 'o' then wyborPokoju2:=6;
  421.         if wyborPokoju = 'b' then wyswietlStaty;
  422.         if ((wyborPokoju = 'd') or (wyborPokoju = 'a') or (wyborPokoju = 's') or (wyborPokoju = 'w')) then
  423.         begin
  424.              wschod:=false;
  425.              zachod:=false;
  426.              polnoc:=false;
  427.              poludnie:=false;
  428.         end;
  429.         case wyborPokoju2 of
  430.         1:
  431.           begin
  432.                wyswietlPokoj(E);
  433.           end;
  434.         2:
  435.           begin
  436.                wyswietlPokoj(W);
  437.           end;
  438.         3:
  439.           begin
  440.                wyswietlPokoj(S);
  441.           end;
  442.         4:
  443.           begin
  444.                wyswietlPokoj(N);
  445.           end;
  446.         5:
  447.           begin
  448.                wyswietlEkwipunek;
  449.                wybor:=readkey;
  450.                zdejmijPrzedmiot(ord(wybor)-48); // ord(wybor)-48 zamienienie chara na inta.
  451.                continue;
  452.           end;
  453.         6:
  454.           begin
  455.                wyswietlPlecak;
  456.                wybor:=readkey;
  457.                uzyjPrzedmiotu(plecak[ord(wybor)-48]); // przerobienie zmiennej char na int.
  458.                if walkaa = true then writeln('Tego przedmiotu mozna uzyc tylko podczas walki.');
  459.           end;
  460.         end;
  461.   until maxhp <= 0;
  462.   readkey;
  463.  
  464. end.
Add Comment
Please, Sign In to add comment