Archived:Criando um simples jogo em Flash Lite utilizando somente uma tecla
Não recomendamos o desenvolvimento em Flash Lite para aparelhos atuais da Nokia. Todos os artigos relacionados a Flash Lite foram arquivados. A plataforma Nokia Asha e os aparelhos recentes S40 não possuem mais o Flash Lite. O uso de Flash Lite em Symbian é limitado. Por exemplo, informações relativas à plataforma Nokia Belle podem ser encontradas neste link (em Inglês). Informações específicas de Flash Lite para aparelhos S40 ANTIGOS e Symbian podem ser encontradas na Flash Lite Developers Library (em Inglês).
Dados do artigo
Exemplo de código
Artigo
Contents |
Introdução
Neste artigo, eu descrevo como criar um simples jogo em Flash Lite 2.0 chamado de Heli. Heli é um jogo clássico dos vídeo games que é jogado por muitos jovens e adultos loucos por vídeo game. Neste artigo, você verá como escrever a lógica para esses tipos de jogos.
O Jogo
O jogo é muito simples de jogar. Você tem que controlar um helicóptero e fazer uma longa viagem. O tamanho desta viagem é indefinida. Durante a sua viagem você tem que evitar que o helicóptero colida com os obstáculos que aparecerão. Quanto mais obstáculos você desviar, maior é o sua pontuação. simples, não é?
Visão do código do jogo
Nós precisamos controlar o helicóptero(instanciado com nome heli, obviamente) com uma simples tecla. Movimentos laterais não são permitidos pelo heli. Pessoalmente, eu gosto de controlar o heli usando teclas como * ou #. Este viciante jogo fica melhor quando não é utilizado as teclas convencionais e fica mais conviniente utilizar as teclas do canto para controla-lo. Ok, vamos de volta ao código. Quando nós pressionamos a tecla * (representado pelo número 56 no código abaixo), o heli ganha altitude e quando nada é pressionado ele perde altitude.
Invalid language.
You need to specify a language like this: <source lang="html4strict">...</source>
Supported languages for syntax highlighting:
4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, asm, asp, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, oobas, oracle11, oracle8, oxygene, oz, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, python, q, qbasic, rails, rebol, reg, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, sql, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, uscript, vala, vb, vbnet, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic
if (Key.isDown(56)) {
heli._y -= Heli_Spd; //ganha altitude
} else {
heli._y += Heli_Spd; //perde altitude
}
Além disso, nós também temos obstáculos ou paredes movendo-se constantemente da direita para a esquerda. Esta velocidade, precisa ser configurada no jogo e ficará ao seu critério. Como o movimento acontece constantemente nós precisamos adicionar o código de movimento dentro da função onEnterFrame. Nós devemos identificar quando um obstáculo chega no lado esquerdo da tela para que possamos move-la para o lado direito novamente. Isto dará a ilusão que surgem novos obstáculos, mas na verdade estamos simplesmente utilizando o mesmo. O local inicial dos obstáculos são arbitrários, preferivelmente com espaços aleatórios além da tela do lado direito. As seguintes objetos, w1, w2, w3 são os obstáculos, veja o código abaixo.
Invalid language.
You need to specify a language like this: <source lang="html4strict">...</source>
Supported languages for syntax highlighting:
4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, asm, asp, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, oobas, oracle11, oracle8, oxygene, oz, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, python, q, qbasic, rails, rebol, reg, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, sql, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, uscript, vala, vb, vbnet, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic
onEnterFrame = function () {
w1._x -= Speed;
w2._x -= Speed;
w3._x -= Speed;
if (w1._x+w1._width<0) {
Score++;
w1._x = randRange();
w1._y = randRangeY();
}
if (w2._x+w2._width<0) {
Score++;
w2._x = randRange();
w2._y = randRangeY();
}
if (w3._x+w3._width<0) {
Score++;
w3._x = randRange();
w3._y = randRangeY();
}
// 56 é o código para o *
if (Key.isDown(56)) {
heli._y -= Heli_Spd;
} else {
heli._y += Heli_Spd;
}
};
Checando colisão
Você precisa checar a colisão do heli com os obstáculos frequentemente ou a cada curto intervalo de tempo, por exemplo, 100ms. Então, para isso faça a checagem da colisão usando a função setInverval. Para checar as colisões entre os obstáculos, use o hitTest() e para checar colisões com as paredes(superior e inferior), compare a posição y do heli. Lembre-se, uma vez acontecida a colisão deixe o heli invisível e adicione no lugar dele uma simples explosão em formato GIF.
Invalid language.
You need to specify a language like this: <source lang="html4strict">...</source>
Supported languages for syntax highlighting:
4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, asm, asp, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, oobas, oracle11, oracle8, oxygene, oz, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, python, q, qbasic, rails, rebol, reg, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, sql, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, uscript, vala, vb, vbnet, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic
id = setInterval(checkColl, 100);
function checkColl() {
coll = false;
if (heli._y<=44) { //verificando se colidiu com a parede superior
coll = true;
}
if ((heli._y+heli._height)>=166) { //verificando se colidiu com a parede inferior
coll = true;
}
if (heli.hitTest(w1) || heli.hitTest(w2) || heli.hitTest(w3)) {
coll = true;
}
if (coll) { //se houve colisão
trace("Coll");
heli._visible = false;
clearInterval(id);
xplod._x = heli._x ;
xplod._y = heli._y -15;
xplod.play();
}
}
Atualizando a pontuação
Para fazer a pontuação, apenas conte o número de obstáculos que chegaram no lado esquerdo da tela (_x = 0 ). Mostre a pontuação em um dynamic text field inserido no canto superior-esquerdo da tela. Lembre-se, também, que as melhores pontuações podem ser salvas em um arquivo local.
Outras observações
-- Use imagens em PNG para o Heli pois o background não deve ser visto. -- Armazene as melhores pontuações, isto aumentará o interesse dos jogadores. -- Sempre tenha uma tela de menu no início. -- Permita que o usuário saia da aplicação em qualquer tela do jogo. -- Este artigo descreve somente a lógica do jogo. A parte gráfica, não está dentro do escopo deste artigo.
Download
Você pode baixar o .Fla, Media:heli.zip.


(no comments yet)