Skocz do zawartości
Boro Casso

Sud w pascalu

Rekomendowane odpowiedzi

Ostatnio znalazłem mojego starego pendriva a w nim moją dawną gierkę ;)

Oczywiście podzielę się z wami kodem sources.

Czemu ?

Robie to po to aby przyszłe pokolenia zobaczyły jak kiedyś robiono gry :)

a na prawdę ? bo nie chce mi sie uploadowac exeka.

 

}
By boro Casso
}
program Wyspa;

uses crt;
var x,y,z,l_x,l_y:integer;
        lokacja,hp,exp,mon_hp,atak,za_ile,lvl,mana,nx_lvl,gold:integer;
        wilko_x,wilko_y,chudy_x,chudy_y,anna_x,anna_y,ruh_prze,gral_x,gral_y:integer;
    i,gral,zdarz:string;

procedure zmienne;
begin
  x:=100;
  y:=100;
  z:=0;
  i:='Brak';
  hp:=100;
  exp:=0;
  atak:=10;
  mana:=100;
  gral_x := random(200);
  gral_y := random(200);
  lvl:=1
end;

procedure powitanie;
begin
  textcolor(white);
  write('Witaj w tekstowej grze ');
  textcolor(green);
  writeln('Wyspa');
  textcolor(white);
  delay(200);
  writeln('Autorstwa: Boro Casso');writeln;writeln;
  write('Aby rozpoczac napisz ');textcolor(yellow);writeln('Start');textcolor(white);
  write('Jezeli rozpoczynasz gre poraz pierwszy napisz ');textcolor(yellow);writeln('Pomoc');
  textcolor(white);writeln('Dobrej zabawy :-)');writeln;writeln;
end;

procedure pomoc;
begin
        writeln('Witaj w pomocy!');
        delay(200);
        writeln('W grze wcielasz sie w Modego poszukiwacza przyg˘d');
        writeln('Podczas gry bedzesz kozystal z takich komend jak :');
        readln;
        clrscr;
        writeln('Rozdzal I: Poruszanie si© :');
        writeln('W- Idzesz na prz˘d');
        writeln('S- Cofasz sie');
        writeln('A- Idzesz w lewo');
        writeln('D- Idzesz w prawo');
        readln;
        clrscr;
        writeln('Rozdzal II: Rozmowy :');
        writeln('Praca- Npc opowie nam o swoim zawodze');
        writeln('Misja- Dzieki tej komedze poprosimy go o zadanie');
        writeln('Handel- Rozpoczynasz handel');
        writeln('Walka- Rozpoczynasz walke');
        writeln('Zegnaj- Konczysz rozmowe');
        writeln('Pamietaj ze podczas zadan dochodzi jeszcze kilka innych zwrot˘w');
        readln;
        clrscr;
        writeln('Rozdzal III: Walki :');
        writeln('Walki w grze sa stosunkowo latwe');
        writeln('Komputer sam za nas atakuje!');
        writeln('My jedynie atakujemy z magii lub urzywamy przedmioty!');
        writeln('Cios zadany z miecza to (liczba losowa od 0 do maksymalnej miecza*3)');
        writeln('Atak ze strony przeciwnika to liczba losowa od jego polowy ataku do maxymalnej - nasz pancerz');
        readln;
        clrscr;
        writeln('Jak narazie to wszystko.');
        readln;
end;

procedure droga;
begin
                if i='w' then y:=y+1;
                if i='s' then y:=y-1;
                if i='a' then x:=x-1;
                if i='d' then x:=x+1;
                lokacja := random(12)
end;

