Hirdetés

Scratch-suli: Kártyajáték születik

|

Egy pakli kártya segítségével nem csupán a bűvészek tudnak alkotni, a megfelelő alapok ismeretével a programozók számára is óriási lehetőség rejlik a játékban.

Nem akármilyen hét köszöntött ránk, ugyanis április 4 és 8 között rendezik az első Digitális Témahét programját, amely keretén belül országszerte több száz általános és középiskolában jelenhetnek meg a modern digitális eszközök és szolgáltatásokat az oktatás részeként. A HelloWorld oktatási mozgalmunkkal mi is csatlakoztunk az Emberi Erőforrások Minisztériuma által kiírt kezdeményezéshez, a hét folyamán megosztva a teljes Scratch-suli tananyagunkat, amely segítségével bárki elsajátíthatja a programozás alapjait. Lentebb elolvashatod sorozatunk negyedik részét - ha többre vágysz, gyere vissza holnap is, vagy látogasd meg Robotprogramozó táboraink valamelyikét.



Az idei nyár sem maradhat HelloWorld tábor nélkül! Milyen lesz? Vegyétek a tavalyit, és szorozzátok meg kettővel :) Új helyszínnel, új programokkal és tananyagokkal készülünk. Velünk tartotok?

Közzétette: HelloWorld – 2016. március 3.


Kicsit komolyabban is érdemes körüljárnunk a véletlen generált adatok fogalmát, ha a programozás világába csöppenünk. Rengeteg számítógépes alkotásban megtaláljuk a halmazból randomizáltan kiválasztott elemeket és eseményeket (a játékipar is előszeretettel felhasználja az újrajátszhatóság élményének növelésére a látszólag véletlenszerűen megjelenő objektumokat). Mi az ördög bibliáját hívtuk segítségül a random generált információk problémájának szemléltetéséhez: a különféle kártyajátékok kellő kreativitással a végtelenségig módosíthatók, cikkünkben pedig bemutatjuk, hogy az alapok elsajátítása nem is olyan bonyolult, mint amennyire első pillantásra tűnik.

Előkészületek

Mindössze egy komplett francia kártyapakli képeire lesz szükségünk az első saját leosztás előállításához, melyet egy új, üres szereplő jelmezei mellé töltsünk fel, gondosan ügyelve az egyes lapok sorrendjére. Az elrendezés ugyanis azért lesz kifejezetten fontos, mert később, műveleteink során a kártyák megjelenített képét sorszámuk határozza majd meg, tehát a rangsor okos megválasztásával előnyt kovácsolhatunk lapjaink aktuális állásából. Kedvező elrendezésként most az ásztól haladva a kártyák érték szerinti csoportosításával töltsük fel szereplőnket, ily módon egy egyszerű néggyel osztást követően lapunk sorban elfoglalt helyéből kideríthetjük értékét is (sőt a maradékok figyelésével színeket is könnyedén társíthatunk a kapott eredmény mellé).



Ezt követően készítsünk két másolatot paklinkról, hogy elkezdhessük a munka érdemi részét. Figyeljünk arra is, hogy a jelmezek közé egy hátlapot is helyezzünk, ezzel megkönnyítjük a kártyák elrejtését (a sorba állításnál ez a jelmez kerüljön az utolsó helyre, így nem fog bezavarni a többi kosztüm előhívása során). A [zászlóra kattintás] parancs startblokkja után helyezzük is el a kártya hátoldalát beállító jelmezeket, így a képernyőn most három lefordított kártya pihen, melyek csak arra várnak, hogy kattintásunkra felfedjék magukat. Persze e funkció megvalósításához egy kis programozói varázslatra is szükségünk lesz.

Tárolóban az adatok

Miután szereplőink elfoglalták a színpadot, kezdődhet az előadás, melynek főszereplői a már emlegetett véletlen számok mellett a listák lesznek. Éppen ezért vegyünk is fel mindjárt egy "kivalasztottak" elnevezésű listát, az [Adatok] menüponton belül a [Lista létrehozása] gombra kattintva, itt fogjuk ugyanis eltárolni a véletlenszerűen kiszemelt számokat, és jegyzékünk adatait használjuk majd a lapok képes oldalának megjelenítésére, valamint az eredmény kiszámítására.



A blokkreceptek megalkotása előtt még azért hozzunk létre három változót. Az "i" jelzésű adat a listánk aktuális eleméről segít majd továbblépni, a "kezdo" nevű a képernyőn elhelyezhető kártyák számát határozza meg (tehát ez adja majd a tömb méretét, szóval számoljuk bele azokat a szereplőket is, akik lehetséges, hogy még rejtve várják, hogy valaki 19-re kihúzza őket), illetve vegyünk fel még egy "j" funkciót is, melyben a játékos aktuális pontjait tároljuk. Amint ezek a kiegészítőink a középső sávban várják bevetésüket, kezdhetjük is blokkjaink felépítését. Kattintsunk a [háttér]-re, és hívjuk elő a programozási területet, melynek sivárságát szakítsuk meg egy Start-zászlós nyitó komponens elhelyezésével. A kezdő elem után illesszük be a három változónkat nullázó utasítást, és a "kezdo"-nek adjuk értékül a képernyőn lévő kártyáink számát (ez jelen esetben a három). Hogy minden indítást követően biztosan tiszta lappal várjuk a sorsolást, töröljük az esetlegesen a memóriában rekedt adatokat.



