sexta-feira, 23 de setembro de 2011

Nvidia - Projeto Kal-El: Glowball

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

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"














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


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.


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.

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


Caso do usuário ter errado 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>