procedure tura_braci;
begin
        //wilkobrody
        ruh_prze := random(4);
        if ruh_prze=1 then wilko_x:=wilko_x+1;
        if ruh_prze=2 then wilko_x:=wilko_x-1;
        if ruh_prze=3 then wilko_y:=wilko_y+1;
        if ruh_prze=4 then wilko_y:=wilko_x+1;
        //chudy
        ruh_prze := random(4);
        if ruh_prze=1  then chudy_x:=chudy_x+1;
        if ruh_prze=2 then chudy_x:=chudy_x-1;
        if ruh_prze=3 then chudy_y:=chudy_y+1;
        if ruh_prze=4 then chudy_y:=chudy_x+1;
        //anna
        if ruh_prze=1 then anna_x:=anna_x+1;
        if ruh_prze=2 then anna_x:=anna_x-1;
        if ruh_prze=3 then anna_y:=anna_y+1;
        if ruh_prze=4 then anna_y:=anna_x+1;

        if (wilko_x=gral_x) and (wilko_y=gral_y) then gral:='wilko';
        if (chudy_x=gral_x) and (chudy_y=gral_y) then gral:='chudy';
        if (anna_x=gral_x) and (anna_y=gral_y) then gral:='anna';

end;

procedure walka (nazwa:string;zdrowie,exp_mon,atak_mon:longint);
begin
        writeln('Zostales zaatakowany przez ',nazwa,'!');
        mon_hp:=zdrowie;
        readln;
   repeat
        za_ile := random(atak);
        mon_hp:= mon_hp - za_ile;
        textcolor(green);writeln('Zaatakowales ',nazwa,' za ',za_ile, ' zostalo mu ', mon_hp);
        readln;
        za_ile := random(atak_mon);
        hp:= hp-za_ile;
        textcolor(red);writeln(nazwa,' zaatakowal cie za ',za_ile, ' zostalo ci ', hp);
        textcolor(white);writeln('(Atak) (Magia) (Ucieczka)');
        readln(i);
        if i='Magia' then
        Begin
         textcolor(white);
         writeln('Kula ognia - 10 manny.');
         writeln('Piorun - 5 manny.');
         writeln('Tornado - 40 manny.');
         writeln('Zdrowie - 30 manny.');
         writeln('Posiadasz ',mana,' punkt˘w magii.');
        end;
        if (i='Ognista kula') and (mana>=10) then
          begin
            mana:=mana-10;
            textcolor(blue);writeln('Zaatakowales ',nazwa,' za ',za_ile, ' zostalo mu ', mon_hp);
            za_ile := random(40);
            mon_hp:= mon_hp - za_ile;
          end;

        if (i='Piorun') and (mana>=5) then
          begin
            mana:=mana-5;
            textcolor(blue);writeln('Zaatakowales ',nazwa,' za ',za_ile, ' zostalo mu ', mon_hp);
            za_ile := random(20);
            mon_hp:= mon_hp - za_ile;
          end;

        if (i='Tornado') and (mana>=40) then
          begin
            mana:=mana-40;
            textcolor(blue);writeln('Zaatakowales ',nazwa,' za ',za_ile, ' zostalo mu ', mon_hp);
            za_ile := random(80);
            mon_hp:= mon_hp - za_ile;
          end;
        if (i='Zdrowie') and (mana>=30) then
          begin
            mana:=mana-30;
            hp:=100;
          end;
        if hp<0 then repeat
                        writeln('Niezyjesz :-(');
                        za_ile := random(11);
                        readln;
                        if za_ile=10 then
                           begin
                           writeln('Jakas dziwna sila uzdrowila twoje rany');
                           hp:=50;
                           exp:=exp-30;
                           i:='Ucieczka';
                           end;
                        until hp>0;
until (mon_hp<1) or (i='Ucieczka');
if i<>'Ucieczka' then
begin
   textcolor(yellow);
   writeln('Pokonales ',nazwa,' a tym samym zdobyles ',exp_mon,' punkt˘w dowiatczenia. Gratulacje!');
   exp:=exp+exp_mon;
   textcolor(white);
   lokacja := 0;
end;
end;

