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
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:
Agora vamos até o método iniciarJogo() e vamos modifica-lo.
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!
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!
André, existe um erro no código que não estou conseguindo corrigir.
ResponderExcluirQuando 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.
Caramba.... sério mesmo?!
ExcluirVou dar uma olhada no código e posto a correção daí..
Valeu pela informação Romualdo!
Olá André, tudo bem ? Por acaso você conseguiu ver o erro no código ?
ResponderExcluirOla, tem a segunite soluçao.
ResponderExcluirAntes 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