Brauche Fußball-Ratschlag

Jessica79

Neues Mitglied
Hallo,

habs vorhin wohl in die falsche Sparte gestellt. Ich habe hier ein Java-Fußballspiel, bei dem ich eine Verlängerung einbauen möchte, falls es nach regulärer Spielzeit für beide Mannschaften gleich steht. Bin ich da auf dem richtigen Weg? :rtfm:

Java:
    public class Freundschaftsfussballspiel {
    // Attribute
    private Mannschaft heimMannschaft;
    private Mannschaft gastMannschaft;
    private int punkteHeim;
    private int punkteGast;
     
    // get-Methoden
    public int getPunkteHeim() {
    return punkteHeim;
    }
     
    public int getPunkteGast() {
    return punkteGast;
    }
     
    public String getErgebnisText() {
    return " ERGEBNIS: \n\n " + heimMannschaft.getName() + " - "
    + gastMannschaft.getName() + " " + punkteHeim + ":"
    + punkteGast + ".";
    }
     
     
    boolean torchance(Spieler s, Torwart t, int aktuelleZeit, Mannschaft m) {
    System.out.println("\n" + aktuelleZeit + ". Minute: ");
    System.out.println(" Chance fuer " + m.getName() + " ...");
    System.out.println(" " + s.getName() + " zieht ab");
    boolean tor = !t.haelt(s.schiesstAufTor());
    return tor;
    }
     
    public void starteSpiel(Mannschaft m1, Mannschaft m2) {
    heimMannschaft = m1;
    gastMannschaft = m2;
    punkteHeim = 0;
    punkteGast = 0;
     
    // Spielzeit betraegt 90 Minuten + Nachspielzeit + Verlängerung
    int spieldauer = 90 + (int) (Math.random() * 5);
    int zeit = 1;
    int naechsteAktion = (int) (Math.random() * 15) + 1;
    int verlaengerung = 30 + (int) (Math.random() * 5);
     
    // solange das Spiel laeuft, koennen Torchancen entstehen
    while (zeit + naechsteAktion <= spieldauer) {
    zeit = zeit + naechsteAktion;
     
    if (zeit + naechsteAktion >= spieldauer & punkteHeim == punkteGast) {
    zeit + naechsteAktion >= spieldauer + verlaengerung};
     
    // Staerke der beiden Mannschaften und Spielniveau berechnen
    double staerke1 = 0.8 * m1.getStaerke() + 0.15 * m1.getMotivation()
    + 0.05 * m1.getTrainer().getErfahrung();
    double staerke2 = 0.8 * m2.getStaerke() + 0.15 * m2.getMotivation()
    + 0.05 * m2.getTrainer().getErfahrung();
    double spielniveau = (int) (Math.random() * (Math.round(staerke1
    + staerke2)));
     
    // zufaellige einen Torschuetzen bestimmen
    int schuetze = (int) (Math.random() * 10);
     
    // Angriff laeuft...
    if (spielniveau < staerke1) {// Mannschaft 1 greift an
    Spieler s = m1.getKader()[schuetze];
    if (torchance(s, m2.getTorwart(), zeit, m1)) {// Tor faellt
    punkteHeim++;
    s.addTor();
    System.out.println(" TOR!!! " + punkteHeim + ":"
    + punkteGast + " " + s.getName() + " ("
    + s.getTore() + ")");
    } else {// Tor faellt nicht
    System.out.println(" " + m2.getTorwart().getName()
    + " pariert glanzvoll.");
    }
     
    } else {// Mannschaft 2 greift an
    Spieler s = m2.getKader()[schuetze];
    if (torchance(s, m1.getTorwart(), zeit, m2)) {// Tor faellt
    punkteGast++;
    s.addTor();
    System.out.println(" TOR!!! " + punkteHeim + ":"
    + punkteGast + " " + s.getName() + " ("
    + s.getTore() + ")");
    } else {// Tor faellt nicht
    System.out.println(" " + m1.getTorwart().getName()
    + " pariert glanzvoll.");
    }
     
    }
     
    naechsteAktion = (int) (Math.random() * 15) + 1;
    }
    }
    }
 
habs vorhin wohl in die falsche Sparte gestellt.

Habe den anderen Thread geschlossen 🙂

Bin ich da auf dem richtigen Weg?

Nein, das kann man auch nur schwer beantworten da du nicht sagst wie der Code ausgeschaut hast und was du eingebaut hast um die Verlängerung zu realisieren 😉

Ich nehme an es geht um folgende Zeilen:
Java:
    // solange das Spiel laeuft, koennen Torchancen entstehen
    while (zeit + naechsteAktion <= spieldauer) {
    zeit = zeit + naechsteAktion;
     
    if (zeit + naechsteAktion >= spieldauer & punkteHeim == punkteGast) {
    zeit + naechsteAktion >= spieldauer + verlaengerung};

Leider ist der Code innerhalb der if-Bedingung nicht richtig. Was soll dort passieren?
Am einfachsten wäre nach der 1.while-Schleife (für die reguläre Spielzeit) eine Abfrage ob der Spielstand ein Unentschieden ist, wenn ja wird wieder eine while-Schleife ausgeführt (nur ist diesmal die Bedingung anders).

Da der Inhalt der beiden while-Schleifen wahrscheinlich gleich sein wird wäre es sicher praktisch diesen Code in eine Methode auszulagern (anstatt ihn doppelt zu schreiben).
 

Neue Themen


Zurück
Oben