segunda-feira, 25 de junho de 2012

Curiosidade: Qual o primeiro jogo que teve uma música cantada?

Por incrível que pareça, o jogo que eu "conheci" que teve a primeira música cantada, vem antes da invenção do CD (Nota: descobri que o CD foi inventado em 1979! Então, desconsiderem a burrada que eu escrevi :P ).
Ele se chama "Psycho Soldier" da antiga SNK e foi lançado em 1987!



Os fãs de "The King of Fighters" devem reconhecer a música do estágio do time da Athena de 94 e 96 (sim, é a mesma personagem :) ).

Faya, faya, saiko soruja! (e pior de tudo, acho que isso não é japonês, pois ela quis dizer: "Fire, fire, psycho soldier!") :P

Até mais!

terça-feira, 19 de junho de 2012

O jogo mais difícil que já joguei!

Lembrando de minha adolescência, recordei do jogo mais difícil que já joguei para Mega Drive. Ele se chama "Shadow of the Beast":



O jogo tinha uma vida (a que você esta usando), nenhum continue e somente 12 pontos de "life" (ou seja, com 12 acertos você já era...).

Este jogo era muito mais difícil que "Ghouls'n Ghosts" e o "Comix Zone" juntos (e olha que eu já joguei este dois).

Para quem gosta de desafios, este é o jogo. :)

Obs.: Dizem que a versão americana (a que eu tinha) era muito mais difícil que a japonesa, pois a velocidade do jogo é diferente (parece que tinha a ver com o sistema de cores e freqüência).

Para mais informações, no Wikipédia:
http://en.wikipedia.org/wiki/Shadow_of_the_Beast

E, se quiser experimentar, você pode usar o emulador Kega e tentar baixar a ROM.

Até mais!

domingo, 17 de junho de 2012

Os 7 pecados

Em uma jantar de família, os sete pecados estavam jogando conversa fora, quando a Vaidade perguntou, em voz alta, a todos:
- Que tal decidirmos quem é o líder da nossa família?
Todos concordaram, menos a Gula que continuava comendo e não se manifestou.
Ignorando a "não resposta" da Gula, Ira foi a primeira falar (mais necessariamente, a gritar):
- Sou eu a lider dessa porcaria, pois  eu que causo todos os males para o homem. Sou eu que causo estresse, parada cardíaca, obesidade... Sou eu que faço as pessoas brigarem por suas tolas futilidades e eu que trago as guerras e o caos.
E Gula, continuava comendo... Deixando a Ira mais furiosa do que comumente...
- Deixa disso, irmã -- disse a Ganância -- Eu sou a líder dessa família.
- Por que?!? -- perguntou a Ira -- Você nunca fez nada para a humanidade!
- Como assim? -- resmungou em resposta -- Sou eu a quem as pessoas mais ricas e poderosas procuram, é a mim que cada pessoa do mundo pede para sair do "buraco", é a mim que todos recorrem para conseguir o que desejam e nunca conseguem, pois nunca estão satisfeitas com nada.
E isso deu mais discussão entre os membros da família, menos a Gula que continuava comendo:
- Espera aí... -- sussurrou a Preguiça -- eu... sou... importante... pois... sem... mim... as... pessoas... não... relaxariaaaaaam.... ZZZZ...
- Dormiu de novo! -- exclamou a Avareza -- Mas, voltando ao assunto, quem deveria ser a líder sou eu, pois sem mim, a pobreza e a fome, que são os maiores problemas do mundo, nem existiriam...
- Espera um pouco -- falou Vaidade, com um certo ar de arrogância -- Eu que comecei toda esta discussão, nada mais justo que eu seja a líder!
- Quem deveria ser a líder sou eu, pois vocês só trazem desgraças aos humanos, e eu, ao contrário, trago satisfação e prazer... -- interrompeu a Luxúria.
E assim foi toda a noite, até que seis dos sete irmãos sentiram fome... E acabaram vendo que a Gula, que se omitira da discussão, havia comido tudo...

quinta-feira, 14 de junho de 2012

Alguém já jogou Star Wars Chess?

Essa é para aqueles que viveram o início da década de 90. :)

Não sei se vocês sabem, mas existiu um jogo de xadrez para o DOS e para Sega-CD chamado Star Wars Chess:



