terça-feira, 22 de abril de 2008

Descrição do personagem e cenários de interação

Nome: Carlos Silva
Idade: 15 anos

Descrição:
É um jovem normal para sua idade. Vai à escola todos os dias pela manhã (está no Ensino Médio). Durante a tarde, faz as lições da escola em casa, e logo liga seu Playstation 2 (PS2) para jogar, por exemplo, Guitar Hero. Carlos é um jogador costumaz, e antes de ter ganhado o PS2 de seus pais, já havia jogado muitos outros jogos de diferentes consoles.
Recentemente, começou a ir ao ortodontista, para colocar a fazer manutenções frequentes em seu aparelho. Suas visitas ao ortodontista são semanais, e como fica muito tempo na sala de espera, acaba sentindo falta de alguma distração. Também, acompanha sua mãe sempre que ela vai ao banco e espera bastante tempo na fila, ficando entediado. Nesses momentos, sente falta de estar em casa jognado videogame. Sabe que poderia jogar algo sem seu celular, um modelo de qualidade razoável, mas não vê graça nos joguinhos extremamente simples e casuais disponíveis no dispositivo, como Snake e Frogger, nem nos jogos mais complexos disponíveis via rede, pois acha que o teclado do celular torna a jogabilidade bem ruim.

Possibilidade Futuras:
Carlos gosta muito de Guitar Hero, e portanto é um usuário em potencial de nossa versão do game. Como gosta muito do original, estaria disposto a testar o nosso, ficando encantado com a jogabilidade simples e o gameplay similar ao game a que já está acostumado.

Exemplificação de um fato ocorrido:
Carlos já possui 15 anos de idade, e seus pais acham que ele já deve começar a adquirir mais responsabilidades em sua vida. Com isso, para aprender algumas rotinas comuns da vida dos adultos, seus pais concordaram que Carlos deve acompanhar sua mãe Julia em algumas atividades como compras no mercado e pagamento de contas. Outro motivo para que ele acompanhe sua mãe é apenas para ela não ter que ficar fazendo essas coisas sozinha (por questão de segurança).
Numa sexta-feira, meio dia, Carlos teve que acompanhar sua mãe ao Banco do Brasil pois ela precisava discutir detalhes sobre sua conta. Nesse dia/horário, o banco estava com uma fila de espera muito grande. Felizmente, Carlos estava com um novo jogo em seu celular, o jogo Guitar Hero.
Vendo a fila imensa de espera, Carlos retirou seu celular do bolso. E executou as seguintes tarefas:
  • Foi para parte de aplicativos do seu celular;
  • Selecionou o jogo Guitar Hero;
  • Selecionou a opção de carreira para continuar de onde parou;
  • Selecionou uma música que já tinha completado, mas queria melhorar sua pontuação;
  • Selecionou o nível de dificuldade para jogar essa música;
  • Começou a jogar o jogo, em que deveria pressionar quatro diferentes botões conforme esses chegavam na parte de baixo da tela, na ordem em que apareciam, podendo ser simultaneamente mais de um botão ou também durante um certo período de tempo.
Durante o jogo, muitas pessoas começaram a olhar Carlos jogando, pois o jogo toca a música que Carlos escolheu se ele está acertando os botões que aparecem, e a música era conhecida dos anos 80. Com isso, Julia pediu para que seu filho abaixasse um pouco o som, que foi possível apertando um botão de pausa e em seguida pressionando algumas teclas que se encontram na parte lateral do seu celular.
Mesmo com o volume mais baixo, outros jovens que estavam mais próximos continuaram observando Carlos jogar pois acharam bem interessante o jogo. Porém outro fato o interrompeu no jogo: o jogo pausou e apareceu uma janela de que ele estava recebendo uma ligação, com a opção de aceitá-la ou rejeitá-la. Carlos aceitou a ligação, e era seu pai Gilmar querendo falar com sua mãe, pois não estava conseguindo ligar no celular dela. Após a ligação, Carlos foi novamente para parte de aplicativos, selecionou o jogo Guitar Hero e tinha uma opção de continuar a música que estava interrompida. Ele resolveu continuar, terminou de jogar essa música e recebeu uma pontuação, que foi superior a sua anterior, colocando-o em primeiro lugar no seu ranking pessoal.
Depois de jogar muitas outras músicas, a vez da sua mãe Julia ser atendida chegou e Carlos escolheu a opção do menu para sair do jogo. Com isso ele saiu do aplicativo e voltou para a janela de aplicativos do celular, da qual ele saiu novamente e voltou para a tela inicial.

