. .. : Swf.hu 1.0 archívum : Swf.hu főoldal >>> : .. .




 
 
SEGÉDLETEK Flash játékok

'All lights' - logikai játék készítése Flash-ben
  feltöltve: 2004.01.01 | szerző: ismeretlen | olvasva: 5123 alkalommal

 
 

Verzió: Flash 5 / szerző: cyberjack

Egy népszerű, 3X3-as négyzet alapú logikai játékot fogunk elkészíteni. A leírás még a Flash 5 idejében készült, de a kód könnyen átírható újabb verziójú ActionScript-re, ha megértjük a technikát. A játék lényege, hogy van egy 3X3-as négyzet, ahol minden egyes négyzetben kétféle jel lehet; vagy egy O, vagy egy x. A játék célja, hogy keverés után, ami a start gombra való kattintással történik minden kis négyzetet x-re kell "forgatni". Viszont ha egy négyzetre rákattintasz, akkor a mellette, felette és az alatta lévő négyzet mintája is átváltozik (persze, ha van ott).

Akkor fogjunk hozzá. Először is szükségünk lesz a kis kockákra a mintáikkal. Ez nem más, mint egy Movie Clip. Ezt csak egyszer kell elkészíteni, amit kilencszer fogunk felhasználni különböző Instance Name-ekkel. A Movie Clipek 2 Frame-ből állnak, mind a két fremnek van egy stop utasítása is (erre azért van szükség, hogy ne kezdjen el loop-olni ).

  


Miután megvan, tegyük fel kilencszer és adjunk nekik Instance Name-eket. Én ezt az egyszerűség kedvéért úgy tettem, hogy a sorokat a-tól c-ig, míg az oszlopokat 1-től 3-ig számozta.

1
2 3
a

a1

a2

a3

b

b1

b2

b3

c

c1

c2

c3

Ha ez megvan, akkor jöhet a lényeg. Készítsünk egy akkora láthatatlan gombot, ami befedi a kis négyzeteket, de nem lóg le róluk. Ezekkel a gombokkal fogjuk a kis négyzeteket utasítgatni. Ezt is csak egy példányban készítjük el, de kilencszer fogjuk felrakni. Minden gomb egy bizonyos négyzethez fog tartozni, eszerint adja ki az utasításokat.
Kezdjük az a1-esel;

On (Release)
  
Begin Tell Target ("/a1")
      Play
   End Tell Target

Elsőként meghívjuk az a1-es Movie Clipet (a bal felső kis négyzet), és kiadunk neki egy Play utasítást (értelemszerűen ez kattintás esetén történik).
   If (a1=1)
      Set Variable: "a1" = 2
   Else
      Set Variable: "a1" = 1
   End If
Minden kockához tartozik egy azonos nevű változó. Bár nem fontos, hogy azonos legyen a neve, de gondolom, így könnyebb azonosítani. Ezekkel fogjuk vizsgálni, hogy sikerült e már kirakni a játékot. A kezdőértékét majd a Start gombbal fogjuk beállítani, most viszont megnézzük az értékét, és ha 1, akkor 2-re változtatjuk, ha 2, akkor 1-re.

Mivel az a1-es kockával együtt az a2-es és a b1-esnek is változnia kell a szabályok szerint, ezért ugyanígy járunk el azoknál is;

   Begin Tell Target ("/a2")
      Play
   End Tell Target
   If (a2=1)
      Set Variable: "a2" = 2
   Else
      Set Variable: "a2" = 1
   End If
   Begin Tell Target ("/b1")
      Play
   End Tell Target
   If (b1=1)
      Set Variable: "b1" = 2
   Else
      Set Variable: "b1" = 1
   End If
 
   If (a1=2 and a2=2 and a3=2 and             b1=2 and b2=2 and b3=2 and            c1=2 and c2=2 and c3=2)

      Begin Tell Target ("/nyertél?")
         Go to and Stop (3)
      End Tell Target
   End If
