Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Archived:Criando um simples jogo em Flash Lite utilizando somente uma tecla

From Wiki
Jump to: navigation, search

Archived.pngAquivado: Este artigo foi arquivado, pois o conteúdo não é mais considerado relevante para se criar soluções comerciais atuais. Se você achar que este artigo ainda é importante, inclua o template {{ForArchiveReview|escreva a sua justificativa}}.

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).

Article Metadata

Exemplo de código
Código fonte: Media:heli.zip

Artigo
Tradução:
Por edprado
Última alteração feita por hamishwillee em 14 May 2013
--edprado 15:44, 6 April 2010 (UTC)


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.


Heli ss.JPG


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.

This page was last modified on 14 May 2013, at 07:25.
256 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×