Um segundo caso de interação:
O irmão de Carlos, Marcos que tem 8 anos de idade, acordou um dia doente e com febre. Sua mãe Julia deu remédios e tratou como geralmente trata nesses casos. Porém dessa vez Marcos não estava melhorando, então ela resolveu levá-lo à clínica do seu médico (um clinico geral) e Carlos foi junto para acompanhar. Como não havia consulta marcada, ele teve que esperar a consulta de seu irmão que seria "encaixe".
Carlos já sabe que em casos de encaixe e sem tanta urgência como no caso do irmão que apenas tinha uma febre não muito alta poderia demorar muito tempo para ser atendido, ainda mais se a clínica estiver cheia. Com isso, Carlos levou seu celular para jogar o jogo Guitar Hero enquanto esperava para seu irmão ser atendido. Chegando na clínica, viu que a sala de espera estava praticamente cheia mas conseguiu achar um lugar para sua mãe e seu irmão sentarem. Carlos continuou em pé, mas retirou seu celular do bolso e realizou as seguintes operações:
  • Foi para parte de aplicativos do seu celular;
  • Selecionou o jogo Guitar Hero;
  • Selecionou a opção de transformar uma música existente em mp3;
  • Selecionou a música em mp3 que desejava, da sua lista de músicas que estavam no celular;
  • Esperou o tempo necessário para transformar a música;
  • Selecionou a opção de Quick Play;
  • Foi até o final da lista de músicas e selecionou a música que ele acabou de converter da sua lista de mp3;
  • Selecionou o nível de dificuldade para jogar essa música;
  • Começou a jogar o jogo, em que deveria pressionar quatro diferentes botões conforme esses chegavam na parte de baixo da tela, na ordem em que apareciam, podendo ser simultaneamente mais de um botão ou também durante um certo período de tempo.
  • Quando acabou de jogar essa música, viu o placar, que não o deixou muito satisfeito, mas também era a primeira vez que ele jogava essa nova música. Portanto resolveu jogar mais algumas vezes até ter um resultado satisfatório;
  • Após conseguir um bom resultado na nova música, Carlos resolveu melhorar o resultado de outras músicas. E foi o quê fez até chegar o momento da consulta de seu irmão. Quando chegou, ele foi para o menu principal e selecionou para sair do jogo. Depois disso para sair da parte de aplicativos, voltando assim para o menu principal do celular.

Captura de melodia

Enfim chegamos a uma conclusão. Como comentei em um post anterior, estava pesquisando junto com o Pastore (de outra equipe) como capturar um único instrumento a partir de uma música em mp3.

A partir de diversos fóruns relacionados a música, descobri que é impossível separar instrumentos de uma música já pronta, portanto não seria possível fazer a separação que gostaríamos. Porém, é possível capturarmos a melodia de uma música, gerando um arquivo MIDI a partir dela. O arquivo MIDI é ideal para gerarmos uma sequência de botões necessária para o jogo. Além disso, acho que é interessante fazermos um jogo baseado na melodia do que um a partir da guitarra, que seria uma copia de um jogo já existente. Vou comentar sobre isso com o grupo hoje e ver a opinião deles.

Em um outro momento (entre hoje e amanhã) eu explico como foi possível gerar esse arquivo MIDI.

segunda-feira, 21 de abril de 2008

