Piškvorky v Imagine (1)

V projekte Piškvorky bude vašou úlohou naprogramovať hru Piškvorky.

Piškvorky sa hrajú na štvorčekovanom papieri.  Hráči sa navzájom striedajú, v každom polťahu hráč na ťahu nakreslí na hrací plán svoj symbol. Ak vodorovne, zvislo alebo po niektorej uhlopriečke je päť rovnakých symbolov vedľa seba, hráč vyhral.

Na obrazovke budú dve tlačítka: Hráč proti PC a Dvaja hráči. Najprv naprogramujeme hru pre dvoch hráčov.

Čo má vetva programu Dvaja hráči robiť?

  1. Kliknutím na tlačítko Dvaja hráči, sa obrazovka zmaže, vykreslí sa štvorčeková sieť.
  2. Zobrazí sa, ktorý hráč je na ťahu.
  3. Hráč  posunie myš na políčko, na ktorom chce nakresliť svoj symbol.
  4. Po kliknutím ľavým tlačítkom myši, ak je to možný ťah,  sa jeho symbol nakreslí na hrací plán, ak ťah možný nebol opakuje sa 3.
  5. Program otestuje, či nie je päť rovnakých symbolov vedľa seba.
    a) ak je 5 rovnakých symbolov, vypíše sa, že hráč vyhral, ozve sa víťazoslavná fanfára, prípadne sa označia víťazné symboly, škrtnutím pätice víťazných symbolov.
    b) ak nie je 5 rovnakých symbolov, premenná hráč sa zmení z 1 na 2 alebo z 2 na 1. Opakuje sa bod 2.

Krok 1 naprogramujeme ako jedinú procedúru. Nazvime ju init, okrem hracej plochy v nej nastavíme počiatočné hodnoty premenných, ktoré budeme v budúcnosti potrebovať.

Kroky 2. až 5. schováme do procedúry, ktorú nazveme Ťah.

Procedúra Ťah

Procedúra Ťah sa spustí vždy, keď niektorý hráč klikne ľavým tlačítkom myši, na aktívnej stránke. Zobrazíme si pamäť, vpravo sa  zobrazia všetky objekty, ktoré projekt obsahuje, klikneme na objekt stránka1. Zobrazí sa okienko s vlastnosťami objektu stránka1. Klikneme na záložku Udalosti, klikneme na tlačítko Pridaj, zobrazí sa zoznam možných udalostí, na ktoré môže program reagovať, nájdeme položku PriKliknutí, do okienka vedľa názvu udalosti napíšeme príkaz, ktorý sa má vykonať, keď používateľ klikol myšou. V našom prípade to bude príkaz Ťah.

Nakreslenie symbolu hráča

Po kliknutí myšou potrebujeme zistiť, kde sa nachádza kurzor myši. Na to slúži procedúra pozmyši. Napíšte do príkazového riadku píš pozmyši a stlačte Enter, vypíše sa napríklad -105 89, pokiaľ napíšeme iba pozmyši a stlačíme Enter, vypíše sa Neviem čo robiť s [-105 89]. Procedúra pozmyši vracia dvojprvkový zoznam, prvá položka v zozname je súradnica X a druhá Y.

Procedúra Krížik

Vstupný parameter  bude buď jeden , nazveme ho kam – bude to dvojprvkový zoznam, alebo to môžu by dva parametre x a y.

V prvom prípade by hlavička procedúry vyzerala takto: viem Krížik :kam

v druhom prípade by to bolo: viem Krížik :X :Y

Korytnačku presunieme na pozíciu :X :Y, musíme zdvihnúť pero, inak by za sebou zanechala stopu. Dáme pero dole, otočíme korytnačku o 45 stupňov, posunieme sa niekoľko krokov dopredu, vrátime sa o dvojnásobok krokov dozadu, posunieme sa späť do východzieho bodu, otočíme sa o 90 stupňov a vykonáme tie isté príkazy. Korytnačku znova nasmerujeme nahor otočením o -135 stupňov.

Celá procedúra Krížik môže vyzerať takto:

viem Krížik :kam
peroHore
nechPoz :kam
peroDole
vpravo 45 dopredu 10 dopredu -20
dopredu 10 vpravo 90 dopredu 10 dopredu -20
vpravo -135
koniec

Počet krokov dopredu záleží na veľkosti štvorčekov hracieho plánu. Krížik by nemal pretínať strany štvorca, takže jeho čiary by mali byť menšie, než uhlopriečka štvorca a dostatočne veľké, aby ho hráči zreteľne videli.

Procedúra Krúžok

Pre procedúru Krúžok platí všetko čo pre procedúru Krížik. Bude mať rovnaké vstupné parametre, len samotné vykreslenie krúžku bude iné. Krúžok možno nakresliť dvoma spôsobmi (možno vymyslíte aj iné). Môžeme to urobiť príkazom bod alebo kreslením mnohouholníka.

viem Krúžok :kam
peroHore
nechPoz :kam
bod 20
nechFarbaPera „biela
bod 14
nechFarbaPera „čierna
koniec

Druhý variant

viem kruzok :kam
ph
nechpoz :kam
pd
opakuj 180 [vpravo 2 dopredu 0.25]
ph
koniec

Nultá verzia procedúry Ťah

viem Ťah
ak2 hráč=1 [krížik pozmyši urob „hráč 2 ]
[krúžok pozmyši urob „hráč 1]

Nultá verzia projektu Piškvorky je na tejto adrese
Čo už vie? V podstate všetko, čo má vedieť pri hre dvoch ľudských hráčov, len  si musia sami ustrážiť, či už niekto nevyhral, tiež si musia ustrážiť, aby niekto neklikol na už obsadené políčko, podobne sa musia presne trafiť do vnútra štvorčeka, inak bude nakreslený symbol zasahovať  do dvoch alebo viacerých štvorčekov. V tejto verzii korytnačka po nakreslení symbolu hráča čiastočne prekrýva práve nakreslený symbol.

Vašou úlohou na ďalšej hodine bude, prerobiť túto nultú verziu tak, aby:

  • symboly nech sa vykresľujú vnútri štvorčekov,
  • nech program po kliknúť na už obsadený štvorček, nič nenakreslí a nech zostane na ťahu hráč, ktorý vykonal nelegálny ťah
  •  nech program sám zistí, že je vedľa seba päť rovnakých symbolov a teda hráč, ktorý vykonal ťah vyhral
  • odstráňte problém s prekrývaním nakresleného symbolu korytnačkou
  • krúžok aj krížik sú v nultej verzii nakreslené čiernou farbou, bude prehľadnejšie, ak to bude napríklad modrá a červená farba
print

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *