Skip to content

Instantly share code, notes, and snippets.

@siliconbrain
Last active August 29, 2015 14:22
Show Gist options
  • Save siliconbrain/14cc027b0f07d4dbbbd7 to your computer and use it in GitHub Desktop.
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
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