Botão

Estou colocando aqui o código atual que estou trabalhando, relacionado ao problema do botão. Nele, podemos ver no LogCat os diferentes botões que são pressionados. Ao pressionar e soltar um botão qualquer, o código dele é impresso duas vezes. Se deixarmos um botão pressionado ele aparece diversas vezes (enquanto estiver pressionado). Irei trabalhar um pouco mais nesse código para fazer o que queremos.

package android.view;

import android.app.Activity;
import android.os.Bundle;
import android.os.ServiceManager;
import android.util.Log;
import android.view.View.OnKeyListener;

public class KeyEventTest extends Activity {
final IWindowManager windowManager = IWindowManager.Stub
.asInterface(ServiceManager.getService("window"));

@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);

this.findViewById(R.id.cmd_simulate_key).setKeyListener(
new OnKeyListener() {
public boolean onKey(View arg0, int arg1, KeyEvent keyEvent) {
Log.v("KeyEventTest", Integer.toString(keyEvent.getKeyCode()));
Log.v("KeyEventTest", Long.toString(keyEvent.getEventTime()));

return true;
}
});
}

}

sexta-feira, 18 de abril de 2008

Poucos posts

Vou explicar o motivo de eu estar colocando poucos posts.
Deixei meio de lado o projeto do botão pois comecei sobre outra dificuldade que iremos ter nesse projeto, que é a separação entre os intrumentos. Precisamos que a música fique tocando sem o instrumento que iremos utilizar para fazer os botões do jogo (no caso do Guitar Hero, esse instrumento é a guitarra). Isso deve ser feito pois o instrumento apenas vai tocar enquanto o jogador estiver acertando as notas e quando ele erra, o som do instrumento deve parar de tocar.

Estou pesquisando programas que possam fazer isso com a ajuda do Pastore, que é de um outro grupo, mas muito interessado na parte de engenharia de som e também tem interesse em programas que possam fazer essa separação.

quinta-feira, 10 de abril de 2008

Falta de tempo

Infelizmente não tive tempo de testar mais nada desde a minha última postagem aqui... Muitos projetos para fazer (entregar) essa semana.

Assim que eu conseguir modificar um pouco o código que comentei anteriormente (quero fazer com que ele funcione para teclas específicas, e não apenas click do mouse como está atualmente), eu disponibilizo ele aqui!

segunda-feira, 7 de abril de 2008

Botão

Já estou começando a entender um pouco melhor o funcionamento de um código.
Consegui fazer um pequeno teste envolvendo click em um botão. Não sei se vou conseguir implementar especificamente o problema dos botões desejado, mas espero pelo menos avançar um pouco mais na implementação amanhã!

Por enquanto é só! =)

sexta-feira, 4 de abril de 2008

Nova função "oficial"

Hehe, o título já diz tudo: minha nova função descoberta na ultima terça-feira se tornou "oficial" ontem com a distribuição de funções da gerente Carolina.

Eu tenho que fazer uma pequena implementação com a funcionalidade de pressionar multiplas teclas simultaneamente. Espero que dê tempo até o prazo estabelecido (terça-feira 08/04)! Certamente não será por falta de esforço! =)

terça-feira, 1 de abril de 2008

Nova função

Olhando o blog da gerente do grupo, meio que "descobri" minha nova função no projeto. Tenho que implementar a possibilidade de perceber 2 botões sendo pressionados simultaneamente, que havia sido minha pesquisa de viabilidade pela documentação do Android.

Na verdade houve uma falha de comunicação (como expliquei no blog do grupo) e pelo visto a gerente gostaria que eu tivesse implementado isso para hoje (em um prazo de 2 dias). Mesmo que eu soubesse disso anteriormente, não seria possível implementar em tão pouco tempo com praticamente nenhuma experiência de programação com esse novo recurso que estamos utilizando (Android). Portanto farei o possível para ter essa implementação o mais rápido que eu conseguir.