Vendo agora este vídeo, percebi o quanto o jogo era meio "tosco". :P

Sei lá, o Dark Side de Dama no Xadrez soa meio estranho...

Mas, o importante, é que juntaram duas coisas que eu gostava (e acho que a maioria dos nerds gosta): Star Wars + Xadrez.

Quem quiser dar uma olhada, pode usar emuladores como o Gens (Sega-CD) ou o DOSBox e baixar a ISO.

Até mais!

quarta-feira, 13 de junho de 2012

Tutorial - Parte 5 - Fazendo um Genius em PhoneGAP

Agora é a última parte. :)

Para iOS:

- No arquivo zipado do PhoneGap, vá na pasta lib/ios e execute o arquivo "Cordova-X.X.X.dmg";
- Clique duas vezes (ou uma vez, dependendo de como seu Mac esteja configurado...) no item "Cordova-X.X.X.pkg";
- Clique nos botões "Next" (ou "Continuar"), até que finalize a instalação (quando o botão exibido é o "Close" (ou "Fechar"));
- Clique no botão "Close" (ou "Fechar");
- Abra o "Xcode";
- Clique no item "Create a new Xcode project";


- Escolha o template "Cordova-based Application";
- Preencha os campos, retire o "check" "Use Automatic Reference Counting" (na versão 1.7 do Cordova ainda não tinha suporte...) e finalize (clique no botão "Next");
- Vá para a pasta www do projeto criado;
- Copie ou crie o arquivo html de sua aplicação na pasta www e renomeie para index.html (se já existir um, remova-o e coloque o seu);
- Clique no menu "File"->"Add Files to <Projeto>" do Xcode;
- Selecione a pasta www, selecione o item "Create folder references for any added folders" e clique no botão "Add";
- No Xcode, selecione o projeto/dispositivo a ser rodado e clique no botão "Run";

Se tudo der certo, a aplicação aparecerá assim:


Uia, iguar quenhem a otra! :)

E, finalmente, terminamos o tutorial...

Obs.: Eu dei uma arrumada nas outras partes do tutorial (isso que dá fazer sem testar...), agora deve estar tudo certo para que este pequeno jogo funcione. :P

Desculpem pelas mancadas!

Até mais!

terça-feira, 12 de junho de 2012

Tutorial - Parte 4 - Fazendo um Genius em PhoneGAP

Vamos instalar a nossa aplicação?
- Primeiro, baixe o PhoneGap: http://phonegap.com/download;
- Expanda o arquivo zip;

Para Android:
- Abra o Eclipse e crie um novo projeto Android (selecione a versão 2.2 do Android);
- Crie em seu projeto no Eclipse, as pastas libs e assets/www;
- Jogue na pasta libs o arquivo cordova-X.X.X.jar do diretorio /lib/android que esta dentro do zip;
- Jogue no pasta assets/www o arquivo cordova-X.X.X.js do  diretorio /lib/android que esta dentro do zip;
- Clique com o botão direito no projeto (Eclipse) e vá em Properties;


- Nos itens a esquerda, vá para o item "Java Build Path";
- Na aba "Libraries", adicione o arquivo cordova-X.X.X.jar da pasta libs (interno do projeto);
- Agora, abra o arquivo "AndroidManifest.xml" em um editor (pode ser no Eclipse mesmo) e adicione as seguintes linhas entre as tags "uses-sdk" e "application":

    <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:resizeable="true"
        android:smallScreens="true" />

    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.BROADCAST_STICKY" />

- E na tag "activity" adicione as seguintes propriedades (dentro da tag):

            android:screenOrientation="portrait"
            android:configChanges="orientation|keyboardHidden"

- Agora abra a classe <Nome_do_Projeto>Activity (deve ser a única na pasta src) e mude ela para extender de DroidGap e use o método loadUrl no onCreate de sua classe:

package org.toolbox.game.genius;

import org.apache.cordova.DroidGap;

import android.os.Bundle;

public class <Nome_do_Projeto>Activity extends DroidGap {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.loadUrl("file:///android_asset/www/index.html");
    }
}

- Crie ou coloque o arquivo html da aplicação que a gente criou (no caso, o nosso genius) na pasta assets/www e renomeie para index.html (caso este não se chame assim);
- Se você criou um javascript separado, coloque nesta pasta (se ele estiver em outra pasta, coloque ele dentro da mesma hierarquia, ou seja, coloque a pasta completa :) );
- Clique no menu "Window"-> "AVD Manager"


