Hi. ich muss ein programm für ein baskettball sportliga schreiben. die paarungen, spieltag und spielplan erstellen genauso wie diese Internetseite.
http://www.basketball-tabelle.de/basketball/bundesliga-herren/basketball-tabelle.php
Ich hab ein code für fußball aber ich weiß nicht wie ich das für baskettball schreiben soll. ich komme mit der poisson-verteilung und solche sachen nicht klar.
könnt ihr mir vielleicht helfen? danke
http://www.basketball-tabelle.de/basketball/bundesliga-herren/basketball-tabelle.php
Ich hab ein code für fußball aber ich weiß nicht wie ich das für baskettball schreiben soll. ich komme mit der poisson-verteilung und solche sachen nicht klar.
könnt ihr mir vielleicht helfen? danke
Code:
public class Spielplan
{
private java.util.ArrayList<Spieltag> spielplan = new java.util.ArrayList<Spieltag>();
private Tabelle tabelle;
private Stochastik stochastik = new Stochastik();
public Spielplan(Tabelle tabelle)
{
this.tabelle = tabelle;
}
public java.util.ArrayList<Spieltag> getSpielplan()
{
return spielplan;
}
public void setSpielplan(java.util.ArrayList<Spieltag> spielplan)
{
this.spielplan = spielplan;
}
/**
* Gibt den Spielplan, unabhängig davon ob er bereits simuliert
* wurde oder nicht, aus. Wenn er bereits simuliert wurde werden
* zusätzlich die erzielten Tore ausgegeben.
*/
public void spielplanAusgeben()
{
Spieltag spieltag = null;
int zaehlvariable1 = 0;
while (zaehlvariable1 < (tabelle.getMannschaftsliste().size() - 1) * 2)
{
spieltag = spielplan.get(zaehlvariable1);
java.lang.System.out.print("\n::::::::: Heimmannschaft Spieltag " + (zaehlvariable1 + 1) + " Gastmannschaft ::::::\n");
spieltagAusgeben(spieltag);
zaehlvariable1++;
}
}
/**
* Gibt die Ergebnisse einzelner Spieltage aus und wird von spielplanAusgeben verwendet
*/
public void spieltagAusgeben(Spieltag spieltag)
{
int zaehlvariable = 0;
while (zaehlvariable < (tabelle.getMannschaftsliste().size() / 2))
{
MeinSpiel spiel = spieltag.getSpiele().get(zaehlvariable);
java.lang.System.out
.print("Spiel "
+ (zaehlvariable + 1)
+ " - "
+ (Stringverarbeitung.stringMitNachgestelltenLeerzeichenAufLaengeZuschneiden(spiel.getMannschaftA().getName(), 22) + " - " + Stringverarbeitung
.stringMitVorangestelltenLeerzeichenAufLaengeZuschneiden(spiel.getMannschaftB().getName(), 22)));
if (spiel.getToreMannschaftA() != null)
{
java.lang.System.out.print(" " + spiel.getToreMannschaftA() + " - " + spiel.getToreMannschaftB());
}
java.lang.System.out.print("\n");
zaehlvariable++;
}
}
/**
* @param spieltagnummer Erwartet den Spieltag, dessen
* Ergebnisse zu analysieren und einzutragen sind.
*
* Diese Methode berechnet Tabellendaten wie Tore, Gegentore, Niederlagen,
* Siege, Unentschieden, Anzahl Spiele von allen beteiligten Mannschaften
* und speichert sie ab.
* Wenn bereits Ergebnisse eingetragen sind werden diese restlos gelöscht und
* dann neu berechnet.
*/
public void ergebnisseEinesSpieltagsEintragen(int spieltagnummer)
{
if (spielplan.get(spieltagnummer - 1).getSpiele().get(0).getToreMannschaftA() != null)
{
for (MeinSpiel spiel : spielplan.get(spieltagnummer - 1).getSpiele())
{
MeineMannschaft mannschaftA = spiel.getMannschaftA();
MeineMannschaft mannschaftB = spiel.getMannschaftB();
if (spieltagnummer == 1)
{
mannschaftA.tabellenberechnungZuruecksetzen();
mannschaftB.tabellenberechnungZuruecksetzen();
}
mannschaftA.setTore(0 + mannschaftA.getTore() + spiel.getToreMannschaftA());
mannschaftB.setTore(mannschaftB.getTore() + spiel.getToreMannschaftB());
mannschaftA.setGegentore(mannschaftA.getGegentore() + spiel.getToreMannschaftB());
mannschaftB.setGegentore(mannschaftB.getGegentore() + spiel.getToreMannschaftA());
mannschaftA.setAnzahlAbsolvierterSpiele(mannschaftA.getAnzahlAbsolvierterSpiele() + 1);
mannschaftB.setAnzahlAbsolvierterSpiele(mannschaftB.getAnzahlAbsolvierterSpiele() + 1);
if (spiel.getToreMannschaftA() > spiel.getToreMannschaftB())
{
mannschaftA.setAnzahlSiege(mannschaftA.getAnzahlSiege() + 1);
mannschaftB.setAnzahlNiederlagen(mannschaftB.getAnzahlNiederlagen() + 1);
mannschaftA.setTabellenpunkte(mannschaftA.getTabellenpunkte() + 3);
}
else if (spiel.getToreMannschaftA() < spiel.getToreMannschaftB())
{
mannschaftB.setAnzahlSiege(mannschaftB.getAnzahlSiege() + 1);
mannschaftA.setAnzahlNiederlagen(mannschaftA.getAnzahlNiederlagen() + 1);
mannschaftB.setTabellenpunkte(mannschaftB.getTabellenpunkte() + 3);
}
else
{
mannschaftA.setAnzahlRemis(mannschaftA.getAnzahlRemis() + 1);
mannschaftB.setAnzahlRemis(mannschaftB.getAnzahlRemis() + 1);
mannschaftA.setTabellenpunkte(mannschaftA.getTabellenpunkte() + 1);
mannschaftB.setTabellenpunkte(mannschaftB.getTabellenpunkte() + 1);
}
}
}
}
/**
* Ruft die Methode ergebnisseEinesSpieltagsEintragen
* für alle Spieltage auf.
*/
public void ergebnisseMehrererSpieltageEintragen()
{
int zaehlvariable = 1;
while (zaehlvariable <= (tabelle.getMannschaftsliste().size()-1) * 2)
{
ergebnisseEinesSpieltagsEintragen(zaehlvariable);
zaehlvariable = zaehlvariable + 1;
}
}
/**
* @param spieltagnr Erwartet die Nummer des zu planenden Spieltages
* @param rueckrunde Erwartet einen boolean Wert der "true" ist falls
* der übermittelte Spieltag in der Rückrunde liegt
*
* @return Gibt eine Objekt von Spieltag zurück
* in dem alle Spiele die an dem Tag stattfinden
* sowie die Spieltagnummer gespeichert sind.
*
* Plant genau einen Spieltag unter Verwendung des hier
* beschriebenen Algorhythmus:
* http://de.wikipedia.org/wiki/Spielplan_%28Sport%29
*
*/
public Spieltag spieltagPlanen(int spieltagnr, boolean rueckrunde)
{
MeinSpiel spiel = null;
final int MANNSCHAFTSANZAHL = tabelle.getMannschaftsliste().size();
Spieltag spieltag = null;
java.util.ArrayList<MeinSpiel> spiele = new java.util.ArrayList<MeinSpiel>();
java.util.ArrayList<MeineMannschaft> vergebeneMannschaften = new java.util.ArrayList<MeineMannschaft>();
int vergebeneSpiele = 0;
int mannschaftA = 1;
int mannschaftB = 1;
while (vergebeneSpiele < MANNSCHAFTSANZAHL / 2)
{
while (mannschaftA <= MANNSCHAFTSANZAHL - 1)
{
while (mannschaftB <= MANNSCHAFTSANZAHL - 1)
{
if (((mannschaftA + mannschaftB) % (MANNSCHAFTSANZAHL - 1) == spieltagnr) && (mannschaftA != mannschaftB))
{
MeineMannschaft mannschaftAObjekt = tabelle.getMannschaftsliste().get(mannschaftA - 1);
MeineMannschaft mannschaftBObjekt = tabelle.getMannschaftsliste().get(mannschaftB - 1);
if (!((vergebeneMannschaften.contains(mannschaftAObjekt) || (vergebeneMannschaften.contains(mannschaftBObjekt)))))
{
if (!rueckrunde)
spiel = new MeinSpiel(mannschaftAObjekt, mannschaftBObjekt, null, null);
else
spiel = new MeinSpiel(mannschaftBObjekt, mannschaftAObjekt, null, null);
spiele.add(spiel);
vergebeneMannschaften.add(mannschaftAObjekt);
vergebeneMannschaften.add(mannschaftBObjekt);
vergebeneSpiele = vergebeneSpiele + 1;
}
}
mannschaftB = mannschaftB + 1;
}
mannschaftA = mannschaftA + 1;
mannschaftB = 1;
}
mannschaftA = 1;
while ((vergebeneMannschaften.contains(tabelle.getMannschaftsliste().get(mannschaftA - 1))))
{
mannschaftA = mannschaftA + 1;
}
if (!rueckrunde)
spiel = new MeinSpiel(tabelle.getMannschaftsliste().get(mannschaftA - 1), tabelle.getMannschaftsliste().get(MANNSCHAFTSANZAHL - 1), null, null);
else
spiel = new MeinSpiel(tabelle.getMannschaftsliste().get(MANNSCHAFTSANZAHL - 1), tabelle.getMannschaftsliste().get(mannschaftA - 1), null, null);
spiele.add(spiel);
vergebeneSpiele = vergebeneSpiele + 1;
}
if (!rueckrunde)
spieltag = new Spieltag(spieltagnr + 1, spiele);
else
spieltag = new Spieltag(spieltagnr + MANNSCHAFTSANZAHL, spiele);
return spieltag;
}
/**
* Legt einen Spielplan an. Mischt zuerst die Mannschaften durch, da
* die Spielvergabe abhängig von der Position in der Liste erfolgt. So ist
* (fast) jeder neue Spielplan einzigartig.
* * Wenn der Spieltag in der Rückrunde liegt wird beim Spieltag planen
* die Variable true übergeben, was der Methode spieltagPlanen den
* Befehl gibt die Spiele aus der Hinrunde zu reproduzieren und dabei Heim- und
* Gastmannschaft zu vertauschen. So findet jede Begegnung 2 mal statt und jede
* beteiligte Mannschaft darf 1 mal zuhause spielen.
*/
public void spielplanAnlegen()
{
final int MANNSCHAFTSANZAHL = tabelle.getMannschaftsliste().size();
tabelle.mannschaftenMischen(tabelle.getMannschaftsliste());
int zaehlvariable = 0;
while (zaehlvariable < MANNSCHAFTSANZAHL - 1)
{
spielplan.add(spieltagPlanen(zaehlvariable, false));
zaehlvariable++;
}
while (zaehlvariable > MANNSCHAFTSANZAHL - 2 && zaehlvariable < (MANNSCHAFTSANZAHL - 1) * 2)
{
spielplan.add(spieltagPlanen(zaehlvariable - MANNSCHAFTSANZAHL + 1, true));
zaehlvariable++;
}
}
/**
* @param spieltagnummer Erwartet die Nummer eines Spieltages der simuliert werden soll
*
* Simuliert die Tore die in jeder Begegnung eines Spieltages gefallen sind und trägt sie
* in Objekten vom Typ MeinSpiel ein
*/
public void spieltagSimulieren(int spieltagnummer)
{
for (MeinSpiel spiel : spielplan.get(spieltagnummer - 1).getSpiele())
{
spiel.setToreMannschaftA(stochastik.toreBeiSpielstaerke(spiel.getMannschaftA().getSpielstaerke()));
spiel.setToreMannschaftB(stochastik.toreBeiSpielstaerke(spiel.getMannschaftB().getSpielstaerke()));
}
}
/**
* @param bisSpieltagnummer Erwartet die Nummer eines Spieltages BIS
* zu dem die Spieltage simuliert werden sollen
* Ermöglicht es beispielsweise beim Fussball mit 18 Mannschaften
* nur die ersten 17 Spieltage zu simulieren
* um so den Herbstmeister zu ermitteln.
*/
public void spieltageSimulieren(int bisSpieltagnummer)
{
int spieltagnummer = 1;
while (spieltagnummer <= bisSpieltagnummer)
{
spieltagSimulieren(spieltagnummer);
spieltagnummer = spieltagnummer + 1;
}
}
}