| Flash Tutorijal : Napravite igricu zmijica Autor : Valerija Spasojević |
U ovom tutorijalu naučićete kako da napravite igricu zmijica. Tutorijal spada u napredne pa se neću osvrtati na osnove Flasha.
Korak 1
Uđite u Flash, izaberite Action Script 2.0, postavite dimenzije 550x450 i 40 fps.
.png)
Korak 2
.png)
Korak 3
Selektuje pozadinu i konvertujte u Movie Clip. Zadajte Instance name “pozadina”, zatim sve layere pretvorite u Movie clip, samo Instance name promenite. Za glavu stavite “glava”, za telo>”telo” i za mrtvu glavu>”mrtva_glava”, hrana>”hrana”.
.png)
Korak 4
Uđite u Movie clip glava i na prvi frame dodajte Action.
stop();
Napravite novi Keyframe. Dodajte Movie clip mrtva_glava, pozicionirajte na isto mesto gde je i glava, vratite se na glavnu scenu i odatle izbrišite layer Mrtva glava.
.png)
Korak 5
Dodajte tekst ispod pozadine u desni ugao i pratite podešavanja sa slike: var nek bude rezultat, kliknite zatim na Embed i izaberite Numerals.
.png)
Korak 6
Sada ćemo dodati instrukcije u levi deo. Pratite opet podešavanja sa slike.
.png)
Korak 7
Uzmite Rectangle tool, napravite pravougaonik određene veličine i unesite tekst. Konverujte sve u Movie Clip, postavite na sredinu Registration Point, zadajte Instance name “popup”.
.png)
Korak 8
Uđite u Movie Clip popup, dodajte Dynamic text, napišite ispod “Nova igra” i možete da uokvirite sa Rectangle. Konvertujte u Button, Instance name “ponovo”.
.png)
.png)
Korak 9
Uđite u dugme, napravite da kada se pređe preko njega potamni. Završili smo vizuelni deo sada su na redu kodovi.
.png)
Korak 10
.png)
setupgame()
function setupgame() {
glava.gotoAndStop(1)
direction = ''
if (telay) {
for (i=telay.length-1;i > 0; i--) {
removeMovieClip(eval('telo'+i))
}
}
popup._visible = false
telo._visible = false
do {
hrana._x = pozadina._x + Math.floor(((pozadina._width-hrana._width)/hrana._width)*Math.random())*hrana._width
hrana._y = pozadina._y + Math.floor(((pozadina._height-hrana._height)/hrana._height)*Math.random())*hrana._height
glava._x = pozadina._x + Math.floor(((pozadina._width-hrana._width)/hrana._width)*Math.random())*hrana._width
glava._y = pozadina._y + Math.floor(((pozadina._height-hrana._height)/hrana._height)*Math.random())*hrana._height
} while(glava._x == hrana._x && glava._y == hrana._y);
framecount = 0;
rezultat= 0
game = true;
telax = new Array();
telay = new Array();
telax.push(glava._x)
telay.push(glava._y)
}
Korak 11
Ova funkcija ne izvršava se na svakom frejmu već na svakih pet proverava da se zmija ne krece izvan okvira i pomera se u skladu sa novim delovima tela na novu poziciju, zatim jede koristeći fuknkciju eat(), a onda proverava da li je zmija udarila od zidove.
this.onEnterFrame = function () {
if (game) {
if (framecount/5 == Math.ceil(framecount/5)) {
if (!(glava._y <= pozadina._y && direction == 'up') && !(glava._y+glava._height >= pozadina._y+pozadina._height-2 && direction=='down') && !(glava._x+glava._width >= pozadina._x+pozadina._width - 2 && direction =='right') && !(glava._x <= pozadina._x && direction == 'left'))
{
telay[0] = glava._y
telax[0] = glava._x
for (i=telay.length-1;i > 0; i--) {
eval('telo'+i)._y = telay[(i-1)]
eval('telo'+i)._x = telax[(i-1)]
telay[i] = eval('telo'+i)._y
telax[i] = eval('telo'+i)._x
}
}
if (hrana._x == glava._x && hrana._y == glava._y) {
eat()
}
if (direction) {
if (direction == 'up') {
if (glava._y <= pozadina._y) {
dead()
}
else {
glava._y-= glava._width
}
}
else if (direction == 'down') {
if (glava._y+glava._height >= pozadina._y+pozadina._height-2) {
dead()
}
else {
glava._y+= glava._width
}
}
else if (direction == 'right') {
if (glava._x+glava._width >= pozadina._x+pozadina._width - 2) {
dead()
}
else {
glava._x+= glava._width
}
}
else if (direction == 'left') {
if (glava._x <= pozadina._x) {
dead()
}
else {
glava._x-= glava._width
}
}
}
if (game) {
if (insideSnake(glava._x,glava._y,true)) {
dead()
}
}
}
framecount++
}
}
Korak 12
keyListener = new Object();
keyListener.onKeyDown = function () {
keycode = Key.getCode()
if (keycode == 37) {
direction = 'left'
}
else if (keycode == 38) {
direction = 'up'
}
else if (keycode == 39) {
direction = 'right'
}
else if (keycode == 40) {
direction = 'down'
}
};
Key.addListener(keyListener);
Korak 13
Sada ćemo definisati da kada se završi igra da se ispiše rezultat u popup prozoru.
function dead() {
popup.rezultat= 'Rezultat: '+(telax.length-1)
popup.swapDepths(this.getNextHighestDepth())
popup._visible = true
glava.gotoAndStop(2)
game = false;
}
Korak 14
Sada smo uradili da se ispisuje novi rezultat kad se pojede hrana i da se hrana pomera. Takođe da se po koordinatama ređaju novi delovi tela.
function eat() {
duplicateMovieClip(telo,'telo'+telay.length,this.getNextHighestDepth())
glava.swapDepths(this.getNextHighestDepth())
eval('telo'+telay.length)._y = eval('telo'+(telay.length-1))._y
eval('telo'+telax.length)._x = eval('telo'+(telay.length-1))._x
telay.push(eval('telo'+telay.length)._y)
telax.push(eval('telo'+telax.length)._x)
do {
hrana._x = pozadina._x + Math.floor(((pozadina._width-hrana._width)/hrana._width)*Math.random())*hrana._width
hrana._y = pozadina._y + Math.floor(((pozadina._height-hrana._height)/hrana._height)*Math.random())*hrana._height
} while(insideSnake(hrana._x,hrana._y));
rezultat= telax.length-1
}
Korak 15
Provera da li glava ujeda svoje telo.
function insideSnake(xneedle, yneedle,skiphead) {
if (skiphead) { startat = 1; }
else { startat = 0; }
for (q=startat; q<telax.length; q++) {
if (telax[q] == xneedle) {
if (telay[q] == yneedle) {
return true;
}
}
}
return false;
}
Korak 16
Kada se igra završi u pop up-u se pojavljuje Nova igra. Ovim kodom smo definisali kada se klikne na dugme da ponovo počne igra.
popup.ponovo.onRelease = function() {
setupgame()
}
| Tara |
| fenomenalna igrica skupila sam 31 kockicu |
| XD |
| gde se nalazi prateci materijal odgovor HITNO |
| Esc |
| Svaka cast , devojka objasnila! |
| ookkii |
| Odlicno. Svaka cast. |
| Simo |
| Ćao.. da li bi mogla da odradiš i za cs4 pošto ja pola funkcija jedva nalazim, drugačije je.. ili ako uradiš, da postaviš ovde u komentare link.. ako ne možeš ovde na tutorijali.rs onda na neki tvoj host pa kao html stranicu odradiš.. može? |
| CS |
| Posjetite 188.40.66.75:27701 |
| JA |
| jesam jesam,, xD ae pokusaj da dodjes danas , vido sam te jutros al sam radio nesto :S |
| Valerija Spasojevic |
| U guzvi sam :/ A ti si Marko? Ako treba nesto od tutorijala salji na mail!:) |
| JA |
| znam dodao sam te :) nego te nema nesto xD |
| Nemanja Spasić |
| Odlično.. |
| Nikolina |
| Srce, ovo si odlicno uradila! |
| Valerija Spasojevic |
| Imam, valerija.spasojevic |
| JA |
| pokidala si ovo.. imam jedno pitanje.. pojavi se skype? :) |
| Igor |
| Vrh! |
| Petar Lalosevic |
| Svaka cast ;) |