Last active
August 29, 2015 14:22
-
-
Save siliconbrain/14cc027b0f07d4dbbbd7 to your computer and use it in GitHub Desktop.
text-based adventure game I wrote with my dad when I was about 10
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
program kaland; | |
uses crt; | |
type szornytip=(nincssz,pupos,boszorkany,pincemester,vampir,hoher); | |
akadalytip=(fal,nyitottajto,zartajto); | |
kincstip=(nincsk,nyakek,korona,gyuru,jogar,gyemantoslada,kehely); | |
fegyvertip=(nincsf,buzogany,bard,kard,landzsa,szekerce); | |
iranytip=(elore,hatra,jobbra,balra); | |
hatizsaktip=record | |
kincsek:array[0..6] of kincstip; | |
fegyverek:array[1..6] of fegyvertip; | |
kulcs:boolean; | |
end; | |
szobatip=record | |
nev:string[20]; | |
leiras:string; | |
falak:array[elore..balra] of akadalytip; | |
szorny:szornytip; | |
fegyver:fegyvertip; | |
kincs:kincstip; | |
jartitt:boolean; | |
kulcs:boolean; | |
end; | |
{Itt adjuk meg az irányok neveit} | |
const iranys:array[0..3] of string[6]=('előre','hátra','jobbra','balra'); | |
szornys:array[0..4] of string[12]=('Púpos','Boszorkány','Pincemester','Vámpír','Hóhér'); | |
fegyvers:array[0..4] of string[9]=('buzogány','bárd','kard','lándzsa','szekerce'); | |
var i,j,f,k,sor,oszlop,esely:integer; | |
irany:iranytip; | |
fegyver:fegyvertip; | |
kincs:kincstip; | |
szorny:szornytip; | |
kastely:array[1..4,1..5] of szobatip; | |
eldugva:boolean; | |
bill:char; | |
hatizsak:hatizsaktip; | |
{Itt írjuk a fegyver felvevő procedure-t} | |
procedure Felvegyuk_e_a_fegyvert(targynev,ellenseg:string;fegyver:fegyvertip); | |
begin | |
writeln('A ',targynev,' ott hever a padlón! Felvegyük?'); | |
repeat until keypressed; | |
bill:=upcase(readkey); | |
if bill='I' then | |
if f<6 then | |
begin | |
hatizsak.fegyverek[f]:=fegyver; | |
f:=f+1; | |
kastely[sor,oszlop].fegyver:=nincsf; | |
writeln('A '+targynev+' a kezedben várja, hogy harcolhasson a ' | |
+ellenseg+' ellen.'); | |
end; | |
end; | |
procedure Felvegyuk_e_a_kincset(targynev:string;kincs:kincstip); | |
begin | |
writeln('A ',targynev,' ott hever a földön! Felvegyük?'); | |
repeat until keypressed; | |
bill:=upcase(readkey); | |
if bill='I' then | |
if k<6 then | |
begin | |
hatizsak.kincsek[k]:=kincs; | |
k:=k+1; | |
kastely[sor,oszlop].kincs:=nincsk; | |
writeln('A '+targynev+' a hátizsákodban van.'); | |
end; | |
end; | |
begin | |
clrscr; | |
randomize; | |
{Itt teremtjük a kastélyt} | |
for sor:=1 to 4 do | |
for oszlop:=1 to 5 do | |
with kastely[sor,oszlop] do | |
begin | |
for irany:=elore to balra do falak[irany]:=fal; | |
{Itt állítjuk kezdőpontra a szoba változóit} | |
szorny:=nincssz; | |
fegyver:=nincsf; | |
kincs:=nincsk; | |
jartitt:=false; | |
eldugva:=false; | |
k:=0; | |
f:=1; | |
with hatizsak do | |
begin | |
for i:=1 to 6 do | |
begin | |
kincsek[i]:=nincsk; | |
fegyverek[i]:=nincsf; | |
end; | |
kulcs:=false; | |
end; | |
end; | |
{Az ajtók állásának megadása} | |
kastely[1,1].falak[jobbra]:=zartajto; | |
kastely[1,1].falak[hatra]:=zartajto; | |
kastely[1,2].falak[hatra]:=zartajto; | |
kastely[1,2].falak[balra]:=zartajto; | |
kastely[1,5].falak[hatra]:=zartajto; | |
kastely[2,1].falak[elore]:=zartajto; | |
kastely[2,2].falak[elore]:=zartajto; | |
kastely[2,2].falak[jobbra]:=zartajto; | |
kastely[2,3].falak[balra]:=zartajto; | |
kastely[2,4].falak[hatra]:=zartajto; | |
kastely[2,5].falak[elore]:=zartajto; | |
kastely[3,1].falak[jobbra]:=zartajto; | |
kastely[3,1].falak[hatra]:=zartajto; | |
kastely[3,2].falak[hatra]:=zartajto; | |
kastely[3,2].falak[balra]:=zartajto; | |
kastely[3,3].falak[hatra]:=zartajto; | |
kastely[3,4].falak[elore]:=zartajto; | |
kastely[4,1].falak[elore]:=zartajto; | |
kastely[4,2].falak[elore]:=zartajto; | |
kastely[4,3].falak[elore]:=zartajto; | |
kastely[1,2].falak[jobbra]:=nyitottajto; | |
kastely[1,3].falak[jobbra]:=nyitottajto; | |
kastely[1,3].falak[balra]:=nyitottajto; | |
kastely[1,4].falak[balra]:=nyitottajto; | |
kastely[1,4].falak[hatra]:=nyitottajto; | |
kastely[1,4].falak[jobbra]:=nyitottajto; | |
kastely[1,5].falak[balra]:=nyitottajto; | |
kastely[2,4].falak[jobbra]:=nyitottajto; | |
kastely[2,4].falak[elore]:=nyitottajto; | |
kastely[2,5].falak[hatra]:=nyitottajto; | |
kastely[2,5].falak[balra]:=nyitottajto; | |
kastely[3,3].falak[jobbra]:=nyitottajto; | |
kastely[3,4].falak[balra]:=nyitottajto; | |
kastely[3,4].falak[jobbra]:=nyitottajto; | |
kastely[3,5].falak[balra]:=nyitottajto; | |
kastely[3,5].falak[elore]:=nyitottajto; | |
kastely[4,2].falak[jobbra]:=nyitottajto; | |
kastely[4,3].falak[balra]:=nyitottajto; | |
kastely[4,3].falak[jobbra]:=nyitottajto; | |
kastely[4,4].falak[balra]:=nyitottajto; | |
kastely[4,4].falak[jobbra]:=nyitottajto; | |
kastely[4,5].falak[balra]:=nyitottajto; | |
{Feltoltes nevekkel:} | |
kastely[1,1].nev:='Kripta'; | |
kastely[1,2].nev:='Kivégzőterem'; | |
kastely[1,3].nev:='Tömlöc'; | |
kastely[1,4].nev:='Borospince'; | |
kastely[1,5].nev:='Lőporbarlang'; | |
kastely[2,1].nev:='Kincstár'; | |
kastely[2,2].nev:='Tükrös Szoba'; | |
kastely[2,3].nev:='Koronázóterem'; | |
kastely[2,4].nev:='Királyterem'; | |
kastely[2,5].nev:='Lovagterem'; | |
kastely[3,1].nev:='Éléskamra'; | |
kastely[3,2].nev:='Boszorkánykonyha'; | |
kastely[3,3].nev:='Kékterem'; | |
kastely[3,4].nev:='Fegyverterem'; | |
kastely[3,5].nev:='Rózsaszín terem'; | |
kastely[4,1].nev:='Baglyok Tornya'; | |
kastely[4,2].nev:='Denevérek Tornya'; | |
kastely[4,3].nev:='Kilátótorony'; | |
kastely[4,4].nev:='Trófeaterem'; | |
kastely[4,5].nev:='Kápolna'; | |
{Feltoltes leirasokkal:} | |
kastely[1,1].leiras:='Túl sok itt a hulla, szerintem minél hamarabb álljunk tovább.'; | |
kastely[1,2].leiras:='A sok koponya se túl gusztusos, de ha az akasztófára nézek, egyenesen belém szorul a levegő.'; | |
kastely[1,3].leiras:='Én nem örülnék neki, ha láncba vernének egy "ILYEN" helyen.'; | |
kastely[1,4].leiras:='Szerintem is hideg van, de egy ilyen pókhálóval átszőtt hely nem túl alkalmas az ivásra.'; | |
kastely[1,5].leiras:='Az üres hordók mögött tényleg jól el lehet bújni, de minek ha nincs mi elől.'; | |
kastely[2,1].leiras:='Jó sok itt az arany, de szerintem ne vigyünk el túl sokat.'; | |
kastely[2,2].leiras:='A tükrök rengetegében könnyű eltévedni, de mi ennél okasabbak vagyunk.'; | |
kastely[2,3].leiras:='Ez egykor bizonyára szép terem lehetett, de mostanára egy kissé elavult.'; | |
kastely[2,4].leiras:='A trón valami nemes fából készülhetett, mert elég jól bírta az idő megpróbáltatásait.'; | |
kastely[2,5].leiras:='A kaland kezdete valamint a bázisunk is ez a szoba lesz.'; | |
kastely[3,1].leiras:='Kár hogy az étel már megpenészedett, mert egy jót lakomázhatnánk.'; | |
kastely[3,2].leiras:='Itt valaha igen érdekes főzeteket kotyvaszthattak, ha ilyen nagy üst kellett hozzá.'; | |
kastely[3,3].leiras:='Cigaretta, ha még nem is volt, pipázni elég jól lehetett ebben a kellemes kis helyiségben.'; | |
kastely[3,4].leiras:='Elég szép fegyvereket találunk a falakon, kár hogy az összeset megette már a rozsda.'; | |
kastely[3,5].leiras:='Ez a terem legjobban egy bordélyra hasonlít.'; | |
kastely[4,1].leiras:='A sok bagoly itt alszik a fejünk fölött. Szerintem nem kellene őket felriasztani.'; | |
kastely[4,2].leiras:='Ennek a sok denevérnek a mi vérünkre fáj a foga, ha jól gondolom.'; | |
kastely[4,3].leiras:='Elég szép innen a falucska amiben ez a kastély is található. Csak az a baj, hogy eléggé kihalt.'; | |
kastely[4,4].leiras:='Jó sok és nehéz serleg van itt. (Csak tudnám, hogy kik nyerték őket?) '; | |
kastely[4,5].leiras:='Szép ez a hely, csak a virágok tűnnek kicsit hervadtnak.'; | |
{Itt töltjuk fel a kastelyt fegyverrel:} | |
for fegyver:=buzogany to szekerce do | |
begin | |
repeat | |
sor:=random(4)+1; | |
oszlop:=random(5)+1; | |
until kastely[sor,oszlop].fegyver=nincsf; | |
kastely[sor,oszlop].fegyver:=fegyver; | |
end; | |
{Itt töltjuk fel a kastélyt kincsekkel:} | |
for kincs:=nyakek to kehely do | |
begin | |
repeat | |
sor:=random(4)+1; | |
oszlop:=random(5)+1; | |
until kastely[sor,oszlop].kincs=nincsk; | |
kastely[sor,oszlop].kincs:=kincs; | |
end; | |
{Itt töltjük fel a kastélyt szörnyekkel} | |
for szorny:=pupos to hoher do | |
begin | |
repeat | |
sor:=random(4)+1; | |
oszlop:=random(5)+1; | |
until ((sor<>2) and (oszlop<>5)) and(kastely[sor,oszlop].szorny=nincssz) and (kastely[sor,oszlop].fegyver=nincsf); | |
kastely[sor,oszlop].szorny:=szorny; | |
end; | |
{Itt dugjuk el a kulcsot} | |
repeat | |
sor:=random(4)+1; | |
oszlop:=random(5)+1; | |
if (sor=1) and (oszlop=2) then | |
eldugva:=true | |
else if (sor=1) and (oszlop=3) then | |
eldugva:=true | |
else if (sor=1) and (oszlop=4) then | |
eldugva:=true | |
else if (sor=1) and (oszlop=5) then | |
eldugva:=true | |
else if (sor=2) and (oszlop=4) then | |
eldugva:=true | |
else if (sor=2) and (oszlop=5) then | |
eldugva:=true | |
else if (sor=3) and (oszlop=3) then | |
eldugva:=true | |
else if (sor=3) and (oszlop=4) then | |
eldugva:=true | |
else if (sor=3) and (oszlop=5) then | |
eldugva:=true; | |
until eldugva; kastely[sor,oszlop].kulcs:=true; | |
{A játék kezdete:} | |
sor:=2; oszlop:=5; | |
repeat | |
with kastely[sor,oszlop] do | |
{Itt iratjuk ki a tudnivalókat:} | |
begin | |
clrscr; | |
textcolor(yellow); | |
writeln(nev); | |
if not jartitt then | |
begin | |
writeln(leiras); | |
jartitt:=true; | |
end; | |
{Itt iratjuk ki az ajtók állását} | |
for irany:=elore to balra do | |
begin | |
if falak[irany]=nyitottajto then | |
begin | |
textcolor(lightgreen); | |
writeln('Van egy nyitott ajtó: ',iranys[ord(irany)]); | |
end; | |
if falak[irany]=zartajto then | |
begin | |
textcolor(lightgray); | |
writeln('Van egy zárt ajtó: ',iranys[ord(irany)]); | |
end; | |
end; | |
{Itt vesszük észre a szörnyeket} | |
if szorny<>nincssz then | |
begin | |
textcolor(red); | |
writeln('Peched van! Itt van a '+szornys[ord(szorny)]+' búvóhelye. Megzavartad, és most téged akar megölni!'); | |
for i:=1 to f do | |
if ord(szorny)=ord(hatizsak.fegyverek[i]) then | |
begin | |
writeln('Szerencsére nálad van a '+fegyvers[ord(hatizsak.fegyverek[i])] | |
+' amivel van némi esélyed a győzelenre!'); | |
esely:=random(100)+1; | |
if esely>10 then | |
begin | |
textcolor(lightred); | |
writeln('A '+szornys[ord(szorny)]+' hörög még egy utolsót aztán feldobja a pacskert. Most !GYŐZTÉL!.' | |
+' Remélem legközelebb is ilyen szerencsés leszel!'); | |
szorny:=nincssz; | |
break; {2015.06.07: ez a parancs hiányzott} | |
end | |
else begin | |
textcolor(lightred); | |
writeln('Most nem volt szerencséd. Majd talán a következő életedben.'); | |
delay(8000); | |
exit; | |
clrscr; | |
end; | |
end | |
else begin | |
textcolor(lightred); | |
writeln('Most nem volt szerencséd. A fegyver még nem volt a birtokodban amikor kellett volna.' | |
+' Majd talán a következő életedben.'); | |
delay(8000); | |
exit; | |
clrscr; | |
end; | |
end; | |
{Itt vesszük fel a kulcsot} | |
if kulcs then | |
begin | |
textcolor(white); | |
writeln('Az ezüstös kulcs a padlón hever! Berakjuk a hátizsákba?'); | |
repeat until keypressed; | |
bill:=upcase(readkey); | |
if bill='I' then | |
begin | |
hatizsak.kulcs:=true; | |
kulcs:=false; | |
writeln('A kulcs a hátizsákodban pihen.'); | |
end; | |
end; | |
{Itt vesszük fel a fegyvereket} | |
textcolor(brown); | |
case kastely[sor,oszlop].fegyver of | |
landzsa: Felvegyuk_e_a_fegyvert('lándzsa','Vámpír',landzsa); | |
kard: Felvegyuk_e_a_fegyvert('kard','Pincemester',kard); | |
bard: Felvegyuk_e_a_fegyvert('bárd','Boszorkány',bard); | |
buzogany:Felvegyuk_e_a_fegyvert('buzogány','Púpos',buzogany); | |
szekerce:Felvegyuk_e_a_fegyvert('szekerce','Hóhér',szekerce); | |
end; | |
{Itt tesszük a kincseket a hátizsákba} | |
textcolor(magenta); | |
case kastely[sor,oszlop].kincs of | |
nyakek: Felvegyuk_e_a_kincset('nyakék',nyakek); | |
korona: Felvegyuk_e_a_kincset('korona',korona); | |
gyuru: Felvegyuk_e_a_kincset('gyűrű',gyuru); | |
jogar: Felvegyuk_e_a_kincset('jogar',jogar); | |
gyemantoslada:Felvegyuk_e_a_kincset('gyémántosláda',gyemantoslada); | |
kehely: Felvegyuk_e_a_kincset('kehely',kehely); | |
end; | |
{Itt mozgunk:} | |
writeln; | |
textcolor(lightcyan); | |
writeln('Add meg merre szeretnél tovább menni:'); | |
writeln; | |
repeat | |
repeat until keypressed; | |
bill:=readkey; | |
until bill=#0; | |
{elore,hatra,jobbra,balra} | |
bill:=readkey; | |
case bill of | |
'H':case falak[elore] of | |
fal: begin | |
writeln('Aúúú! Sajnos ez az irány nem járható.'); | |
delay(3000); | |
end; | |
nyitottajto: begin | |
sor:=sor-1; | |
writeln('Az ajtó recsegve kitárul.'); | |
delay(2000); | |
end; | |
zartajto: if hatizsak.kulcs then | |
begin | |
writeln('A kulcs elfordul a zárban és az ajtó kinyílik.'); | |
delay(3000); | |
sor:=sor-1; | |
end | |
else | |
begin | |
writeln('A kulcs még nincs a birtokodban, ami az ajtókat nyitja.'); | |
delay(3000); | |
end; end; | |
'P':case falak[hatra] of | |
fal: begin | |
writeln('Aúúú! Sajnos ez az irány nem járható.'); | |
delay(3000); | |
end; | |
nyitottajto: begin | |
sor:=sor+1; | |
writeln('Az ajtó recsegve kitárul.'); | |
delay(2000); | |
end; | |
zartajto: if hatizsak.kulcs then | |
begin | |
writeln('A kulcs elfordul a zárban és az ajtó kinyílik.'); | |
delay(3000); | |
sor:=sor+1; | |
end | |
else | |
begin | |
writeln('A kulcs még nincs a birtokodban, ami az ajtókat nyitja.'); | |
delay(3000); | |
end; end; | |
'M':case falak[jobbra] of | |
fal: begin | |
writeln('Aúúú! Sajnos ez az irány nem járható.'); | |
delay(3000); | |
end; | |
nyitottajto: begin | |
oszlop:=oszlop+1; | |
writeln('Az ajtó recsegve kitárul.'); | |
delay(2000); | |
end; | |
zartajto: if hatizsak.kulcs then | |
begin | |
writeln('A kulcs elfordul a zárban és az ajtó kinyílik.'); | |
delay(3000); | |
oszlop:=oszlop+1; | |
end | |
else | |
begin | |
writeln('A kulcs még nincs a birtokodban, ami az ajtókat nyitja.'); | |
delay(3000); | |
end; | |
end; | |
'K':case falak[balra] of | |
fal: begin | |
writeln('Aúúú! Sajnos ez az irány nem járható.'); | |
delay(3000); | |
end; | |
nyitottajto: begin | |
oszlop:=oszlop-1; | |
writeln('Az ajtó recsegve kitárul.'); | |
delay(2000); | |
end; | |
zartajto: if hatizsak.kulcs then | |
begin | |
writeln('A kulcs elfordul a zárban és az ajtó kinyílik.'); | |
delay(3000); | |
oszlop:=oszlop-1; | |
end | |
else | |
begin | |
writeln('A kulcs még nincs a birtokodban, ami az ajtókat nyitja.'); | |
delay(3000); | |
end; | |
end; | |
end; | |
end; | |
until false; | |
end. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment