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