Helyezzünk el egy ismételd blokkot, melynek feltétele a "kezdo" változó legyen, belülre pedig kerüljön a [delete utolsó of kivalasztottak] utasítás. Ha ezzel készen vagyunk, töltsük fel a listánkat elemekkel, azonban ügyeljünk arra, hogy csak egy csomag paklival játsszuk a játékot, vagyis szűrjük az esetlegesen ismétlődő adatokat. Ehhez csupán egy [ismételd eddig] utasítás csatlakoztatására lesz szükségünk, melynek feltételeként vizsgáljuk meg a [kivalasztottak hossza] és a [kezdo] változó értéke közötti kapcsolatot, és egészen egyenlőségig futtassuk a ciklust. Az ismétlőművelet magjaként helyezzünk el egy [i legyen] értékadó műveletet, az átadott értéket pedig generáljuk le a Műveletek funkciókon belül fellelhető [véletlen 1 és 52 között] függvény segítségével. A duplikátumok szűrését a generálás után végezzük el egy [ha-akkor] blokkon belül, melynek feltételeként a [kivalasztottak tartalmazza i] funkció negáltját hívjuk segítségül (a Műveleteken belüli [nem] blokk használatával). A [kivalasztottak] lista megjelenítését követően láthatjuk is a zászlóra kattintásunk eredményét, a számok pedig az ismételt indítást követően újra generálodnak.

Felfedjük a kártyákat

Térjünk vissza a kártyák felületéhez; ha nem szeretnénk folyamatosan a hátlapokat bámulni, itt is lesz egy kis teendőnk. A lapjaink alapértelmezett hátoldalát beállító blokk után csatlakoztassunk egy [várj eddig:] vezérlőelemet, melynek feltételéhez helyezzük el az egérlenyomás figyelését és az egérmutató érintésének detektálását, így csak akkor fordulnak meg a kártyák, ha rájuk kattintunk. Ezt követően pedig a [jelmez legyen] blokkal egészítsük ki a képletünket, melynek értékeként az [item [kártya sorszáma] of kiválasztottak] funkciót adjuk át.

Hirdetés


Már csupán annyi a teendőnk, hogy a megfelelő értékeket is beállítsuk a változó mellé, amit a [ha-akkor-különben] elágazás segítségével valósítunk meg. Feltételként ellenőrizzük, hogy a kapott érték 10-nél kisebb vagy nagyobb, ehhez a [felkerekítés] opción belül helyezzük el a kép megjelenítéséhez használt itemes képletet, melyet még leosztunk néggyel a színeken belüli ismétlődés miatt. Ezt követően az igaz ágban a [j] értékét ezzel a felfelé kerekített értékkel változtatjuk, míg a hamis feltétel útján a betűjeles kártyák egységes elbírálása miatt 10-zel növeljük a változókat. Ha további kártyákat is elhelyezünk asztalunk felületén, akár a bank húzásait is szimulálhatjuk (ne felejtsük el növelni a lista méretét, és egy új, bank változót hozzáadni az összehasonlítás megkönnyítéséhez), és akár eredményt is hirdethetünk, a megvalósításnak már csak fantáziánk szabhat határt.

Lehetőségek a kártyában

Ismételten kicsit elszaladt velünk a ló, miközben pakolgattuk egymásra a Scratch blokkjait, így egy, a leírtaknál sokkal komolyabb szintig jutottunk kártyajátékunk programozásával, amely még rendkívül messze áll a tökéletes megvalósítástól, azonban inspirálóan hathat olvasóinkra. A PC World Pluson megtalálható szoftverünk kapott egy alapvető menüt egy kis zsetonos animációval, ahonnan az [Uj jatek] gombra kattintva kezdhetjük meg a gép elleni BlackJack játszmánkat. Alapvetően két-két kártyát kap a játékos, a lapjainkat egérkattintással fedhetjük fel.

Miután megpillantottuk az osztás során kezünkbe került lapkákat, dönthetünk, hogy megállunk (tehát a [Kesz] gombra kattintunk) vagy kockáztatunk, és húzunk (a [Lapot] billentyű leütésével). Két kártya felvételére van maximálisan lehetőségünk, ha pedig nem léptük túl a bűvös 21-et húzásainkkal, a bank következik, aki a kapott két kártyája mellé még egyet felhúz, amennyiben 16 alatt van a kézben tartott paklijának értéke. Az összesített eredmények tükrében a program végül kihirdeti a győztest.

A sorozat tovább részei:

1 - Kezdjünk el programozni
2 - Támadnak az űrlények
3 - Műveletek bűvkörében
4 - Kártyajáték születik
5 - Többjátékos üzemmód
6 - 3D-s játékkészítés
7 - Extrák a programozáshoz

Hirdetés

Úgy tűnik, AdBlockert használsz, amivel megakadályozod a reklámok megjelenítését. Amennyiben szeretnéd támogatni a munkánkat, kérjük add hozzá az oldalt a kivételek listájához, vagy támogass minket közvetlenül! További információért kattints!

Engedélyezi, hogy a https://pcworld.hu értesítéseket küldjön Önnek a kiemelt hírekről? Az értesítések bármikor kikapcsolhatók a böngésző beállításaiban.