A továbbiakban leellenőrizzük, hogy minden négyzet a jó állásban van e, és ha igen akkor a nyertél? Instance Neme-ű Movie Clip-et a 3. Frame-re küldjük, itt van kiírva, hogy nyertél, de ha nem, akkor nem történik semmi. (értelemszerűen, ha minden változó értéke 2, akkor a kockák az X- állásban vannak, vagyis az illető nyert.
   Set Variable: "lepes" = lepes+1

End On
És, hogy a versenyszellemnek is adjunk egyet, itt számoljuk a lépéseket (ennek a kezdőértékét is a Startgomb fogja megadni).

Ez lenne az a1-es gomb, no de van még nyolc. Az egyszerűség kedvéért, csak azt sorolom fel, hogy melyik gomb, melyik kockát fogja utasítani, de az .fla mellé teszek egy .txt-t is, amiben minden gomb műveletét leírok, vagy nézd meg itt.

a1 a1, a2, b1
a2 a1, a2, a3, b2
a3 a2, a3, b3
b1 a1, b1, b2, c1
b2 a2, b1, b2, b3, c2
b3 a3, b2, b3, c3
c1 b1, c1, c2
c2 b2, c2, c2, c3
c3 b3, c2, c3

A legfelső layer-ön van egy nyertél? Instance Name-ű Movie Clip. Ez 3 frame-ből áll, mindhárom frame-en egy Stop utasítással. Az első frame-en csak egy szöveges mező van, keret és háttér nélkül. Ez azért van ott, hogy a játék indítása előtt ne lehessen a gombokra kattintani, ugyanis ez letakarja őket. A második frame-en nincsen semmi, játék közben ezen áll a Movie Clip. Végül az utolsó Frame-en van a "Gratulálok, nyertél! Felirat", ez akkor jelenik meg, ha sikerült minden négyzetet az x-re forgatni.

Akkor most jöjjön az a Startgomb.
Egy egyszerű gombról van itt szó, ami viszont érdekes, az a sok utasítás, ami most következik:


On (Release)

   Begin Tell Target ("/nyertél?")
      Go to and Stop (2)
   End Tell Target
Először is a nyertél? -t elküldjük a 2-es frame-re, ahol nincsen semmi, így most már rá lehet kattintani a négyzetek feletti gombokra.
   Begin Tell Target ("/a1")
      Go to and Stop (Random (2)+1)
   End Tell Target
Most jön a keverés. A Random függvénnyel generáltatunk egy számot - (2) - ez 0-át, vagy 1-et ad vissza, így mi mos hozzáadunk 1-et, és elküldjük az a1 Movie Clip-et arra a Frame-re.
   Set Variable: "a1" = GetProperty      ("/a1",_currentframe)
Lekérjük az a1 Movie Clip aktuális Frame-jét. Ez úgyszintén egy számot ad vissza, és mivel 2 Frame-ből áll, így 1-et, vagy 2-őt kaphatunk, ezt az értéket adjuk az a1 változónak, ami egyben a kezdőértéke.
   Begin Tell Target ("/a2")
      Go to and Stop (Random (2)+1)
   End Tell Target
   Set Variable: "a2" = GetProperty      ("/a2",_currentframe)
   Begin Tell Target ("/a3")
      Go to and Stop (Random(2)+1)
   End Tell Target
   Set Variable: "a3" = GetProperty      ("/a3",_currentframe)
   Begin Tell Target ("/b1")
      Go to and Stop (Random(2)+1)
   End Tell Target
   Set Variable: "b1" = GetProperty      ("/b1",_currentframe)
   Begin Tell Target ("/b2")
      Go to and Stop (Random(2)+1)
   End Tell Target
   Set Variable: "b2" = GetProperty      ("/b2",_currentframe)
   Begin Tell Target ("/b3")
      Go to and Stop (Random(2)+1)
   End Tell Target
   Set Variable: "b3" = GetProperty      ("/b3",_currentframe)
   Begin Tell Target ("/c1")
      Go to and Stop (Random(2)+1)
   End Tell Target
   Set Variable: "c1" = GetProperty      ("/c1",_currentframe)
   Begin Tell Target ("/c2")
      Go to and Stop (Random(2)+1)
   End Tell Target
   Set Variable: "c2" = GetProperty      ("/c2",_currentframe)
   Begin Tell Target ("/c3")
      Go to and Stop (Random(2)+1)
   End Tell Target
   Set Variable: "c3" = GetProperty      ("/c3",_currentframe)
Most ugyanezeket megismételjük a többi Movie Clip-el és változóval is.
   Set Variable: "lepes" = 0

End On
És létrehozzuk, megadjuk a lepes változó kezdőértékét is, amivel a lépésszámot fogjuk figyelni.

Még létre kell hoznunk egy Text Field-et, aminek a lepes nevet adjuk, így ebben mindig a lepes nevű változó aktuális értéke lesz majd, vagyis a lépésszám. Ha mindezzel megvagyunk, akár már játszhatunk is :-)

Legközelebb megtanuljuk kirakni, addig is mindenkinek sikeres próbálkozásokat kívánok :-)

 
 
 
 

© Devnet.hu. A segédletek semmilyen formában nem másolhatók, publikálhatók a Devnet.hu és a szerzők közös írásos engedélye nélkül.
 
. .. : Swf.hu 1.0 archívum : Swf.hu főoldal >>> : .. .