Tutorial Forca #6 - Botão Jogador 2

Antes de fazer funcionar o botão do Jogador 2, gostaria de compartilhar com vocês algumas alterações que eu fiz.
Ao fazer alguns testes, notei que o nome do aplicativo estava errado, aí alterei lá no arquivo strings.xml, dentro da pasta values.
Também alterei o local de instalação do aplicativo, adicionando a seguinte linha ao cabeçalho do AndroidManifest
android:installLocation="auto"
E agora, dando continuidade à série, vamos criar a ação que permitirá que o jogo seja jogado em dois.
Como assim? Uma pessoa digita a palavra a ser adivinhada, e a outra tenta adivinhar!
Para isso, vamos alterar o arquivo MainActivity, no método onClick, que ficará assim:
public void onClick(View v) {
    Intent i = new Intent(MainActivity.this, GameActivity.class);
    switch (v.getId()) {
    case R.id.bStart1:
        i.putExtra("tipo", "jogador1");
        startActivity(i);
        break;
    case R.id.bStart2:
        i.putExtra("tipo", "jogador2");
        startActivity(i);
        break;
    case R.id.bSair:
        finish();
    }
}
Bom, agora que passamos a string "tipo" para GameActivity precisamos declarar uma string chamada tipoJogo junto com as outras strings e recuperar o valor passado para a nossa activity adicionando a seguinte linha no nosso método onCreate
tipoJogo = getIntent().getExtras().getString("tipo");
Lembrando que essa linha deve ser colocada antes da chamada do método que inicia o jogo.
Agora vamos até o método iniciarJogo() e vamos modifica-lo.
public void iniciarJogo() {
    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
    if (tipoJogo.equals("jogador1")) {
        palavraSecreta = palavras.sorteio();
        procedimentosInicio();
    } else {
        final EditText input = new EditText(this);
        dialogBuilder.setTitle("Palavra Secreta")
        .setMessage("Digite uma palavra para seu adversário.")
        .setView(input)
        .setPositiveButton("OK", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface arg0, int arg1) {
                palavraSecreta = input.getText().toString().toUpperCase();
                procedimentosInicio();
            }
        })
        .setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface arg0, int arg1) {
                finish();
            }
        })
        .create().show();
    }
}

private void procedimentosInicio() {
    nTentativas = 6;
    tracos = "";
    letra = ' ';
    for (int x = 0; x < palavraSecreta.length(); x++) {
        if (palavraSecreta.charAt(x) == '-') {
            tracos += " - ";
        } else if (palavraSecreta.charAt(x) == ' ') {
            tracos += "   ";
        } else {
            tracos += " _ ";
        }
    }

    habilitarBotoes();
    tvPalavra.setText(tracos);
    forca.setImageResource(R.drawable.forca_6);
} 
Fazendo isso, deve funcionar já.
Caso eu tenha esquecido de mencionar alguma alteração, clique aqui para conferir todas as alterações que eu fiz no projeto. Até o próximo post pessoal!

Sobre o autor

André Luís Batista Kunde
Técnico em Informática (2004), Bacharel em Administração com ênfase em Marketing (2009), buscando ser Engenheiro de Software, Trabalhando com software educacional e me aventurando pelo mundo da programação mobile.

4 comentários:

  1. André, existe um erro no código que não estou conseguindo corrigir.
    Quando a palavra sorteada tem espaço no meio (Ex.: Arábia Saudita) mesmo que acertamos todas as letras o jogo não para, continua e só termina quando o bonequinho é enforcado. Poderia verificar ?

    Desde já agradeço.

    ResponderExcluir
    Respostas
    1. Caramba.... sério mesmo?!
      Vou dar uma olhada no código e posto a correção daí..
      Valeu pela informação Romualdo!

      Excluir
  2. Olá André, tudo bem ? Por acaso você conseguiu ver o erro no código ?

    ResponderExcluir
  3. Ola, tem a segunite soluçao.
    Antes d começar, vc tem um vetor int _palavra = {0};
    qndo sortear a palavra, vc percorre ela e a cada caractere q seja um " " vc marca _palavra[posicao da letra] = 1; Isso informa q 1 eh ocupado e 0 n foi descoberto ainda. A cada acerto,vc marca _palavra[posicao q foi o acerto] = 1;
    e chama um funçao aux q verifica se _palavra[0...n] = 1;
    Caso sim, jogo palavra descoberta com ou sem espaço e jogo finaliza;
    Ai vc chama smp uma funçao aux q verifique se tempPalavra = contPalavra

    ResponderExcluir

Copyright © 2013 Aprendendo Android and Blogger Themes.