procedure droga_czy;
begin
        if (x=l_x) and (y=l_y) then writeln('Rusz sie!')
        else
        begin
        if x=100 then
        begin
        if y=100 then writeln('Jestes w swojej rodzinnej wiosce czas wyruszyc w podr˘z');
        end;

        if x<=2 then writeln('Dotarles nad morze, tylko do niego nie wpadnij');
        if x>=200 then writeln('Dotarles na morze, tylko do niego nie wpadnij');
        if y<=2 then writeln('Dotarles nad morze, tylko do niego nie wpadnij');
        if y>=200 then writeln('Dotarles na morze, tylko do niego nie wpadnij');
        if (x=115) and (y=115) then begin
                                      writeln('Zawitales w szkole magii');
                                      writeln('(Regeneruje mane)  (—pie)  (Ide dalej)');
                                      readln(i);
                                      if i='Regeneruje mane' then begin mana:=100; writeln('Twoje zdolnosci magiczne zostaly zregenerowane'); end;
                                      if i='—pie' then begin hp:=100; writeln('Zzz...'); end;
                                    end;

        if x<=0 then hp:=0;
        if x>=203 then hp:=0;
        if y<=0 then hp:=0;
        if y>=203 then hp:=0;

        //walka (nazwa:string;zdrowie,exp_mon,atak_mon:longint);
        if (x<50) and (y>150) then
        Begin
        if lokacja=6 then walka('Bandyta',hp,20,atak);
        if lokacja=7 then walka('Baw˘',14,50,15);
        if lokacja=8 then walka('Ork',30,100,12);
        if lokacja=9 then walka('Ork Wojownik',50,150,30);
        if lokacja=10 then walka('Ork Wojownik',50,150,30);
        if lokacja=10 then walka('Ork Mag',30,150,80);
        if lokacja=10 then walka('Yeti',50,350,80);
        end;

                if (x>50) and (y<150) then
                begin
                  if lokacja=1 then walka('Wilk',15,5,10);
                  if lokacja=2 then walka('Dzik',30,15,10);
                  if lokacja=3 then walka('Z˘w Londowy',80,20,9);
                  if lokacja=4 then walka('˝˘br',10,20,15);
                  if lokacja=5 then walka('Lampard',10,5,40);
                  if lokacja=6 then begin writeln('Znalazles studnie dzieki jej specialnym wlasciwoscia zostales wyleczony'); hp:=100; end;
                  if lokacja=7 then begin writeln('Wpade w ognisko, naszczescie spaliy si© tylko buty'); hp:=hp-15; end;
                  if lokacja=8 then begin writeln('O... Jakie wielkie drzewo'); end;
                  if lokacja=9 then begin writeln('Znalazles 5 sztuk zlota'); gold:=gold+5; end;
                  if lokacja=10 then begin writeln('Znalazles 10 sztuk zlota'); gold:=gold+10; end;
                  if lokacja=11 then begin writeln('Idac przez las napotykasz zamaskowanego m©szczyzne, -Oddawaj zloto (Oddaj zloto) (Walcz)'); read(zdarz); if zdarz='Walcz' then walka('Bandyta',hp,20,atak) else gold:=gold-30; end;
                  if lokacja>11 then writeln('Niema tu nic szczegulnego');
                end;
        l_x:=x;
        l_y:=y;
        end;
end;

procedure awans;
begin
        if exp>nx_lvl then begin
                                  writeln('Awansujesz z ',lvl,' na ',lvl+1,' poziom. GRATULACJE!');
                                  lvl:=lvl+1;
                                  nx_lvl:=nx_lvl*2+15;
                                  //writeln('Aby awansowac na kolejny musisz zdobyc ',lvl,' Pkt Dowiatczenia');
                                  atak:=atak+5;
                                  readln;
                                  clrscr;
                                  end;
end;

procedure czar;
begin

  if i='Boze ulecz moje rany' then
        begin
        if mana>10 then
                begin
                writeln('Twoje rany zniky dzi©ki magii');
                mana:=mana-10;
                end;
                //else writeln('Nie posiadasz tyle many!');
                end;
  //end;


        if i='Bracia' then
        begin
                if mana>5 then
                begin
                writeln('Wilkobrody',wilko_x,' ',wilko_y);
                writeln('Chudy Lis',chudy_x,' ',chudy_y);
                writeln('Zlotowlosa Anna',anna_x,' ',anna_y);
                mana:=mana-5;
                end;
                //else writeln('Nie posiadasz tyle many!');
        end;

