Boa tarde a todos,
J'a faz um bom tempo que n~ao posto nada, n~ao e'?
Bom, estou com pouco tempo e ainda sem internet em casa, por isso n~ao consigo mais postar. Hoje, como 'e sexta e sendo uma exceç~ao, resolvi postar algo. No entanto, vou ser breve. At'e porque n~ao tem muito o que comentar sobre o v'ideo de demonstraç~ao do demo do projeto Kal-El chamado Glowball
'E sinceramente fant'astico.
sexta-feira, 23 de setembro de 2011
sexta-feira, 16 de setembro de 2011
Square-enix reavivando grandes clássicos para Android
Boa tarde leitores,
Como amante dos antigos rpgs como Chrono Trigger, Secret of Mana, Final Fantasy entre tantos outros da geração do SuperNes, foi com grande satisfação que li a notícia no TechCrunch sobre o projeto da Square de desenvolver para o Android alguns dos seus grandes clássicos, em especial Chrono Trigger, o qual joguei milhares de vezes "zerando" e conhecendo todos os possíveis finais muito mais de uma vez.
Espero que o lançamento ocorra logo e que minha tablet também não tarde muito a chegar, afinal a greve dos Correios acabou me pegando em cheio...
Abaixo algumas informações sobre Chrono Trigger com algumas imagens. Espero que curtam e para ler a notícia na íntegra, clique aqui.
História tirada da Wikipedia:
O jogo tem inicio no Reino Guardia, no ano 1.000 AD, Crono é acordado por sua mãe e logo depois ele vai para a Feira do Milênio. Lá, ele conhece uma garota chamada Marle, que se torna sua amiga, e passam a andar juntos.
Na feira eles são convidados a testar a nova invenção de Lucca, melhor amiga de Crono. Essa maquina é um teletransporte, que Crono testa com sucesso, porém Marle ao testa-la, observa que o seu pingente começa a brilhar no instante do funcionamento da máquina, e, de repente, ela é sugada para dentro de um misterioso portal. Lucca então verifica que um portal dimensional foi aberto e Crono decide ir atras de Marle. Ao sair do portal Crono está na "Idade Média" (Middle Ages, 600 DC), onde ele descobre que está no passado e se dirige ao castelo de Guardia. Lá fica sabendo que a 'Rainha Leene, que estava desaparecida, foi encontrada.
Contudo ele descobre que a Rainha Leene encontrada, era na verdade Marle. Lucca também vem para essa época e Marle começa a desaparecer do seu plano de existência. Lucca conclui que Marle na verdade era a Princesa Nadia do tempo deles, e provavelmente uma descendente da Rainha Leene. Como a corte de Guardia encontrou Marle pensando ser Leene, as buscas pela rainha foram suspensas, o que levaria a morte de Leene em um futuro próximo, e por consequência, a de sua descendência inteira, incluindo a própria Marle. Crono e Lucca vão então em busca da verdadeira rainha, para então consertar a história. Eles conseguem cumprir a missão com a ajuda de Frog, um homem-sapo.
Usando a Gate Key de Lucca, Crono leva Marle de volta ao Castelo Guardia de seu tempo. Entretanto, o Chanceler de Guardia acusa Crono de tentar sequestrar a princesa. Como resultado, o chanceler condena Crono à morte. Com a ajuda de Lucca, ele consegue fugir da prisão, e Marle foge junto com eles para um portal que estava escondido na floresta que rodeia o castelo.
Viajando no portal, eles vão parar no futuro (2.300 D.C.), onde o mundo está em ruínas. De um computador dessa época eles vêem um vídeo do ano de 1999 A.D., que mostra um parasita alienígena, chamado Lavos, emergindo do fundo do planeta, e o destruindo completamente. Então, Marle convence Crono e Lucca a continuarem a viajar pelo tempo, a fim de evitar que Lavos destrua o futuro.
Pelo desenrolar do jogo novos amigos entram no time de Crono, como o robô nomeado Robo, uma mulher da pré-história chamada Ayla, e um homem-sapo chamado Frog. Opcionalmente, Magus, um dos antagonistas do jogo, pode entrar no time.
É isso. Para quem tiver a oportunidade de jogar Chrono Trigger, não a deixe escapar. O jogo está no patamar máximo tratando-se de games rpg.
Mais um grande abraço
Como amante dos antigos rpgs como Chrono Trigger, Secret of Mana, Final Fantasy entre tantos outros da geração do SuperNes, foi com grande satisfação que li a notícia no TechCrunch sobre o projeto da Square de desenvolver para o Android alguns dos seus grandes clássicos, em especial Chrono Trigger, o qual joguei milhares de vezes "zerando" e conhecendo todos os possíveis finais muito mais de uma vez.
Espero que o lançamento ocorra logo e que minha tablet também não tarde muito a chegar, afinal a greve dos Correios acabou me pegando em cheio...
Abaixo algumas informações sobre Chrono Trigger com algumas imagens. Espero que curtam e para ler a notícia na íntegra, clique aqui.
História tirada da Wikipedia:
O jogo tem inicio no Reino Guardia, no ano 1.000 AD, Crono é acordado por sua mãe e logo depois ele vai para a Feira do Milênio. Lá, ele conhece uma garota chamada Marle, que se torna sua amiga, e passam a andar juntos.
Na feira eles são convidados a testar a nova invenção de Lucca, melhor amiga de Crono. Essa maquina é um teletransporte, que Crono testa com sucesso, porém Marle ao testa-la, observa que o seu pingente começa a brilhar no instante do funcionamento da máquina, e, de repente, ela é sugada para dentro de um misterioso portal. Lucca então verifica que um portal dimensional foi aberto e Crono decide ir atras de Marle. Ao sair do portal Crono está na "Idade Média" (Middle Ages, 600 DC), onde ele descobre que está no passado e se dirige ao castelo de Guardia. Lá fica sabendo que a 'Rainha Leene, que estava desaparecida, foi encontrada.
Contudo ele descobre que a Rainha Leene encontrada, era na verdade Marle. Lucca também vem para essa época e Marle começa a desaparecer do seu plano de existência. Lucca conclui que Marle na verdade era a Princesa Nadia do tempo deles, e provavelmente uma descendente da Rainha Leene. Como a corte de Guardia encontrou Marle pensando ser Leene, as buscas pela rainha foram suspensas, o que levaria a morte de Leene em um futuro próximo, e por consequência, a de sua descendência inteira, incluindo a própria Marle. Crono e Lucca vão então em busca da verdadeira rainha, para então consertar a história. Eles conseguem cumprir a missão com a ajuda de Frog, um homem-sapo.
Usando a Gate Key de Lucca, Crono leva Marle de volta ao Castelo Guardia de seu tempo. Entretanto, o Chanceler de Guardia acusa Crono de tentar sequestrar a princesa. Como resultado, o chanceler condena Crono à morte. Com a ajuda de Lucca, ele consegue fugir da prisão, e Marle foge junto com eles para um portal que estava escondido na floresta que rodeia o castelo.
Viajando no portal, eles vão parar no futuro (2.300 D.C.), onde o mundo está em ruínas. De um computador dessa época eles vêem um vídeo do ano de 1999 A.D., que mostra um parasita alienígena, chamado Lavos, emergindo do fundo do planeta, e o destruindo completamente. Então, Marle convence Crono e Lucca a continuarem a viajar pelo tempo, a fim de evitar que Lavos destrua o futuro.
Pelo desenrolar do jogo novos amigos entram no time de Crono, como o robô nomeado Robo, uma mulher da pré-história chamada Ayla, e um homem-sapo chamado Frog. Opcionalmente, Magus, um dos antagonistas do jogo, pode entrar no time.
![]() |
Capa do original para Super Nes |
Entrada do jogo |
![]() |
A diversidade de finais e a história de cada personagem são um dos pontos fortes do jogo |
![]() |
Batalha final contra Lavos |
É isso. Para quem tiver a oportunidade de jogar Chrono Trigger, não a deixe escapar. O jogo está no patamar máximo tratando-se de games rpg.
Mais um grande abraço
RPG Destinia para Android
Bom dia leitores,
Ontem vi uma notícia muito legal e gostaria de ter postado ontem, mas como não foi possível devido a falta de tempo, decidi postar hoje sobre um rpg de produção do Gamevil's e que deve ser lançado em breve apesar de nenhuma data ter sido definida.
Destinia é um jogo de RPG também voltado a ação tornando as batalhas mais dinâmicas. No jogo, o jogador é Duke, um soldado imperial que foi preso após não acatar uma ordem imperial de assassinar civis inocentes. Na prisão, Duke é tratado pela princesa Cristal até se recuperar completamente. Os dois decidem formar uma aliança para escaparem da prisão e lutar contra o império. Quando Duke volta à sua cidade natal na esperança de encontrar sua paixão de infância, Lena, ele descobre que sua cidade foi brutalmente ocupada pelas forças imperiais. Por todo o caminho de Duke, perigos inimagináveis espreitam prontos para acabar com a vida do nosso herói.
Para aqueles que gostam de disputar contra os amigos, um sistema de PvP pode render alguns instantes de diversão e zoação com o amigo mais fraco.
Para aumentar "um pouco mais" a cascata de saliva que deve estar saindo da boca de vocês, aqui vai algumas imagens retiradas do site oficial do jogo (us.gamevil.com) e também um vídeo.
Boa diversão!
P.S) As imagens e vídeo referem-se a versão para iPhone e iPod Touch, mas espero que a versão do Android não deixe a desejar para dos seus "primos"
Ontem vi uma notícia muito legal e gostaria de ter postado ontem, mas como não foi possível devido a falta de tempo, decidi postar hoje sobre um rpg de produção do Gamevil's e que deve ser lançado em breve apesar de nenhuma data ter sido definida.
Destinia é um jogo de RPG também voltado a ação tornando as batalhas mais dinâmicas. No jogo, o jogador é Duke, um soldado imperial que foi preso após não acatar uma ordem imperial de assassinar civis inocentes. Na prisão, Duke é tratado pela princesa Cristal até se recuperar completamente. Os dois decidem formar uma aliança para escaparem da prisão e lutar contra o império. Quando Duke volta à sua cidade natal na esperança de encontrar sua paixão de infância, Lena, ele descobre que sua cidade foi brutalmente ocupada pelas forças imperiais. Por todo o caminho de Duke, perigos inimagináveis espreitam prontos para acabar com a vida do nosso herói.
Para aqueles que gostam de disputar contra os amigos, um sistema de PvP pode render alguns instantes de diversão e zoação com o amigo mais fraco.
Para aumentar "um pouco mais" a cascata de saliva que deve estar saindo da boca de vocês, aqui vai algumas imagens retiradas do site oficial do jogo (us.gamevil.com) e também um vídeo.
Boa diversão!
P.S) As imagens e vídeo referem-se a versão para iPhone e iPod Touch, mas espero que a versão do Android não deixe a desejar para dos seus "primos"
quinta-feira, 15 de setembro de 2011
Jogo BrainTrainer para Android – Parte 2
Bom dia a todos,
Primeiro de tudo,
desculpem a demora aí de quase uma semana para postar a segunda
parte do tutorial de como montar um jogo no estilo BrainTrainer
apenas utilizando elementos que já falamos aqui no blog e alguns
conceitos de programação, mas minha rotina está uma doidera e
quase não tive tempo de estudar Android, que o diga montar um post
mais elaborado, mas agora vamos para o que interessa: o Layout!
Lembrando que sou
péssimo em layout, então se vocês, leitores, acharem melhor
trabalhar de uma outra maneira o layout, sem problemas. Aqui passo
apenas o básico, no meu caso tratando-se de layout, seria meu
avançado ¬¬
Vamos listar os
elementos que teremos:
- Um campo <TextView> para a String “Score:”;
- Um campo <TextView> que exibirá o valor da pontuação do jogador;
- Um campo <TextView> que exibirá o valor referente ao primeiro número;
- Um campo <TextView> que exibirá o sinal da operação de acordo com o que tiver sido sorteado;
- Um campo <TextView> que exibirá o valor referente ao segundo número;
- Um campo <EditText> para o usuário digitar a resposta;
- Um campo <Button> onde o usuário irá clicar para enviar a resposta ao sistema e este iniciar as verificações.
Primeiro iremos pensar
nos dois campos que se referem a String “Score:”.
Iremos colocá-los lado a lado. Ou seja, precisaremos de uma maneira
de ao invés de alinhá-los verticalmente, alinhá-los
horizontalmente. Para isso, iremos criar dentro do
principal, outro com uma pequena diferença: ao invés de utilizarmos o atributo android:orientation=“vertical”, utilizaremos o valor da
orientação do layout como horizontal resultando
[i]android:orientation=“horizontal”.
Dentro desse layout
iremos adicionar os dois referentes a pontuação do
jogador. Atente no fato de que precisamos criar um nome de 'id' para
o que exibirá o valor da pontuação do jogador. No
meu caso, utilizei o nome 'score_text', mas isso fica de acordo com
cada um, lembrando que alterando o nome do 'id' no main.xml o
nome no código-fonte também deverá ser alterado. O código xml
ficará similar ao da imagem abaixo:
![]() |
Layout 'header' com orientação horizontal e dois |
Certo. Então criamos o
'header' do nosso jogo. Agora precisamos criar o corpo dele no qual
será exibido os dois números juntamente com o sinal da operação.
Como no passo anterior,
precisaremos criar um com orientação
'horizontal'. Isso porque queremos que apareça o primeiro número,
ao lado dele o sinal e do lado do sinal mostraremos o segundo número.
O código fica semelhante ao do layout anterior, por isso não irei
explicar detalhado.
![]() |
Layout 'body' com orientação horizontal e três |
E por último nosso
layout onde estará o <EditText> e o <Button>. Contudo, o
<LinearLayout> que utilizaremos para os dois componentes
citados terá a orientação 'vertical' assim como seu pai.
![]() |
Layout 'user' com orientação vertical, um <EditText> e um <Button> |
Agora sim. Depois de
terminarmos nosso layout podemos rodar o código e ver como ficou.
Provavelmente algo semelhante a imagem abaixo será exibido e se você
chegou até aqui, agora é só programar as funcionalidades e teremos
um BrainTrainer básico para jogar.
![]() |
Layout final |
Até a próxima e um
grande abraço para todos.
terça-feira, 13 de setembro de 2011
Promoção HostDime 5 anos - Concorra a um iPad2 e muitos outros prêmios
Boa tarde leitores,
Hoje comecei a participar de uma promoção na HostDime e gostaria de pedir a ajuda de vocês para ganhar o prêmio (iPad2 e hospedagem de graça).
Basta clicar aqui e acessar o site do HostDime
Hoje comecei a participar de uma promoção na HostDime e gostaria de pedir a ajuda de vocês para ganhar o prêmio (iPad2 e hospedagem de graça).
Basta clicar aqui e acessar o site do HostDime
segunda-feira, 12 de setembro de 2011
Votem "Dancing Android Robot Man" p/ o quadro Dança dos Famosos
Não deixem de votar para o android participar do próximo "Dança dos Famosos" \o/
O marcante R-Type retorna agora para Android
É nostálgico, eu sei.
Para quem viveu nos anos 90 e teve a oportunidade de conhecer R-Type,
um jogo futurista com gráficos ótimos para a época, com certeza
entendem quando digo que quase senti lágrimas escorrerem pelos meus
olhos ao deparar com a notícia que R-Type estará disponível para
Android.
![]() |
Capa do jogo R-Type |
R-Type foi produzido em
1987 (isso mesmo, bem no ano que nasci) e, pelo menos para mim,
conheceu sua época de ouro nos anos 90. Ainda que hoje em dia os
gráficos estejam muito defasados, R-Type tem o que muitos jogos da
época passada tem: simplicidade caminhando junto com a diversão.
Não estou dizendo que os jogos de hoje são chatos, até porque no
post anterior publiquei um jogo atual (Muffin Knight),
mas também não sou muito fã de jogos 3D.
Como a maioria dos jogos antigos, zerá-lo era quase uma epopéia. Nunca consegui apesar de passar horas na frente da TV e ficar de castigo sem recreio e sem poder brincar na rua por não fazer as tarefas de casa passadas pelas professoras.
Para
fãs de jogos com menos de 20 anos e que não chegaram a conhecer
R-Type, recomendo. Também para os mais velhos que nunca jogaram irão
se surpreender.
sábado, 10 de setembro de 2011
Muffin Knight
Bom dia leitores,
Não vai ser hoje que irei postar a segunda parte do jogo BrainTrainer que havia prometido. Irei explicar o motivo:
Essa semana tem sido muuuito corrida. Outra coisa foi que resolvi tentar mais uma vez utilizar o eclipse para desenvolver para Android e pasmém: não é que eu consegui?!
Pois é, então vou deixar o MotoDev Studio um pouco de lado já que adoro programar no eclipse.
Também tenho uma ótima novidade (pelo menos pra mim):
COMPREI UM TABLET COM ANDROID!!!
Ainda não é definitivo já que comprei no mercado livre e o pagamento vai ser feito apenas na segunda, mas mesmo assim estou muito ansioso para começar a testar minhas aplicações nele.
O tablet é o Tablet Orange Tb002 - Android 2.1 Wifi 3g. Espero que ele seja bom =D
Mas vamos ao assunto do post. Irei falar sobre um jogo que vi ontem e me pareceu ser muito divertido. Vocês logo perceberão que sou fã de jogos 2D e tenho certa birra com jogos em 3D (tudo bem, sei que é errado, mas os 2D são muito mais divertidos).
O jogo se chama Muffin Knight ou traduzindo para o português: Cavaleiro Muffin. Para quem não sabe, Muffin são aqueles bolinhos pequeninos que parecem mais mini-bolos...não sei muito bem como explicar, então aí vai uma imagem, mas nada de babar em cima do teclado.
Pois é, delícia não?
Muffin Knight, pelo vídeo também parece ser uma delícia de jogo. No jogo você é um cavaleiro e à medida que você recolhe os Muffins nas diversas fases, novos poderes e transformações são permitidas ao personagem. Os controles são simples tendo apenas o pulo e atacar.
Abaixo segue o vídeo do jogo e clique aqui caso queira ler a resenha feita pelo site Androinica.com
Não vai ser hoje que irei postar a segunda parte do jogo BrainTrainer que havia prometido. Irei explicar o motivo:
Essa semana tem sido muuuito corrida. Outra coisa foi que resolvi tentar mais uma vez utilizar o eclipse para desenvolver para Android e pasmém: não é que eu consegui?!
Pois é, então vou deixar o MotoDev Studio um pouco de lado já que adoro programar no eclipse.
Também tenho uma ótima novidade (pelo menos pra mim):
COMPREI UM TABLET COM ANDROID!!!
Ainda não é definitivo já que comprei no mercado livre e o pagamento vai ser feito apenas na segunda, mas mesmo assim estou muito ansioso para começar a testar minhas aplicações nele.
O tablet é o Tablet Orange Tb002 - Android 2.1 Wifi 3g. Espero que ele seja bom =D
Mas vamos ao assunto do post. Irei falar sobre um jogo que vi ontem e me pareceu ser muito divertido. Vocês logo perceberão que sou fã de jogos 2D e tenho certa birra com jogos em 3D (tudo bem, sei que é errado, mas os 2D são muito mais divertidos).
O jogo se chama Muffin Knight ou traduzindo para o português: Cavaleiro Muffin. Para quem não sabe, Muffin são aqueles bolinhos pequeninos que parecem mais mini-bolos...não sei muito bem como explicar, então aí vai uma imagem, mas nada de babar em cima do teclado.
![]() | ||
Delícia de Muffin!!!! |
Pois é, delícia não?
Muffin Knight, pelo vídeo também parece ser uma delícia de jogo. No jogo você é um cavaleiro e à medida que você recolhe os Muffins nas diversas fases, novos poderes e transformações são permitidas ao personagem. Os controles são simples tendo apenas o pulo e atacar.
Abaixo segue o vídeo do jogo e clique aqui caso queira ler a resenha feita pelo site Androinica.com
quinta-feira, 8 de setembro de 2011
GetJar Gold disponibiliza apps free
Boa tarde leitores,
Eu sei que hoje já postei, mas não podia deixar passar essa excelente notícia para quem curte o Android.
Pouco depois da Amazon anunciar a promoção da sua AppStore na qual eles darão créditos aos desenvolvedores de apps para Android, o site GetJar anunciou que irá oferecer apps grátis para os usuário do Android. No entanto, para quem pensa que serão oferecidos apenas apps de qualidade duvidosa estarão enganados, pois títulos consagrados como AngryBirds estará disponível para download free.
Como não sei se isso irá durar muito tempo, é melhor aproveitar e já baixar as apps desejadas.
Para ler a notícia oficial, basta acessar o link clicando aqui.
Um grande abraço a todos.
Eu sei que hoje já postei, mas não podia deixar passar essa excelente notícia para quem curte o Android.
Pouco depois da Amazon anunciar a promoção da sua AppStore na qual eles darão créditos aos desenvolvedores de apps para Android, o site GetJar anunciou que irá oferecer apps grátis para os usuário do Android. No entanto, para quem pensa que serão oferecidos apenas apps de qualidade duvidosa estarão enganados, pois títulos consagrados como AngryBirds estará disponível para download free.
Como não sei se isso irá durar muito tempo, é melhor aproveitar e já baixar as apps desejadas.
Para ler a notícia oficial, basta acessar o link clicando aqui.
Um grande abraço a todos.
Jogo BrainTrainer para Android - Parte 1
Bom dia a todos,
Neste post iremos falar
sobre como fazer um joguinho no estilo BrainTrainer,
ou traduzindo ao pé da letra, Treinador de Cérebro. Para não ter
que ficar dando print das telas, irei postar o código inteiro para
download. Assim também facilitamos o tráfego no blog. Outro ponto
importante é que iremos dividir o assunto deste post em três. No
primeiro iremos discutir um pouco sobre o estilo de jogo ao qual
BrainTrainer segue. No
segundo, montaremos o layout do game, isto é, codificaremos o
arquivo 'main.xml'.
Aqui gostaria de deixar uma ressalva: eu
sou péssimo em layout, então o jogo, como vocês poderão notar,
irá ficar com uma cara péssima, mas a jogabilidade ficará boa
(assim espero).
E por último iremos tratar do código da classe principal.
Então
vamos falar um pouco sobre o BrainTrainer
e a ideia que seguiremos para implementar nosso jogo, afinal é muito
importante antes de começar a programar, definir o que será
implementado, as funcionalidades e outras coisas que no meio da
implementação pode nos dar dor de cabeça caso não a tenhamos
definido de maneira sucinta.
BrainTrainer,
em linhas gerais, consiste num jogo de perguntas rápidas no qual o
usuário deve responder o mais rápido que conseguir, logicamente
acertando as questões. No nosso game, no entanto, não iremos
trabalhar com um limite de tempo, mas caso você, leitor, deseje
tornar o jogo mais desafiante, pode fazê-lo facilmente apenas com o
conhecimento em Java e na classe Timer. Já joguei jogos nesse estilo
desde memorizar sequências a fazer cálculos e meu preferido era
justamente o último citado. Então vamos definir alguns pontos
importantes do nosso jogo:
- Teremos dois números que serão sorteados aleatoriamente num intervalo de 1 ao 10. Podemos mais tarde aumentar esse intervalo para tornar o desafio mais difícil, contudo vamos deixar com esse intervalo mesmo.
- A definição da operação também deverá ser aleatória. Iremos trabalhar com três delas, então precisaremos sortear entre três números, no qual cada um representará uma determinada operação.
- O jogo terá uma pontuação. Para facilitar, faremos com que a pontuação seja incrementada em 50 nos acertos e decrementada o mesmo tanto nos erros.
- Um campo de entrada para o usuário digitar a resposta da expressão que será sorteada.
Nosso jogo será basicamente isso, então para implementá-lo, iremos
utilizar duas variáveis para armazenar cada número sorteado
separadamente. Outra variável irá armazenar o “valor” do sinal
da expressão. Como teremos um “score”, iremos precisar de uma
variável para armazenar o valor correspondente.
Definido os elementos do nosso jogo, poderemos passar para o layout
que será visto no próximo post. Uma ótima semana para todos.
Abraços.
terça-feira, 6 de setembro de 2011
Jogo Password para Android
Olá leitores,
Como prometido, hoje
irei fazer jus ao nome do blog. Iremos criar um joguinho simples
conhecido como senha
utilizando os elementos que trabalhamos no post anterior. Então mãos
à obra.
Primeiro
precisamos trabalhar nosso esquema de jogo. Sabemos que teremos que
“sortear” um conjunto de números, esses números variam de 0
(zero) ao 9 e podem se repetir. Teremos que “pegar” de alguma
maneira a sequência de números digitados pelo usuário e
compará-los a cadeia de números que representam nossa senha. Depois
de comparar, caso o usuário tenha acertado, informamos que ele
venceu o jogo. Caso erre, precisamos mostrar ao usuário as seguintes
informações:
- Número existe e está na posição correta;
- Número existe mas está na posição incorreta;
- Número não existe.
Definindo
nosso esquema de jogo, podemos começar a pensar no layout.
No
meu caso, eu escolhi enviar uma mensagem ao usuário informando as
regras do jogo. Em seguida, teremos mais uma mensagem indicando a
sequência secreta. É importante anotar aqui que essa sequência
precisa ser secreta.
Ou seja, precisamos mascará-la. Como faremos isso mostrarei no
código no momento que chegarmos na parte respectiva. Após os dois
textos, iremos inserir uma campo de entrada onde o usuário deverá
digitar a sequência que ele imagina ser a secreta. Mais uma
importante anotação: A
sequência secreta são números de 0 (zero) ao 9, então devemos
restringir os valores de entrada para estes números. Também
veremos como fazer isso através do código. Por último,
acrescentaremos o botão de confirmação. Agora vamos para o código
do arquivo “main.xml”.
![]() |
Tutorial explicando o jogo |
![]() |
Texto que irá "exibir" a sequência secreta |
![]() |
Campo de entrada do usuário |
![]() |
Botão de confirmação |
Na
primeira imagem, não há muita novidade assim como na quarta. Na
segunda, adicionamos um 'id' ao <TextView>. Na terceira
definimos nossos dados de entrada como dígitos de 0 (zero) ao 9
através da linha 'android:digits=“0123456789”'.
Esse fato é importante porque senão poderíamos adicionar letras e
símbolos, o que não é do nosso interesse, pelo menos nessa fase.
Depois de trabalhar nosso layout, está na hora de partirmos para o
arquivo .java, podemos também executar o app para vermos como está
nosso layout.
Teremos que importar todas as bibliotecas que importamos no post
passado.
![]() |
Imports necessários para aplicação |
Em seguida, vamos para o corpo da nossa classe principal.
Iremos declarar duas variáveis que farão a ligação com os
elementos <EditText> e <TextView> que declaramos no
arquivo “main.xml” chamados user_sequence e password_txt,
respectivamente. Também vamos precisar de uma variável String
chamada password_sequence que irá armazenar o valor real da
sequência secreta de caracteres que serão sorteados randomicamente
variando de 0 (zero) ao 9 como definimos no começo do post. Outra
variável será a intitulada rounds que como o nome já diz
irá contar o número de rodadas que o usuário precisará jogar para
acertar a sequência.
![]() |
Declaração das variáveis |
Agora iremos dar um “pulo” no código. Para definir a sequência
de caracteres secretos, por questão de limpeza do código e também
facilidade, vamos criar uma função específica para criar nossa
sequência secreta.
Para criar a sequência de senha, a ideia é extremamente simples.
Vamos criar uma variável String para nos auxiliar. Nossa função
irá retornar o valor armazenado por essa variável auxiliar. Dei o
nome dela de pass_sequence. Vamos criar também uma variável
para definir o tamanho da sequência, isso porque podemos mais tarde
criar níveis de dificuldade que aumentarão o número de caracteres
secretos. Por enquanto, deixaremos com o valor 4. Com um loop que vai
do 0 (zero) ao tamanho da sequência, no nosso caso o valor é 4,
vamos calcular um número randômico que vai de 0 (zero) ao 9 através
da linha pass_sequence += Math.round(Math.random() * 10 ).
Depois apenas retornamos o valor resultante de pass_sequence.
![]() |
Função createPasswordSequence() |
Agora que criamos nossa função para criar a sequência de
caracteres secretos, vamos voltar ao código principal onde iremos
atribuir o valor de retorno da função mencionada na variável
password_sequence. Lembra quando falei que teríamos que
arrumar um jeito de “mascarar” nossa senha? Pois é, não sei se
é a melhor maneira, mas foi a que me veio na cabeça no momento que
estava programando. Criei uma variável auxiliar do tipo String que
possui o mesmo tamanho de password_sequence com uma diferença:
a variável aux terá apenas como valor o símbolo “*”. E
como faremos para verificar se a sequência do usuário é igual ao
do programa? Pois é, nós poderemos compará-la diretamente com
password_sequence pois esta variável não será mostrada ao
usuário, consequentemente ele não terá como manipulá-la.
![]() |
Inicialização da sequência de caracteres |
Pronto. Já temos nossa sequência de caracteres. Para facilitar o
entendimento do usuário, vamos mostrar a variável aux
precedida de uma informação. Em seguida, vamos linkar nosso
botão criado no main.xml com um botão no código-fonte.
![]() |
Linkando <TextView> e <Button> |
Chegamos no momento de tratar a interação do usuário com nosso
game. O usuário irá digitar uma sequência e apertar o botão para
verificar se a senha está correta, certo? Então precisamos criar um
listener para o botão e é o que faremos agora. Contudo, não basta
apenas adicionar um listener ao botão. Precisamos verificar se o que
o usuário digitou é igual ao que foi criado pelo aplicativo. Então
vamos “pular” mais uma vez até nossa função de verificação
que também criamos.
Explicá-la não será uma tarefa simples. Como vimos, além de
verificarmos se está correta a sequência ou não, também
precisamos enviar ao usuário uma resposta com os códigos que
listamos na tela da aplicação. Para realizarmos a verificação,
vamos ter que criar um loop duplo com condicionais.
Para começar, vamos pelo mais fácil. O caso de o dígito existir e
estar na posição correta. Fazemos essa verificação através da
primeira condicional. Caso o dígito exista e está na posição
correta, o segundo loop não será executado otimizando dessa maneira
a performance da nossa aplicação. Agora no caso do dígito não
estar na ordem correta (observe que ainda não sabemos se o dígito
simplesmente não existe naquela sequência ou se ele existe mas está
em outra posição) precisamos rodar o loop interno.
Se vocês repararem bem, criei uma variável booleana para definir se
o dígito existe ou não. Pode parecer sem sentido, mas a ideia
ficará mais clara quando avançarmos um pouco mais no código.
Entramos no loop e verificamos um a um se algum dígito da variável
password_sequence corresponde a algum dígito da cadeia
digitada pelo usuário. Caso exista o dígito igual, iremos setar
como verdadeiro a variável has_item e quebraremos o loop.
Agora imagine que chegamos ao fim do loop e não encontramos nenhum
dígito que fosse igual entre as duas sequências. O que o programa
fará? Ele entrará na condição na qual has_item continua
com o valor falso. Então teremos nossa função de verificação
funcionando perfeitamente e de maneira otimizada.
![]() |
Função verifyPasswordErrorSequence() responsável em retornar uma cadeia de caracteres com os códigos 'char' para instruir o jogador dos erros e acertos |
Voltamos para nosso método onCreate(...) para criar a ação
do botão. Ela será basicamente a mesma do último post, contudo, no
caso da entrada do usuário for igual a senha sorteada, uma mensagem
de vitória será lançada e o jogo recomeçará com nova senha
secreta. No caso das senhas não baterem, a sequência de caracteres
com os códigos respectivos da posição e existência de cada
caractere será exibido.
![]() |
Caso do usuário ter acertado a sequência |
Bom, agora é só executar e se divertir quebrando a cabeça para
acertar as sequências de senhas. Espero que este post torne-se útil
para vocês.
Caso alguém tenha joguinhos para sugerir, basta enviar e-mail para
mim (andreikeda87@gmail.com).
Obrigado pelas visitas e sintam-se a vontade para comentar e também
seguir o blog.
Um grande abraço e até a próxima quando iremos fazer mais um
joguinho utilizando apenas <EditText> e <Button>
Assinar:
Postagens (Atom)