Človek ne jezi se

Človek ne jezi se

Avtor: Deni Srebrnič

Opis problema

Izdelati smo morali kompletno aplikacijo za igrico Človek ne jezi se. Igra naj bo nastavljena za 4 igralce. Igrico se igra z miško.

Ideja rešitve

Ker je igra Človek ne jezi se namizna igra, sem si najprej moral ustvariti igralno mizo. Predstavljal sem si, da bi mizo gledali iz vrha. Tako sem naredil stezo iz krogov. Figure pa so pobarvani krogi v barvo igralca. Tako sem tudi odpravil problem s premikanjem figur po stezi. Za igranje je tudi potrebna kocka. Tako kot mizo, gledamo tudi kocko iz vrha. Ta kocko sem napravil 6 slikic za vsako ploskev na kocki. Ob pritsitku na kocko se slika spremeni.

Razlaga postopka - Uvod

Na formo v C# sem najprej dodal ploščo na katero rišemo našo igralno mizo. Igralna miza je sestavljena iz steze, po kateri vodimo figure. Koordinate polj na stezi dobimo iz datoteke. Za izris polj imamo tri metode. S prvo metodo preberemo datoteko, kjer so koordinate shranjene in vrnemo nov številski seznam. Druga metoda dobljene koordinate pomnoži s premerom krogov, da dobimo območje, v katerem potem rišemo kroge. Tretja metoda glede na katerem delu steze se nahajamo in glede na velikost območja izrišemo krog. Ker imamo ta polja lepo po vrsti shranjena po seznamih, lahko glede na položaj v seznamu vemo, kje se nahaja določeno polje. Na ta način izrisujemo figure z metodo »izrisIgralca()«.

Razlaga postopka - Igralci

Igralci so določeni s svojim razredom tako kot vsaka figura in met kocke. Razred Figura ima 3 lastnosti:

  1. položaj
  2. del na stezi, kjer se figura nahaja
  3. barva

»Položaj« nam pove na kakšnem polju se figura nahaja. To ugotovimo tako, da pogledamo lego polja v seznamu.

»DelSteze« pove na katerem delu steze smo (hišica, steza, hlev). Na kakšnem delu steze se figura nahaja izvemo tako, da gledamo različne sezname (seznam za vsak del poti).

Figura ima tudi svojo barvo, katera označuje igralca.

Razred Met ima lastnost »številoMetov«, ki nam pove koliko metov še imamo na razpolago.

Vsak igralec ima na voljo 4 figure in določeno število metov. V razredu Igralec najprej naredimo objekt razreda Figura in objekt razreda Met. Ob klicu konstruktorja razreda ustvarimo začetne položaje figur. Razred Igralec ima še pomembne metode za premikanje figur, za izvedeti kje se figura nahaja, za zamenjati barvo figuram, naključno funkcijo za met kocke...

Razlaga postopka - Igra

Sama igra pa je sestavljena tako, da ob metanju kocke premikaš figuro za toliko mest, kolikor je pik na kocki. Vendar vedno ne moreš premakniti vsako figuro. Zato sem v metodi, ki se izvede ob kliku na kocko, simuliral kaj bi se zgodilo, če bi premaknil vsako figuro. Tako ugotovim katere figure lahko premaknem in katere ne. Če figuro lahko premaknem se ta pobarva v rumeno, sicer ostane nepobarvana. Figure pobarvamo tako, da na novo izrišemo figuro z metodo »izrisiIgralca()«.

Za premakniti določeno figuro z miško moramo najprej dobiti koordinate miške ob kliku in pregledati če je bil ta klik sploh na figuro. To ugotovi metoda »izberiFig()«. Ko smo ugotovili katero figuro smo izbrali, pregledamo ali je to figuro možno premakniti. To preverimo v metodi, ki se izvede ob kliku na gumb miške. Metoda preveri ali je ta figura pobarvana v rumeno. Če je to res, jo premakne na določen položaj, če pa figura pride na položaj, kjer se nahaja figura nasprotnika, naša figura nasprotnikovo figuro poje. To opravi metoda »jePojedel()«, ki vrne true, če pride figura na isti položaj kot je figura od nasprotnika.

Za nastavitev nove igra imamo meni, v katerem kliknemo na »Nova igra«. Odpre se nova forma v kateri izberemo število igralcev. Število igralcev se prenese preko modalne forme na glavno formo.

Testni primeri

Kot prvi testni primeri bi si izbral situacijo, ko ne moremo premakniti figure, ker imamo na tistem položaju že eno našo figuro. Figura se že takoj ne pobarva v rumeno. Če hočemo vseeno premakniti figuro, figura ostane na istem mestu. Za drugi primer bi si izrbal situacijo, ko imamo za pojesti nasprotnega igralca. Program se pravilno izvede in igralec poje figuro nasprotnega igralca.

Testni primeri - filmček

0%
0%