end;
BEGIN
clrscr;
zmienne;
powitanie;
        repeat
        clrscr;
        czar;
        tura_braci;
        droga;
        droga_czy;
        writeln('Twoje polozenie ',x,' , ',y);
        writeln('Zdrowie ',hp,' Punkty magi ',mana,' Doswiatczenie ',exp,' Poziom ',lvl,' Zoto ',gold);
        awans;
        if i='g' then writeln(gral_x,gral_y);
        readln(i);
                if (x=gral_x) and (y=gral_y) then begin writeln('Zdobyles grala'); i:='Koniec';  end;
                if gral='wilko' then begin writeln('Gral zostal zdobyty przez Wilkobrodego. Jego polozenie to ',gral_x,' ',gral_y); i:='Koniec'; end;
                if gral='chudy' then begin writeln('Gral zostal zdobyty przez Chudego lisa. Jego polozenie to ',gral_x,' ',gral_y); i:='Koniec'; end;
                if gral='anna' then begin writeln('Gral zostal zdobyty przez ZotowosĄ Anne. Jego polozenie to ',gral_x,' ',gral_y); i:='Koniec'; end;
              if i='Pomoc' then pomoc;
        until i='Koniec';
        writeln('Podsumowanie:');
        writeln('Zdobyles ',lvl,' poziom dowiatczenia.');
        writeln('Wilkobrody zdobyl ',lvl*2,' poziom dowiatczenia.');
        writeln('Chudy Lis zdobyl ',lvl/2,' poziom dowiatczenia.');
        writeln('Zlotowlosa Anna zdobyla ',lvl+3,' poziom dowiatczenia.');

        writeln('Wilkobrody ostatnio byl w ',wilko_x,' ',wilko_y);
        writeln('Chudy Lis ostatnio byl w ',chudy_x,' ',chudy_y  );
        writeln('Zlotowlosa Anna ostatnio byla w ',anna_x,' ',anna_y);

        writeln('Gral znajdowal sie w ',gral_x,' ',gral_y);

        readln;
END.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Nie wiem jak w nowszych kompilatorach pascala, ale kiedyś trzeba było dawać przed użyciem funkcji random "Randomize;", bo inaczej program losował zawsze tą samą liczbę przy każdym uruchomieniu.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

no luzik gierka tylko na początku zamiast

 

}
By boro Casso
}

 

daj

 

{
By boro Casso
}

:jezor:

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Ta... Jak ja sobie przypomnę, jak ja robiłem kiedyś gry w Pascalu... xD Nie no, teraz to się wydaje denne, bo w Pascalu jest ten właśnie jeden mały szkopuł, że od pierwszej linii trzeba wszystko mu dokładnie zadeklarować i mało tego, dodać jeszcze masę dodatkowych warunków, by się nie pogubił albo co gorsza coś źle przeliczył...

 

I to w istocie, bo jeśli porównacie go z innymi tego typu językami niskopoziomowymi, to zobaczycie, że jest na prawdę fatalnym językiem pod względem składni, a jego 'konkurenci są dużo bardziej 'elastyczni, prostsi w intetrpretacji (tej składniowej, nie maszynowej ;p), no i wszsytko ładnie, pięknie i na temat :P Już nie będę porównywał tu Pascala do innych, wysokopoziomowych, czasem nawet jeszcze bardziej kitowych jednoskładniowców typu te Bashe, Perle, EBS-y i inne, bo to trochę nie na temat... Heh.

 

No a co do przykładu to wygląda mi na solidną pracę... Wtedy tak na poważnie, "z zamiłowania", a nie z obowiązku zaczynać taki większy projekt w Pascalu, to była na prawdę trudna sprawa... A z tego mógłby być duży projekt :P Gratz :)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Nawet zacne, daj to ktos w exe chce se w to pograc, a juz pascala nie mam na kompie

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Hah, każdy chyba kiedyś robił takie gierki w Basicu ^w^ Za swoją dostałem własną stację dyskietek <3

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Coś podobnego robił kryniak, tyle że w C++ :)

 

Fajna gierka dzisiaj zacznę robić podobną w QBasicu :P

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Heh a ja zrobie takie cos w c++ allegro :D z fotkami bedzie itp za kilka dni opanuje to allegro i bedzie git

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×