Király Gyula: Programozás Quick-Basic nyelven

 

15. lecke

EGYSZERŰ JÁTÉKOK

 

A következőkben néhány egyszerű és jópofa játékot fogunk elkészíteni. A feladatok megoldásai pedig remek programozási gyakorlatot jelentenek.

Eddigi ismereteink alapján a program megjelenését, formáját vonzóan be tudjuk majd állítani, de ez már az önálló leleményességetektől függ.

 

1.      feladat

Készítsünk egy programot, amelyben a gép gondol egy számot 1 és 3 között, mi tippelünk egyet és ha eltaláljuk, akkor nyerünk.

Megoldás:

           

Programterv:

     A gép gondol egy számot (szam)

     Tippelünk (tipp)

     Összehasonlítjuk a kettőt

           

Részletesebben:

            Szam = véletlen(1-3)

     Be: tipp

Ha tipp = szam, akkor Ki: "Nyertél"

Különben Ki: "Vesztettél"

 

 Az IF THEN ELSE parancsok a következőképpen oldják meg a program elágaztatását:

Ha az első feltétel igaz (vagyis tipp=szam), akkor kiírja a program, hogy Nyertél. Minden más esetben az ELSE (különben) ág utasításai hajtódnak végre. Az ELSE ágat az END IF utasítás zárja le.

 

2.      feladat

Módosítsuk az előbbi játékot úgy, hogy ne egy játszmát játsszunk, hanem ötöt, és számoljuk össze az összeredményt!

Megoldás:

Az előző programot egy ciklusba ágyazzuk, melyet 5-ször hajtunk végre, és a találatok számolására bevezetünk egy új változót.

 

Tervezet:

Pont = 0 (kezdőérték)

Ciklus j = 1 -től 5-ig

     szam = véletlen 1-től 3-ig

     Be: tipp

Ha tipp = szam, akkor Ki: "Eltaláltad!"

          Pont = pont + 1

     Különben Ki: "Nem találtad el!"

Várakozás egy billentyű lenyomására.

Ciklus vége

Ki: pont

Ha pont >= 3, akkor KI. "Nyertél"

Különben Ki: "Vesztettél!"


A programban a C$=INPUT$(1)sor valósítja meg a várakozást. A zárójelben megadott szám azt jelzi, hány tetszőleges billentyű megnyomását várja a program. A c$ változóba belekerül ugyan a lenyomott billentyű, de a továbbiakban nincs rá szükségünk. A ciklus utolsó sora, a tartalom nélküli PRINT üres sorral választja el az egyes kérdéseket egymástól.

 

3.      feladat

Kockajáték. Készítsünk programot, amelyben a gép is "dob" egyet, és mi is "dobunk" egyet, és az nyer, aki nagyobbat dob! (Döntetlen esetén a gép nyer.)

Megoldás:

A program egyetlen fő problémája, hogy hogyan oldjuk meg azt, hogy ne a gép dobjon helyettünk. Ennek módszere az, hogy a gép addig készít véletlen számot, és addig jeleníti meg azt a képernyőn (a szám pörög), amíg egy billentyű lenyomásával meg nem állítjuk.

Tervezet:

Gepdob=véletlen(1-6)

Ciklus

      Endob=véletlen(1-6)

      Ki: endob

Amíg nincs lenyomott billentyű

Ciklus vége

Ha endob>gepdob, akkor "Te nyertél"

Különben Ki: "Én nyertem'"

A szám pörgetését egy hátultesztelő ciklussal (DO LOOP UNTIL) oldottam meg, ahol a megállás feltétele az INKEY$<>"" függvény. Ez abban különbözik az előzőleg alkalmazott INPUT$(1)-től, hogy nem várakozik billentyű lenyomására, ezért a ciklus folyamatosan  ismétlődik, míg egy bármilyen billentyűt le nem nyomunk. Vagyis a ciklus addig fut, míg az INKEY$ már tartalmaz valamit, ami nem egyenlő (<>) az üres szöveg ("") értékével. 

 

GYAKORLÓ FELADATOK

1.      Készítsd el az előző 3 program egyikének grafikával és kurzorpozicionálással tökéletesített változatát!

 2.      Módosítsd a programokat úgy, hogy megkérdezze, hogy akar-e még játszani, és ha igen, akkor kezdjük elölről.

 3.      Módosítsd a kockajáték-programot úgy, hogy a döntetlent is kiírja!

 

(Ugrás a Gyakorló Feladatok megoldásához)

Vissza a Tartalomhoz