- Crie um emulador, clicando no botão "New" (se já não existir), coloque um nome para este "dispositivo" e escolha em "Target" o valor "Android 2.2 - API Level 8";
- Clique no botão "Create AVD";
- Selecione o projeto no "Package Explorer" e clique no item "Run"->"Run" do menu principal;
- Selecione o item "Android Application" e clique no botão "Ok";

Se der certo, ele abrirá o simulador (agora, você deve esperar um bom tempo...) e aparecerá esta tela:


Legal, não?
O próximo passo é instalar no iOS e, com isso, será o fim de nosso tutorial! :)


segunda-feira, 11 de junho de 2012

Tutorial - Parte 3 - Fazendo um Genius em PhoneGAP

Terceira parte, e vamos que vamos! :)

Depois que a seqüência é exibida, precisamos obter os itens (cores) que o usuário digitar. Para isso, vamos mexer na função swithOnLight():

/**
* Função de acende a luz do item da seqüência selecionada
  */
function swithOnLight() {
//Se o indice esta na seqüência...
if ((index >=0) && (index < sequence.length)) {
  //Obtem o item da seqüência
  selected = sequence[index];
    //Acende a "luz" do item indicado
    switchLight(selected.x, selected.y);
    //Espera meio segundo para apagar o item selecionado
    setTimeout('switchOffLight();', 500);
} else {
   //Se o indice não estiver seqüência ou chegou no fim da seqüência,
   //habilito os botões para que o usuário possa digitar a seqüência de cores
index = 0;
alert('Sua vez!');
for (var i = 0; i < 4; i++) {
var el = document.getElementById('genius[' + parseInt(i % 2) + '][' + parseInt(i / 2) + ']');
if (typeof(el.ontouchstart)!='undefined') {
el.ontouchstart = play;
} else if (typeof(el.onclick)!='undefined') {
el.onclick = play;
}
}    
}
}

Agora, precisamos verificar se a seqüência que o usuário digitar é válida através da função play:

/**
* Função do evento de click de um dos botões de cores
*/
function play(event) {
   var el = event.srcElement;
        var color = "" + el.style.backgroundColor;
        //Troco a cor deste (se ele estiver mais escuro (por exemplo RGB(0,153,0)) , coloco uma cor mais clara (RGB(0,255,0) ou vice-versa)
        color = color.indexOf('153') >= 0 ? color.replace(/153/gi,'255') : color.replace(/255/gi,'153');
        //Coloco a nova cor para o elemento a ser exibido
        el.style.backgroundColor = color;
        setTimeout(function() {
            //Verifico se o que o usuário clicou esta correto na seqüência guardada
if (el.id == 'genius[' + sequence[index].x + '][' + sequence[index].y + ']') {
//Se sim passo para o próximo item da seqüência
index++;
//Se for o último item é por que a seqüência esta correta e completa.
if (sequence.length == index) {
alert('Seqüência correta!');
//Desabilito os botões de cores (Removo os eventos)
for (var i = 0; i < 4; i++) {
var btnCores = document.getElementById('genius[' + parseInt(i % 2) + '][' + parseInt(i / 2) + ']');
if (typeof(btnCores.ontouchstart)!='undefined') {
btnCores.ontouchstart = null;
} else if (typeof(el.onclick)!='undefined') {
btnCores.onclick = null;
}
}
//Habilito o botão de Start!
btnStart.disabled = false;
}
} else {
   //Senão, ele errou e deve fazer a seqüência tudo de novo
index = 0;
alert('Errou! Tente de novo!');
}
       //Troco a cor deste (se ele estiver mais escuro (por exemplo RGB(0,153,0)) , coloco uma cor mais clara (RGB(0,255,0) ou vice-versa)
       color = color.indexOf('153') >= 0 ? color.replace(/153/gi,'255') : color.replace(/255/gi,'153');
        //Coloco a nova cor para o elemento a ser exibido
        el.style.backgroundColor = color;
}, 500);
}

Ufa..., agora só falta instalar o PhoneGap para Android ou para iOS (e isso vai ser feito no próximo tutorial) :)

Até mais!