Salve, sono bloccato nella risoluzione di questo "giochino", come si puo' intuire dal titolo il giocatore deve pensare un numero da 1 a 1000 e il programma dovra' indovinarlo in 10 tentativi usando l'algoritmo. Avro' sicuramente sbagliato qualcosa all'interno del ciclo do-while, ma purtroppo non riesco a capire cosa manca.
P.S. Inizialmente chiedo al giocatore se il numero e' 500 in modo da eliminare l'altra meta' delle possibilita' in un solo tentativo.
Grazie a chiunque mi risponda.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
boolean finish = false;
while(!finish) {
Main main = new Main();
System.out.println("Scrivi 1 per giocare.\n" +
"Scrivi 2 per uscire.");
int selection = in.nextInt();
if (selection == 2) {
finish = true;
System.out.println("Arrivederci!");
break;
} else {
if (selection == 1) {
main.option1();
}
}
}
}
public void option1() {
Scanner in = new Scanner(System.in);
int high = 1000;
int low = 1;
int tries = 1;
int guess = (low + high) / 2;
//Chiedo se il numero e' 500, a meta'
String risposta = "";
System.out.println("Il numero che stai pensando e': " + guess + "?");
System.out.println("Scrivi high o low, oppure se e' corretto scrivi: yes");
risposta = in.nextLine();
do {
if (risposta.equals("low")) { //e' minore di 500
high = guess - 1;
guess = (high + low) / 2;
System.out.println("Il numero che stai pensando e':" + guess + " ?\n" + tries + " tentativi.");
risposta = in.nextLine();
tries++;
} else {
if (risposta.equals("high")) {
high = guess - 1;
guess = (high + low);
System.out.println("Il numero che stai pensando e':" + guess + " ?\n" + tries + " tentativi.");
risposta = in.nextLine();
tries++;
}
}
} while (!risposta.equals("yes"));
System.out.println("Indovinato!!\n" + tries + " tentativi.");
if (tries >= 10) {
System.out.println("10 Tentativi raggiunti!");
}
}
}