# Klausurersatz: Ein Java-Programm erstellen und dieses präsentieren.



## Furkos (5. Dez 2015)

Hallo liebe Community,

ich muss für die Schule ein Programm erstellen und dieses Programm dann quasi Step-By-Step präsentieren.

Ich habe mich für ein Saufspiel entschieden und habe auch schon mit dem Code angefangen.
Das Spiel läuft wie folgt ab:
1. Es wird die Anzahl der Spieler eingegeben.
2. Jeder Spieler muss seinen Vornamen eingeben.
3. Jeweils 2 Spieler werden in Wettkämpfe verstrickt. // Bei 6 Spielern, 3 Wettkämpfe
4. Ich werde in Zukunft noch Klassen mit verschiedenen Minigames erstellen, die Zufällig auf die Wettkämpfe zugreifen und werde auch Regeln aufstellen. (z.B. Verlierer des Spiels muss Kurzen oder Bier trinken, etc.)



```
import java.util.*;





public class Saufspiel
{


  public static int randZahl(int min, int max)      // Zufallsfunktion von einem Freund

  {
    Random rand = new Random();
    int zufallsZahl = rand.nextInt((max - min) + 1) + min;
    return zufallsZahl;
  
  }


  public static void main(String argv[])
  {
  
  
    int anzahl;
    int i;
    String Namen[];
    int zufall;
  
  
  
    Scanner eingabe = new Scanner(System.in);
  
    System.out.println("Willkommen zum Saufspiel!");
    System.out.println("");
    System.out.print("Gebe die Anzahl der Spieler ein: ");
    anzahl = eingabe.nextInt();
  
    int zuff = randZahl(0,anzahl);
  
  
  
    Namen = new String[anzahl];
  
    System.out.println("Ihr seid "+anzahl+" Spieler.");
  
    System.out.println("");
    System.out.println("Gebt jetzt nach der Reihe eure Vornamen ein: ");
  
    for (i=0;i<anzahl ;i++ )
    {
    
      Scanner strscanner = new Scanner(System.in);
    
      System.out.print("Der "+(i+1)+". Name: ");
    
      Namen[i] = strscanner.nextLine();
    
    
    }
  
  
    System.out.println("------------------------------------------");
    System.out.println("------------------------------------------");
  
    for (i=0;i<anzahl ;i++ ) {
    
    
      System.out.print("Der "+(i+1)+". Spieler heißt: "+Namen[i]+" .");
      System.out.println("");
    
    
    }
  
    System.out.println("------------------------------------------");
    System.out.println("------------------------------------------");
    System.out.println("");
    System.out.println("Let The Sauf-War start!");
    System.out.println("");
  
  
       for (i=0;i<3;i++) {      // Das sollte die "Random-Schleife" sein, die die Spieler im Zufallsprinzip gegeneinander setzt
                                // Was mir hierbei wichtig ist, ist, dass ein "vs." zwischen den Spielern steht und falls bei int Anzahl eine ungerade
                                // Zahl eingegeben wurde ein Spieler aussetzen muss (Bsp: Hans vs. None oder so)
    
      zufall = (int) (Math.random() * anzahl) +1;
    
      System.out.print((i+1)+". Battle = ");
    
      for(int j=2;j<4;j++)
      {
      
        if (i%2==0) {
          System.out.print(Namen[zufall]+ " vs. ");
        }
      
        else {
          System.out.print(Namen[zufall]);
          System.out.println("");
        }
      }
    
    
    
    }            
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  }
}
```


Was mein Problem ist, ist das setzen der Strings(Spieler) in Wettkämpfe. Ich will, dass die Spieler in folgendem Format gegeneinander aufgelistet werden:
Hans vs. Dieter --- Schere-Stein-Papier
David vs. Ron   --- Flip-Cup
(Spieler 1 vs Spieler 3 --- GameClass)

Mein Problem ist der Math.Random-Befehl und wie ich ihn setzen muss, damit er im Namen[] eine Zahl zwischen 1 und anzahl nimmt, dann schon gesetzte Zahlen nicht nochmal verwendet und zu letzt wenn Anzahl ungerade ist (Spieler-Anzahl) den letzten Random-Spieler gegen None setzt, so dass er aussetzen muss.

Für Hilfe bedanke ich mich schonmal im voraus ).

Mit freundlichen Grüßen

Furkos


----------



## Furkos (5. Dez 2015)

Okay hab zwei Sachen gefixt.
1. Ich habe for(int j=2;j<4;j++)
      {

        if (i%2==0) {
System.out.print(Namen[zufall]+ " vs. ");
        }

        else {
System.out.print(Namen[zufall]);
System.out.println("");
        }
      }
   in dem if habe ich das i zu nem j geändert, dummer Fehler-.-

2. Ich habe den zufall = (int) (Math.random() * anzahl) +1; Befehl in die int j Schleife gesteckt und jetzt funktioniert alles etwas Besser

Was mir jetzt noch fehlt ist, dass er nicht 2 Mal den selben Namen in den Wettkämpfen benutzen soll.


----------



## strußi (5. Dez 2015)

du kannst die Spieler aus einer Liste wählen und deren Objektreferenz in einer Lokalen Variablen speichern und anschließend aus der Liste löschen, und anschließend über eine neue Zufallszahl einen neuen Spieler "raussuchen"

zu Zufallszahlen kannst du dir mal Random in der api unter java.util anschauen


----------

