2016-03-21 11 views
-2

Mein Preis ist richtig Programm ist immer noch unvollständig, da ich herausfinden muss, wer mein Gewinner jedes Mal ist.Wie finde ich heraus, welcher Spieler das nächstbeste Gebot hat? Price is Right game java?

Der Gewinner des Spiels muss das höchste Gebot haben, das dem Wert des Objekts am nächsten kommt, aber nicht höher als der Wert des Objekts sein kann.

Wie kann ich den Gewinner in mein Programm aufnehmen? Hier ist mein Code so weit:

public class PriceisRight 
{ 

    public static void main(String args[]) 
    { 

    new PriceisRight(); 
    } 

    public PriceisRight() 
    { 

    System.out.println("Welcome to the Price is Right!\n"); 

    String name1 = IBIO.inputString("Name of contestant #1: "); 
    String name2 = IBIO.inputString("Name of contestant #2: "); 
    String name3 = IBIO.inputString("Name of contestant #3: "); 
    String name4 = IBIO.inputString("Name of contestant #4: "); 
    System.out.println(""); 

    char again = 'y'; 
    while (again == 'Y' || again == 'y') 
    { 
    String THING = item(); 
    System.out.println("The item to bid on is a "+ THING +"."); 
    System.out.println("The contestant who is the closest without going"); 
    System.out.println("over wins. The maximum bid is $1000.\n"); 

    int bid1 = IBIO.inputInt (name1 +", what is your bid? "); 
    int bid2 = IBIO.inputInt (name2 +", what is your bid? "); 
    int bid3 = IBIO.inputInt (name3 +", what is your bid? "); 
    int bid4 = IBIO.inputInt (name4 +", what is your bid? "); 

    again = IBIO.inputChar ("Play again? (y/n) "); 
    System.out.println (""); 
    }  
    } 


    public String item() 
    { 
    int num = (int)(Math.random() * 5); 
    int price = 0; 
    String object = ""; 
    if (num == 1) 
     { 
     object = ("sofa"); 
     price = 987; 
     } 

    else if (num == 2) 
    { 
     object = ("TV"); 
     price = 560; 
    } 

    else if(num == 3) 
    { 
     object = ("bed"); 
     price = 226; 
     } 

    else if(num == 4) 
     { 
     object = ("table"); 
     price = 354; 
     } 

    else 
    { 
     object = ("chair"); 
     price = 70; 
     } 
     return object; 
    } 

} 
+1

Haben Sie versucht, dies noch zu implementieren? Sie haben Code, der den Preis festlegt, aber Sie verwenden ihn nicht. Sie müssten den Preis irgendwie zurückgeben und dann zum Vergleich mit den Geboten verwenden. –

+0

Ja, das ist meine Frage. Wie mache ich das? – asdfghjkl9999

+1

Probieren Sie zuerst etwas, irgendetwas. Sie müssen den Preis in Ihre Hauptmethode eingeben, aber Sie geben gerade eine 'Zeichenfolge' mit dem Objektnamen zurück. Berücksichtigen Sie vielleicht, dass Sie eine Klasse/enum erstellen, um Ihr Objekt zu repräsentieren? –

Antwort

1

Zunächst sollten Sie eine Klasse, relevante Informationen, um Ihre Spieler zu halten. Beispiel;

class Player 
{ 
    public String name; 
    public int currentBid = 0; 

    public Player(String name) 
    { 
     this.name = name; 
    } 

    public void bid(int amount) 
    { 
     this.currentBid = amount; 
    } 
} 

Jetzt erstellen Sie Ihre Instanzen.

player1 = new Player("Player 1"); 
player2 = new Player("Player 2"); 
player3 = new Player("Player 3"); 

Machen Sie Ihre Gebote.

Versuchen Sie dies in Ihrer Hauptklasse.

public Player highestBidder() 
{ 
    Player currentHighestBidder; 

    //I am assuming you would logically keep track of the number of players, in an ArrayList in this case. 
    for(int p = 0; p < players.size(); p++) 
    { 
     //Could easily combine this 'if' and the next one, but I prefer to keep my conditionals separated. It is probably a better practice to combine them using '||' 
     if(currentHighestBidder == null) 
     { 
      currentHighestBidder = players.get(p); 
     } 

     if(players.get(p).currentBid > currentHighestBidder.currentBid) 
     { 
      currentHighestBidder = players.get(p); 
     } 
    } 
    return currentHighestBidder; 
} 

Ich bevor devitalen Felder direkt zugreifen zu können, aber sie sind mehr als willkommen, ein Verfahren fügen Sie den name des Players zu holen und das Feld private zu machen. Wirklich nur faules Tippen meinerseits;)

+1

Java ist eine objektorientierte Sprache; Zu viele Studenten und Anfänger neigen dazu, immer in Primitiven zu denken. Besser so zu kapseln. – duffymo

Verwandte Themen