Beruflich Dokumente
Kultur Dokumente
com/groups/jplayIFPI/
JPlay
JPlay uma bibliotecajava desenvolvida naUFRJvoltadaparaodesenvolvimentorpidoefcil de jogos. Contem vrios mtodos e objetosauxiliaresqueoajudaroacriarjogos2Dusandoa linguagemJavaempouqussimotempo.
Resumo
Neste tutorial introdutrio, irei apresentar alguns conceitos bsicosde JPlay implementando o desenvolvimento de um jogo. Bem como falar sobre a configurao do ambiente de programao,algunsconceitosdePOOealgicadetodoojogoapresentadonestetutorial.
Consideraes Iniciais
Primeiramente, este tutorial alm de estar servindo como base para o estudo da biblioteca JPlay,temcomoobjetivoaanlisesemnticadosjogosdesenvolvidos. Para compartilhar informaes, tirar dvidasou se manter informado, acesse nosso grupono facebook:https://www.facebook.com/groups/jplayIFPI/ Ouentreemcontatoporemail:vhv.sousa@gmail.com,elannecristina.santos@gmail.com.
Programas utilizados
Antesdeiniciarmosnossosestudos,precisamosteroeclipseeoJPlay,ambosgratuitos. IDEEclipse:[http://www.eclipse.org/downloads/] FrameworkJPlay:[http://www2.ic.uff.br/jplay/zip/jplay3.rar].
INTRODUOADESENVOLVIMENTODEJOGOSUSANDOJPLAY https://www.facebook.com/groups/jplayIFPI/
Em Project name defina um nome para seu projeto, seguindo sempre este padro: PalavraComposta, ou seja, sem smbolos, espaos, caracteres especiais, acentos e a primeiraletradecadapalavradevesermaiscula.
Nonecessrioalterarmaisnenhumaconfigurao,sendoassim,cliqueemFinish.
Vatapastadeseuprojeto,queficadentrodoseuworkspace,crie2novaspastas:
INTRODUOADESENVOLVIMENTODEJOGOSUSANDOJPLAY https://www.facebook.com/groups/jplayIFPI/
Umachamadalib,queabreviaodelibrary,aquiondeiremoscolocarnossabiblioteca. Aoutrachamadaresources,ondeiremoscolocartodososrecursosdojogo:imagens,sons
Com isto feito, v at oEclipse, abra seu projeto > lib cliquecom o boto direito em cima da bibliotecaeadicioneaoprojeto.BuildPath>AddtoBuildPath.
Pronto,comisto,agorajestamoscomnossoambientedeprogramaoconfigurado.
INTRODUOADESENVOLVIMENTODEJOGOSUSANDOJPLAY https://www.facebook.com/groups/jplayIFPI/
Importando pacotes Classes de diferentes pacotes no so visveis entre si eprecisamser importadasUsaseapalavrareservadaimport.Exemplo:importjplay.Window package x imports Em uma classe, devese: primeiro declarar a que pacote a classe pertenceeposteriormentedeclararasimportaes.Exemplo:
Umasoluoparaesteproblemaautilizaodothis.
This - this uma palavra reservadaquefazreferncia classe ondea mesma est inserida,
sem ser necessria a instanciao desta classe internamente. Isso ilustrado noexemplo a seguir:
INTRODUOADESENVOLVIMENTODEJOGOSUSANDOJPLAY https://www.facebook.com/groups/jplayIFPI/
Neste exemplo a classe Naveest herdando Sprite, agora Navepossuiodireitodeutilizarde todososmtodoseatributospblicosdaclasseSprite.DizemosqueSpritemedeNave. Sobrescrita de mtodos Quando criamos mtodos com o mesmo nome de um mtodo da superclasse. SuperApalavrasuper,refereseasuperclasse.Exemplo:
No exemplo acima, dentro do construtor da classe Nave, estamos chamando o construtor da classeSpriteepassandooparmetroendereco. Casoqueriachamarummtododiferentedoconstrutorbasta:super.metodo(parmetro)
Padro de desenvolvimento
Iremos a seguir apresentar alguns padres de desenvolvimento comoobjetivodetornarnosso cdigomaislegvel,otimizadoefacilitandoamanutenoeacorreodepossveiserros. Algumasprticas: Possuirumpacoteparacadajogocriado Escritadecomentriosaolongodocdigo Mtodos e variveis devem ser iniciadas com letra minscula, e a partir da segunda palavrainiciarcomletramaiscula.exp:variavel,metodoComMaisDeUmaPalavra() Classes devem ser escritas com letras iniciais maiusculas, seguindo o mesmo padrao donomedoprojeto.
INTRODUOADESENVOLVIMENTODEJOGOSUSANDOJPLAY https://www.facebook.com/groups/jplayIFPI/
Ciclopadrodedesenvolvimento: Possuir uma classePrincipal,nesteserchamadooconstrutordaclassequecontmo comportamentodojogo Possuir uma classe Jogo onde ir conter o que acontece no jogo. Onde so instanciados, inicializados todos os objetos usados no jogo e aplicados todos os mtodosqueirodefinirocomportamentodojogo. Paracadapersonagemeobjetodojogodevesercriadoumaclasse.
EsteoesqueletodenossaclasseJogo.
INTRODUOADESENVOLVIMENTODEJOGOSUSANDOJPLAY https://www.facebook.com/groups/jplayIFPI/
Classe Sprite. Possui mtodos que podem fazer a imagem se locomover pela tela e de animao.Osmtodosqueiremosutilizarsoosseguintes:
publicSprite(StringfileName,intnumFrames) publicSprite(StringfileName) publicvoidmoveX(doublevelocidade) publicvoidmoveY(doublevelocidade) Recebe por parmetro o endereo da imagem que serexibidaeonmerodeframesqueelacontm Basta passar o endereoda imagem aserexibida, onmerodeframesautomaticamenteser1 Move o Sprite na tela somente no eixo x. Utiliza o teclado.Porpadroasteclasdirecionais Move o Sprite na tela somente no eixo y. Utiliza o teclado.Porpadroasteclasdirecionais
PosicionandoumSpritenatela Para posicionarmosumdesenhonatela,primeiramenteprecisamosconhecercomofuncionao posicionamentodeobjetospelatela. Primeiramente, imagine atelacomoumplanocartesiano,com2eixos:oxparaasabscissase oeixoyparaasordenadas.Anicadiferenaparanossoplanocartesianoquea posio(0,0) fica no canto superior esquerdo, e a medida que o objeto vai se movendo para esquerda ou parabaixo,estevalorvaiaumentando,comoilustradoaseguir:
INTRODUOADESENVOLVIMENTODEJOGOSUSANDOJPLAY https://www.facebook.com/groups/jplayIFPI/
Aposioxdopersonagemacima400esuaposioy300.
Conhecendo o jogo
Iremos desenvolver uma parte do famoso jogo de atari: SpaceInvaders. Este um jogo relativamente simples onde o player controla uma nave e e atira nasnavesinimigas a fim de ganharpontos. Nosso jogo ser muito semelhante ao original, a diferena ser que a nave inimiga no atira, nomorreeficaandandodeumladoaooutronatela.
INTRODUOADESENVOLVIMENTODEJOGOSUSANDOJPLAY https://www.facebook.com/groups/jplayIFPI/
importante observar o uso do mtodo update(). Esse mtodo da classe Window usado paramostrarasatualizaesfeitasesempredeveserchamadoporltimo. PararodarnossojogobastaapertarCTRL+F11ou .
EsteerrofoiocasionadoporquetodasasclassesqueherdamdeSpritesoobrigadasacriar umconstrutorpadroquepasseporparmetroumaString.
INTRODUOADESENVOLVIMENTODEJOGOSUSANDOJPLAY https://www.facebook.com/groups/jplayIFPI/
Feitoisto,vamosagorafazeromesmoparaospersonagensInimigoeBala. Nossoinimigo Nossaclasseinimigavaiconter Oqueprecisamossabersobrecolises? Bem, para descobrirmos se um objeto colidiu com outro voc pode usar o mtodo: boolean collided(GameObject). O mtodo booleancollided(GameObject),retornatruesehouvercoliso,aocontrrio,retorna false.Exemplo:
Criandoumabalaefazendosuacoliso Criado a classe bala e seu construtor, vamos criar um objeto do tipo bala na classe Jogo, inicializar ela edesenhalanatela.Assimcomoagentefezcomospersonagens.Porem,no necessrio inicializar as coordenadas da bala (x,y) pois os mesmos dependem daposio da nave. Entendendo melhor o funcionamento de nossa bala, ela ir partirdo canhodanaveeirsubir verticalmente at atingir a nave inimiga ou o cabealho. Implementando nossa classe, ela ir ficarmaisoumenosassim:
10