System.out.println("digite Lançar para Rolar os dados para atirar no homem");
P1_rolar = L.next();
long P1_dado1 = (long) (Math.random() * 20);
if (P1_dado1 < 21) {
System.out.print("seu resultado é: ");
Thread.sleep(1500);
System.out.print(P1_dado1);
System.out.print(" e Idril errou o tiro pois estava claramente bebado quando atirou \n");
Thread.sleep(2000);
System.out.println("Digite Lançar para Rolar os dados novamente");
P1_rolar = L.next();
P1_i = 0;
while(P1_i < 2) {System.out.println("..");Thread.sleep(1000); P1_i++;}
Thread.sleep(1000);
long P1_dado2 = (long) (Math.random() * 20);
if(P1_dado2 < 21) {
System.out.print("seu resultado é: ");
Thread.sleep(1500);
System.out.print(P1_dado2);
System.out.print(" e Idril errou o tiro novamente \n");
Thread.sleep(2000);
System.out.println("Digite Lançar para Rolar os dados novamente");
P1_rolar = L.next();
P1_i = 0;
while(P1_i < 2) {System.out.println("..");Thread.sleep(1000); P1_i++;}
Thread.sleep(1000);
long P1_dado3 = (long) (Math.random() * 20);
if (P1_dado3 < 20) {
System.out.print("seu resultado é: ");
System.out.print(P1_dado3);
System.out.println("vc perdeu tente novamente ");
// fazer retornar pro começo do codigo
} else {System.out.println("Idril consegui acertar seu oponete com um tiro que arrancou a orelha, fazendo o homen desmaiar");}
} else {System.out.println("Idril consegui acertar seu oponete com um tiro que arrancou a orelha, fazendo o homen desmaiar");}
}else {System.out.println("Idril consegui acertar seu oponete com um tiro que arrancou a orelha, fazendo o homen desmaiar");}
laço de repetição
ta, mas como eu coloco esse codigo em um laço de repetição?
Existem dois jeitos:
- Você copia seu código inteiro dentro do seu laço de repetição;
- Em outro método, você cria o laço de repetição e chama esse método.
Você está fazendo esse jogo orientado à objetos? Aparentemente, você tá começando a programação por agora e tô vendo que tem umas coisas bem procedurais aí. Seria interessante você aprender o básico da OO para poder continuar seu jogo, ou você vai ver que realmente fica dificil desenvolver assim.
Por exemplo: Seu código fica inteiro dentro do método main? Você só está escrevendo ele, ou você está criando métodos para cada fase e etc?
[]'s
estou começando a aprender java agr na faculdade, e o professor passou uma atividade que era pra criar um minijogo , com o básico que ele tinha passado
bem, tente não deixar ele muito complexo. Sem OO, você vai escrever um código IMENSO pra fazer algo bobo. Cê pode tentar fazer um jogo mais simples, como “adivinhe o número”.
vc poderia mostrar como que o código fica dentro do laço de repetição , pq eu estou tentando e ta entrando em um laço infinito
Isso aqui significa que ele não tá atingindo a condição de parada.
Coloca o código aqui pra gente ver o que você tá fazendo de errado. Aliás, qual é a condição de parada?
System.out.println(“digite Lançar para Rolar os dados para atirar no homem”);
P1_rolar = L.next();
do {
P1_dado1 = (long) (Math.random() * 20);
if (P1_dado1 < 13) {
System.out.print("seu resultado é: ");
Thread.sleep(1500);
System.out.print(P1_dado1);
System.out.print(" e Idril errou o tiro pois estava claramente bebado quando atirou \n");
Thread.sleep(2000);
System.out.println("Digite Lançar para Rolar os dados novamente");
P1_rolar = L.next();
P1_dado1 = 14;
P1_i = 0;
while(P1_i < 2) {System.out.println("..");Thread.sleep(1000); P1_i++;}
Thread.sleep(1000);
P1_dado2 = (long) (Math.random() * 20);
if(P1_dado2 < 13) {
System.out.print("seu resultado é: ");
Thread.sleep(1500);
System.out.print(P1_dado2);
System.out.print(" e Idril errou o tiro novamente \n");
Thread.sleep(2000);
System.out.println("Digite Lançar para Rolar os dados novamente");
P1_rolar = L.next();
P1_dado2 = 14;
P1_i = 0;
while(P1_i < 2) {System.out.println("..");Thread.sleep(1000); P1_i++;}
Thread.sleep(1000);
P1_dado3 = (long) (Math.random() * 20);
if (P1_dado3 < 13) {
System.out.print("seu resultado é: ");
System.out.print(P1_dado3);
System.out.println("vc perdeu tente novamente ");
// fazer retornar pro começo do codigo
} else {System.out.println("Idril consegui acertar seu oponete com um tiro que arrancou a orelha, fazendo o homen desmaiar");}
} else {System.out.println("Idril consegui acertar seu oponete com um tiro que arrancou a orelha, fazendo o homen desmaiar");}
}else {System.out.println("Idril consegui acertar seu oponete com um tiro que arrancou a orelha, fazendo o homen desmaiar");}
} while(P1_dado1 < 13 || P1_dado2 < 13 ||P1_dado3 < 13);
eu queria q se chegasse no terceiro if , ai voltava pro inicio, se caso um dos “dados” der mais q 13 ai ele tinha q para
Tá, seu código tá meio confuso. Posta ele inteiro, seja no Pastebin ou aqui. Desde o começo.
Não esqueça de usar a ferramenta de formatação </> para podermos entender melhor seu código.
package testes;
import java.util.Scanner;
public class teste {
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
long P1_dado1 = 0,P1_dado2 = 0,P1_dado3 = 0;
String P1_rolar;
int P1_i,P1_escolha;
Scanner L = new Scanner(System.in);
System.out.println("digite Lançar para Rolar os dados para atirar no homem");
P1_rolar = L.next();
do {
P1_dado1 = (long) (Math.random() * 20);
if (P1_dado1 < 13) {
System.out.print("seu resultado é: ");
System.out.print(P1_dado1);
System.out.print(" e Idril errou o tiro pois estava claramente bebado quando atirou \n");
System.out.println("Digite Lançar para Rolar os dados novamente");
P1_rolar = L.next();
P1_i = 0;
while(P1_i < 2) {System.out.println("..");Thread.sleep(1000); P1_i++;}
P1_dado2 = (long) (Math.random() * 20);
if(P1_dado2 < 13) {
System.out.print("seu resultado é: ");
System.out.print(P1_dado2);
System.out.print(" e Idril errou o tiro novamente \n");
System.out.println("Digite Lançar para Rolar os dados novamente");
P1_rolar = L.next();
P1_i = 0;
while(P1_i < 2) {System.out.println("..");Thread.sleep(1000); P1_i++;}
P1_dado3 = (long) (Math.random() * 20);
if (P1_dado3 < 13) {
System.out.print("seu resultado é: ");
System.out.print(P1_dado3);
System.out.println("vc perdeu tente novamente ");
// fazer retornar pro começo do codigo
} else {System.out.println("Idril consegui acertar seu oponete com um tiro que arrancou a orelha, fazendo o homen desmaiar");}
} else {System.out.println("Idril consegui acertar seu oponete com um tiro que arrancou a orelha, fazendo o homen desmaiar");}
}else {System.out.println("Idril consegui acertar seu oponete com um tiro que arrancou a orelha, fazendo o homen desmaiar");}
} while(P1_dado1 < 13 || P1_dado2 < 13 ||P1_dado3 < 13);
}
}
Boa Tarde.
Para você deixar em um loop até você ganhar você poderia fazer dessa forma:
package teste;
import java.util.Scanner;
public class teste {
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
long P1_dado1 = 0, P1_dado2 = 0, P1_dado3 = 0;
String P1_rolar;
int P1_i, P1_escolha;
Scanner L = new Scanner(System.in);
boolean endGame = false;
while (!endGame) {
System.out.println("digite Lançar para Rolar os dados para atirar no homem");
P1_rolar = L.next();
P1_dado1 = (long) (Math.random() * 20);
if (P1_dado1 < 21) {
System.out.print("seu resultado é: ");
Thread.sleep(1500);
System.out.print(P1_dado1);
System.out.print(" e Idril errou o tiro pois estava claramente bebado quando atirou \n");
Thread.sleep(2000);
System.out.println("Digite Lançar para Rolar os dados novamente");
P1_rolar = L.next();
P1_i = 0;
while (P1_i < 2) {
System.out.println("..");
Thread.sleep(1000);
P1_i++;
}
Thread.sleep(1000);
P1_dado2 = (long) (Math.random() * 20);
if (P1_dado2 < 21) {
System.out.print("seu resultado é: ");
Thread.sleep(1500);
System.out.print(P1_dado2);
System.out.print(" e Idril errou o tiro novamente \n");
Thread.sleep(2000);
System.out.println("Digite Lançar para Rolar os dados novamente");
P1_rolar = L.next();
P1_i = 0;
while (P1_i < 2) {
System.out.println("..");
Thread.sleep(1000);
P1_i++;
}
Thread.sleep(1000);
P1_dado3 = (long) (Math.random() * 20);
if (P1_dado3 < 20) {
System.out.print("seu resultado é: ");
System.out.print(P1_dado3);
System.out.println("vc perdeu tente novamente ");
// fazer retornar pro começo do codigo
} else {
System.out.println("Idril consegui acertar seu oponete com um tiro que arrancou a orelha, fazendo o homen desmaiar");
endGame=true;
}
} else {
System.out.println("Idril consegui acertar seu oponete com um tiro que arrancou a orelha, fazendo o homen desmaiar");
endGame=true;
}
} else {
System.out.println("Idril consegui acertar seu oponete com um tiro que arrancou a orelha, fazendo o homen desmaiar");
endGame=true;
}
}
}
}
Entretanto a lógica no seu programa está errada, você nunca ira ganhar.
Você esta utilizando o Math.random que gera um numero aleatório de 0 até 0.99 e multiplicando por 20 ou seja seu numero sempre vai ser menor que 21 e sempre vai entrar na condição que você perdeu.
sim, mas eu coloquei '< 21" para testar, e eu to testando esse codigo que vc passou, e não esta funcionando , pq quando eu coloquei os valor os ifs " if (P1_dado1 < 13) " , quando eu deles da verdadeiro , ele não sai do instrução de repetição , esse é o resultado q esta sendo gerado
“”
digite Lançar para Rolar os dados para atirar no homem
lançar
seu resultado é: 3 e Idril errou o tiro pois estava claramente bebado quando atirou
Digite Lançar para Rolar os dados novamente
lançar
…
…
seu resultado é: 8 e Idril errou o tiro novamente
Digite Lançar para Rolar os dados novamente
lançar
…
…
seu resultado é: 11 vc perdeu tente novamente
seu resultado é: 3 e Idril errou o tiro pois estava claramente bebado quando atirou
Digite Lançar para Rolar os dados novamente
lançar
…
…
Idril consegui acertar seu oponete com um tiro que arrancou a orelha, fazendo o homen desmaiar
seu resultado é: 8 e Idril errou o tiro pois estava claramente bebado quando atirou
Digite Lançar para Rolar os dados novamente
lançar
…
…
seu resultado é: 9 e Idril errou o tiro novamente
Digite Lançar para Rolar os dados novamente “”
Pensei que a condição do jogo acabar era se você acertasse um tiro,se você quer que o jogo acabe caso tenha tirado algum dado com 13 depois de jogar as 3 tentativas você tem que colocar assim:
package testes;
import java.util.Scanner;
public class teste {
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
long P1_dado1 = 0, P1_dado2 = 0, P1_dado3 = 0;
String P1_rolar;
int P1_i, P1_escolha;
Scanner L = new Scanner(System.in);
boolean endGame = false;
while (!endGame) {
System.out.println("digite Lançar para Rolar os dados para atirar no homem");
P1_rolar = L.next();
P1_dado1 = (long) (Math.random() * 20);
if (P1_dado1 < 21) {
System.out.print("seu resultado é: ");
Thread.sleep(1500);
System.out.print(P1_dado1);
System.out.print(" e Idril errou o tiro pois estava claramente bebado quando atirou \n");
Thread.sleep(2000);
System.out.println("Digite Lançar para Rolar os dados novamente");
P1_rolar = L.next();
P1_i = 0;
while (P1_i < 2) {
System.out.println("..");
Thread.sleep(1000);
P1_i++;
}
Thread.sleep(1000);
P1_dado2 = (long) (Math.random() * 20);
if (P1_dado2 < 21) {
System.out.print("seu resultado é: ");
Thread.sleep(1500);
System.out.print(P1_dado2);
System.out.print(" e Idril errou o tiro novamente \n");
Thread.sleep(2000);
System.out.println("Digite Lançar para Rolar os dados novamente");
P1_rolar = L.next();
P1_i = 0;
while (P1_i < 2) {
System.out.println("..");
Thread.sleep(1000);
P1_i++;
}
Thread.sleep(1000);
P1_dado3 = (long) (Math.random() * 20);
if (P1_dado3 < 20) {
System.out.print("seu resultado é: ");
System.out.print(P1_dado3);
System.out.println("vc perdeu tente novamente ");
// fazer retornar pro começo do codigo
} else {
System.out.println("Idril consegui acertar seu oponete com um tiro que arrancou a orelha, fazendo o homen desmaiar");
}
} else {
System.out.println("Idril consegui acertar seu oponete com um tiro que arrancou a orelha, fazendo o homen desmaiar");
}
} else {
System.out.println("Idril consegui acertar seu oponete com um tiro que arrancou a orelha, fazendo o homen desmaiar");
}
if(P1_dado1 >13 ||P1_dado2>13|| P1_dado3>13) {
endGame = true;
System.out.println("jogo acabou");
}
}
}
}