Springen naar inhoud

[java] guessing game


  • Log in om te kunnen reageren

#1

Winnie

    Winnie


  • 0 - 25 berichten
  • 24 berichten
  • Gebruiker

Geplaatst op 29 december 2011 - 13:47

Hallo, ik ben voor een opdracht voor school bezig met het schrijven van een spel in java.
Bij dit spel kan de speler kiezen uit drie mogelijkheden, zelf raden , de computer of stoppen.

Bij de tweede mogelijkheid waarbij de speler een getal bedenkt en in de output aangeeft hoger of lager loop ik vast,

Iemand een idee?

het script ziet er zo uit:



/*
 */import java.util.*;

public class Guessinggamereverse {

	Scanner sc = new Scanner(System.in);
	int guess;
	int doze = 0;
	
	int secretnumber =  (int) (Math.random () *1001);
	
	
	
	void guessinggamereverse (String choise) {
			
  System.out.print (" Do you want to guess (y),let the machine guess (m) or stop (s)");
   
int choice = sc.nextInt();
switch (choice){
	
	case 1: choise = "y";
  
	   System.out.println("Guess a number");
   
	   while (guess != secretnumber){
   
	   guess = sc.nextInt();  
	   doze ++;
	   
	   
	   if (guess > secretnumber){
	   System.out.println("lower");}
	   
	   else 
	   System.out.println("higher");} 
	   
	   System.out.println("Congratulations, you used  " + doze + " guesses");
		
	
	case 2: choise = "m";
		
	 
		
	case 3: choise = "s";
		
}
	
	
}
  
	
   
   
public static void main (String[] args){
new Guessinggame (). guessinggame();
		
		}
}

Edit Xenion: ik heb codetags toegevoegd en de titel aangepast om het wat duidelijker te maken

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 29 december 2011 - 14:00

Eerst moet de computer een getal gokken tussen een ondergrens en bovengrens. Die staan in het begin standaard op 0 en 1000 zeker?
De speler moet daarop antwoorden of het getal hoger of lager is.
Als het hoger is: de ondergrens wordt nu het geraden getal.
Als het lager is: de bovengrens wordt nu het geraden getal.
De computer gokt nu een getal tussen de nieuwe grenzen.

Wanneer de computer het getal geraden heeft (of na x aantal pogingen) moet het spel weer stoppen, zoals in het normale getal.

#3

EvilBro

    EvilBro


  • >5k berichten
  • 6703 berichten
  • VIP

Geplaatst op 01 januari 2012 - 21:09

Mijn eerste tip zou zijn dat je functies moet gebruiken om je code leesbaarder te maken. Zo zou je alle code bij case 1 in een functie kunnen plaatsen.

Ik weet niet wat het niveau is van je cursus, maar ik denk dat het nog beter zou zijn als je klassen zou gebruiken. Je spelklasse zou dan er dan bijvoorbeeld zo uit kunnen zien:
public class HighLowGame {
	private Player knower;
	private Player guesser;
	
	public HighLowGame(Player knower, Player guesser) {
		this.knower = knower;
		this.guesser = guesser;
	}
	
	void playGame() {
		boolean guessed = false;
		while (!guessed) {
			int guess = guesser.makeGuess();
			Status diff = knower.checkGuess(guess);
			guesser.giveFeedback(diff);
			if (diff == Status.EQUAL) {
				guessed = true;
			}
		}
	}
}
Deze klasse bevat in de methode 'playGame' de algemene structuur van hoe een spel gespeeld wordt. Aan deze klasse kan je dan spelers meegeven (menselijke of computerspelers).

#4

Winnie

    Winnie


  • 0 - 25 berichten
  • 24 berichten
  • Gebruiker

Geplaatst op 01 januari 2012 - 21:36

@ Xenion,

Het getal in het begin in dit geval "secret number" is indd gedefinieerd tussen 1 en 1000.

Deze kan worden toegepast wanneer de speler kiest om het zelf op te lossen.

Wanneer de computer moet raden weet ik niet of dit getal ook kan worden toegepast.

Van de onder en boven grens heb ik wel eens gehoord alleen heb ik geen idee hoe het commando hiervoor luidt.

mischien een suggestie?

Groet winnie

#5

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 01 januari 2012 - 22:25

Hoe x bepaald wordt kan je kiezen, je kan een random getal genereren en dat aan de gebruiker tonen of je kan aan de gebruiker vragen om zelf een getal in te geven.

Ik zie je probleem met de grenzen niet. Dat zijn gewoon integer getallen. Ze worden aangepast naargelang de antwoorden (hoger/lager) van de gebruiker op een gok van de computer.

De computer moet een getal gokken dat binnen die grenzen ligt, dus daar moet je dan een functie voor schrijven. (Kan je vast wel vinden op google.)





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures