Abode Flash – Tenisz Játék készítése

MEGOSZTÁS

Ha tetszett a cikk, akkor nyugodtan oszd meg ismerőseiddel, valószínű ők is örülni fognak neki.

Ebben a fejezetben egy egyszerű játékot készítünk el, ami még a régi tv játékokon is szerepelt. A játékban egy ütő segítségével a labdát vissza kell ütni. Ha a képernyő tetején megy ki a labda, akkor a játékos nyer, míg ha alul, akkor veszít. A játékot a gép ellen fogjuk játszani.

 

A mozi méretét állítsuk 300 x 320 -as méretűre, valamint rajzoljuk meg a játék helyszínét! A pálya szélét két fehér vonal jelzi. Rajzoljuk meg a játékos, illetve a gép ütőjét, ezeket alakítsuk moziklippekké és adjunk instancenevet(geputo, jatekosuto) nekik! 

Ne feledkezzünk meg a lényegről, a labdáról! Ezt is alakítsuk moziklippé, továbbá adjunk ennek is instance nevet(labda)!

 

induláskor a labda irányát véletlenszerűen generáljuk, valamint beállítjuk a labda sebességét. A labdára írjuk az alábbi szkriptet:

onClipEvent (load) {
dx = random (2)*2-1;
dy = random (2)*2-1;
seb=10;
}

 

Gondoljuk át a labda mozgását! Jelölje dx a labda mozgásirányának az x koordinátáját, dy pedig az y koordinátáját! Ha a labda a pálya széléhez ér, akkor visszapattan, azaz a dx pontosan az ellentétére változik, dy pedig nem változik.

Ha a labda valamelyik ütőhöz ér, akkor dy vált előjelet.

onClipEvent (enterFrame) {
if (this._x+dx<20) {
dx=-dx;
}
if (this._x+dx>200) {
dx=-dx;
}
if (this.hitTest(_root.jatekosuto)) {
dy=-dy;
}
if (this.hitTest(_root.geputo)) {
dy=-dy;
}
this._x=this._x+dx*seb;
this._y=this._y+dy*seb;
}

 

Játékunk “tökéletesen” működik, azaz a labda mozog és vissza is pattan a falról, de az ütők nem mozgathatók.

A gép ütője automatikusan követi a labdát, tehát a gép ütőjén szerepeljen a következő:

onClipEvent (enterFrame) {
this._x = _root.labda._x;
}

 

Az ütőnk, azaz a játékos ütője az egeret kell követnie, tehát írjuk a játékos ütőjére a következő kódot:

onClipEvent (enterFrame) {
startDrag (this, true, 50, 315, 170, 315);
}

A lock mouse to center opciót kapcsoljuk be, valamint a vonszolás területét korlátozzuk.

 

Ha valamelyik játékos nem tudja visszaütni a labdát, akkor vége a játéknak. 

A második képkockára ugratjuk a lejátszófejet, ha nyert a játékos, különben a harmadikra.
A második képkockára írjuk ki, hogy nyert, illetve tegyünk fel egy még egy szövegdobozt a vászonra, amit dinamikusan fogunk kezelni. Adjunk ennek a doboznak változónevet is (pont)!

A harmadik képkockán a “vesztettél” felirat szerepel, valamint egy dinamikusan kezelt szövegdoboz. Ennek legyen ugyanaz a változóneve (pont).

Az első képkockán – ahol a játék zajlik – meg kell állítani a lejátszófejet!  Ha vége a játéknak, akkor a végkimenetelnek megfelelő képernyőn is meg kell állítani a lejátszófejet. Írjuk mindhárom képkockára:

stop();

 

 

A képkockákra tegyünk még fel egy-egy gombot, amire rákattintva új játékot kezdhetünk, azaz visszaugratjuk a lejátszófejet az első képkockára.

on (release) {
_root.gotoAndPlay(1);
}

 

Ezek után a játéktéren fogunk dolgozni, álljunk rá az első képkockára. Számoljuk meg, hogy hány ütésváltás történt! Tegyünk fel egy szövegdobozt a vászonra, amelyet dinamikusan fogunk kezelni. Adjunk ennek a szövegdoboznak változónevet(pont)!

A labdán lévő kódot egészítsük ki. Kezdetben a pontszám nulla, ha beleütünk a labdába, akkor a pontszámunk nő. Ezt a pontszám változóban tartjuk nyilván.

A labda load eseményét egészítsük ki:

pontszam=0;
_root.pont=pontszam;

Amikor labda az ütőnkhöz ér, akkor visszapattan, a pontszám nő és növeljük a játék sebességét is..

if (this.hitTest(_root.jatekosuto)) {
dy=-dy;
pontszam++;
seb++;
_root.pont=pontszam;
}

Ha a labda felül megy ki, azaz a labda y koordinátája negatív lesz, akkor a játékos nyert.

if (this._y<0) {
_root.gotoAndStop(2);
}

Ha a labda alul megy ki, azaz a labda y koordinátája nagyobb lesz, mint a vászon magassága (320), akkor a gép nyert. 

if (this._y>320) {
_root.gotoAndStop(3);
}

Ezzel készen is vagyunk : 

 

De lássunk még egy kis extrát : 

 

Mozink már-már tökéletesen működik, azt leszámítva, hogy nem nyerhet a játékos. A gép ütőjén a kódot módosítsuk a következőképp:

onClipEvent (enterFrame) {
if (random<2/(1+_root.labda.pontszam)) {
this._x = _root.labda._x+random(_root.labda.pontszam);
} else {
this._x = _root.labda._x;
}
}

Ha az eddig elért pontszámból számolt értéknél kisebb a generált véletlenszám, akkor az ütő pozíciója véletlenszerűen eltér a labda poziciójától, különben pedig követi a labda x koordinátáját. Tehát a játékosnak lesz valamekkora esélye, hogy megnyerje a játékot.

 

Büszkék lehetünk magunkra ! Elkészítettük életünk első komoly játékát!

Gratulálok ;)

 

Köszönöm a  figyelmet!

Még találkozunk!

MEGOSZTÁS

Ha tetszett a cikk, akkor nyugodtan oszd meg ismerőseiddel, valószínű ők is örülni fognak neki.

HOZZÁSZÓLÁS

Ha nem hagy nyugodni az, amit a cikkben olvastál, akkor nyugodtan írd meg kérdésed vagy észrevételed kommentbe. Így szerzőnk könnyen tud neked válaszolni.

Vélemény, hozzászólás?


Warning: Unknown: write failed: No space left on device (28) in Unknown on line 0

Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/www/clients/client0/web5/tmp) in Unknown on line 0