×
Namespaces

Variants
Actions

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

From Nokia Developer 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 10:25.
92 page views in the last 30 days.
×