/** * Reglene for spillet: Maskinen tenker på et tilfeldig tall mellom * 0 og 5. Den genererer så suksessivt forslag og spør brukeren om * det er riktig forslag. Så lenge brukeren svarer feil, trekkes et * poeng fra og et nytt forslag genereres. Videre oppdateres en min-score * (reglene er "bakvendte" siden det er om å gjøre å få minst mulig * minuspoeng. * Poenget med spillet er å illustrere boolske tester. Legg merke * til at testen (tall==forslag) er true hvis forslaget er riktig og * false hvis det ikke er riktig. Dermed skal et nytt forslag bli genereret * hvis og bare hvis en av flg. to betingelser er oppfylt: * (1) brukeren svarer J og tall!=forslag * (2) brukeren svarer N og tall==forslag * Dette kan uttrykkes i en enkel test: * svarerJa("Er det "+forslag) != (tall==forslag) * Spillet er litt uinteressant som spill siden det finnes en * opplagt vinn-strategi! Det lønner seg opplagt å taste N første * gang siden vi da har 80% sjanse for å svare riktig allerede på * det første spørsmålet, og svarer vi feil vet vi hvilket tall * det er og kan svare riktig på det andre. Kanskje du kan utvide * spillet til å bli mer interessant? Det er en god trening i * boolske tester og if-setninger! */ import easyIO.*; import java.util.Random; class Gjetteleken { final int GRENSE = 6; In tast = new In(); int min = 0; int tall,forslag,poeng; Random r = new Random(); public static void main( String[] a){ new Gjetteleken(); } Gjetteleken() { do { System.out.println("\nJeg tenker på et tall mellom 0 og "+ (GRENSE-1)); tall = r.nextInt(GRENSE); System.out.println(" ( "+tall+"!)"); poeng = 1; do{ forslag = r.nextInt(GRENSE); poeng--; } while( svarerJa("Er det "+forslag) != (tall==forslag) ); if( poeng < min ) min = poeng; System.out.println("\nPoeng: " + poeng + "\nMin score = " + min); } while( svarerJa("Vil du fortsette") ); } boolean svarerJa(String s) { System.out.print(s + "? [J/N] "); char svar = tast.inChar(); tast.readLine(); while( svar!='J' && svar!='j' && svar!='N' && svar!='n' ){ System.out.print("\nSvar J eller N: "); svar = tast.inChar(); tast.readLine(); } return (svar=='J' || svar=='j'); } }