2017-05-21 3 views
0

Ich arbeite an einem einfachen Spiel mit N-Spielern. Angenommen, N = 5 dann, Spieler spielen:Array Traverse von neben Max Wert

Spieler 1, Spieler 2, Spieler 3, 4 Spieler, Spieler 5.

Wie in Spiel, einer von fünf wird der Sieger sein. Hier ist die gewinnende Logik. Jeder Spieler kann einen beliebigen Wert aus folgendem Array erhalten haben, d. H. Zufallswert aus Array.

0, 1, 2, 4, 8, 16

Spieler mit der höchsten Punktzahl wird der Sieger sein.

Für einen Beispielfall habe ich einen zufälligen Index zwischen 0 und der Größe des Score-Arrays (6) generiert und jedem Spieler zugewiesen.

int[] data = {0,1,2,4,8,16}; 
    int[] samples = new int[5]; 

    Random random = new Random(); 
    for(int j=0;j<5;j++){ 
     int value = random.nextInt(6); 
     samples[j] = data[value]; 
    } 

Dann habe ich Ergebnis so bekam:

Bei mehreren höchste Punktzahl zuerst mit der höchsten Punktzahl ein Gewinner sein wird. Im obigen Fall ist Spieler 2 Gewinner mit einem Ergebnis von 16.

Dies ist die erste Runde.

Jetzt will ich von neben Spieler 2 d-Spieler-3

Hier ist die zweite Stichprobe von Partituren zufällig generierten fünf Noten zuweisen.

Was ich will, ist, diese Werte wie die Zuweisung: für die zweite Runde ist

Player3 = 4 
Player4 = 1 
Player5 = 2 
Player1 = 0 
Player2 = 16 

Above Fall. Wie erreiche ich das? Wie man Array so iteriert, damit ich Sieger für 10 Runde finden kann.

Jeder Vorschlag, Hilfe wird geschätzt.

+0

Ist Spieler ein Objekt mit definierten Parametern? – MZ4Code

+0

Hier, nur einfache Array der Größe 5. Index definieren Spieler und Wert definieren Punktzahl –

Antwort

1

Solange dies nur Hausaufgaben üben und nicht hier ist etwas, das funktioniert:

int[] data = {0,1,2,4,8,16}; 
    int[] samples = new int[5]; 

    Random random = new Random(); 
    int value; 
    int round = 3; // take in the number of rounds. 
    int[] wins = {0,0,0,0,0}; // we'll use this to store the player # of wins. 
    // Run the game for the specified number of rounds. 
    for(int i = 0; i < round; i++){ 
    // Get 5 random numbers for each player. 
    for(int j=0;j<5;j++){ 
     value = random.nextInt(6); 
     samples[j] = data[value]; 
    } 
    // Set the current winner to junk values. 
    int max = Integer.MIN_VALUE; 
    int winner = 0; 
    // Run though the samples for the current round. 
    for(int j = 0; j < samples.length; j++){ 
     // Print test of each players number. 
     System.out.println("Player" + (j + 1) + " Score " + samples[j]); 
     // Check in order which player won the round. 
     if(samples[j] > max){ 
      max = samples[j]; 
      winner = j; 
     } 
    } 
    // Increment the number of wins for the winner. 
    wins[winner]++; 
    System.out.println(); 
    } 
    // Print test of round wins. 
    for(int i = 0; i < wins.length; i++){ 
    System.out.println("Player" + (i+1) + " Wins " + wins[i]); 
    } 
} 
+0

Ich versuche nur, Logik hinter dem Problem zu finden, und ich habe hier gefunden. Vielen Dank –

1

Vielleicht wird dies einige helfen. Iteriert durch alle Elemente der samples irgend Index begonnen start:

for (int j = 0; j < samples.length; j++) { 
     int si = (start + j) % samples.length; 
     System.out.println("Loop count: " + j + " looking at samples[" + si + "]"); 
    }