Boro Casso Opublikowano 26 Lutego 2008 Udostępnij Opublikowano 26 Lutego 2008 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. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marmot Opublikowano 26 Lutego 2008 Udostępnij Opublikowano 26 Lutego 2008 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. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pager Opublikowano 27 Lutego 2008 Udostępnij Opublikowano 27 Lutego 2008 no luzik gierka tylko na początku zamiast } By boro Casso } daj { By boro Casso } :jezor: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
spyro Opublikowano 27 Lutego 2008 Udostępnij Opublikowano 27 Lutego 2008 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 :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Lord Vayaa Opublikowano 27 Lutego 2008 Udostępnij Opublikowano 27 Lutego 2008 Nawet zacne, daj to ktos w exe chce se w to pograc, a juz pascala nie mam na kompie Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ludzix Opublikowano 27 Lutego 2008 Udostępnij Opublikowano 27 Lutego 2008 Hah, każdy chyba kiedyś robił takie gierki w Basicu ^w^ Za swoją dostałem własną stację dyskietek <3 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TuxMan Opublikowano 6 Marca 2008 Udostępnij Opublikowano 6 Marca 2008 Coś podobnego robił kryniak, tyle że w C++ :) Fajna gierka dzisiaj zacznę robić podobną w QBasicu :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Lord Vayaa Opublikowano 6 Marca 2008 Udostępnij Opublikowano 6 Marca 2008 Heh a ja zrobie takie cos w c++ allegro :D z fotkami bedzie itp za kilka dni opanuje to allegro i bedzie git Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie 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ę poniżej.
Zaloguj się