Servus nochmal,
ich bin ja gerade dabei einen kleinen Fussball Manager zu schreiben.
Ich habe bisher eine ganz einfache Spielberechnung - die mir aber nicht so recht gefällt und im Moment fällt mir nichts ein, wie ich das ganze verbessern könnte.
Bisher habe ich ein Array, wo ich die jeweiligen Spieler und ihre Stärken gespeichert habe. Aus diesen Einzelstärken berechne ich dann die Gesamt-Stärke einer Mannschaft.
Aus diesen Stärken werden dann einmal eine Quote für jedes Team ausgerechnet und per Zufall auch für jedes Team eine Anzahl an Angriffen, die für eine Spielberechnung zur Verfügung stehen.
Für den Spielablauf habe ich eine einfache for Schleife, die für 90 Minuten jeweils eine Aktion per Zufall bestimmt.
Die jeweiligen Aktionen, ob z.B. ein Tor fällt oder eine Foul begangen wird und ob es eine Gelbe Karte gibt oder so sind in einzelnen Funktionen geschrieben und werden dann ausgeführt, wenn der Zufall diese Aktion eben auswählt.
Hier z.B. die Funktion, wie ein Tor fällt (Ausschnitt)(Welches Team die Torchance bekommt, wird per Zufall entscheiden):
Das wars eigentlich auch schon.
Ist bisher recht simpel, liefert aber eigentlich ganz gute Ergebnisse ab
Was mich daran stört, ist dass die einzelnen Spieler darin eigentlich keine große Bedeutung haben. Deren Stärken werden nur zu beginn für die Gesamt Stäke gebraucht, und den Rest erledigt der Zufall.
Ich würde gerne die individuellen Stärken des einzelnen Spielers stärker einbeziehen wollen, und nicht nur die Stärken, sondern auch noch andere Dinge wie z.B. die Form eines Spielers oder dessen Frische usw.
Am besten sollten diese Dinge dann nicht ganz zu beginn einmal berechnet werden und fertig, sondern dies sollte denke ich mal am besten in jeder Situation neu zum Tragen kommen, ob nun ein Zweikampf gewonnen wird, ein Foul begangen wird oder eben ein Tor geschossen wird.
Nur leider weiß ich da im Moment nicht weiter....
Würde mich freuen, wenn User, die vieleicht auch einen Fussball Manager betreiben oder daran arbeiten, aber natürlich auch alle anderen mir vieleicht ein paar Tipps oder Anregungen geben könnten, wie ich sowas vieleicht realisieren könnte.
Würde mich riesig freuen
Entschuldigt bitte, dass der Beitrag so lang geworden ist
Und viele Grüße
bageleudi
ich bin ja gerade dabei einen kleinen Fussball Manager zu schreiben.
Ich habe bisher eine ganz einfache Spielberechnung - die mir aber nicht so recht gefällt und im Moment fällt mir nichts ein, wie ich das ganze verbessern könnte.
Bisher habe ich ein Array, wo ich die jeweiligen Spieler und ihre Stärken gespeichert habe. Aus diesen Einzelstärken berechne ich dann die Gesamt-Stärke einer Mannschaft.
PHP-Code:
//Team A
$teams[0][] = array("Mario Gomez", 6, "Bayern München", 'Sturm_rechts', 'Nr' => "0", "Tore" => "0", "Gelb" => "0", "Gelb_Rot" => "0", "Rot" => "0");
$teams[0][] = array("Miroslav Klose", 6, "Bayern München", 'Sturm_links', 'Nr' => "1", "Tore" => "0", "Gelb" => "0", "Gelb_Rot" => "0", "Rot" => "0");
$teams[0][] = array("Bastian Schweinsteiger", 6, "Bayern München", 'Mittelfeld_rechts', 'Nr' => "2", "Tore" => "0", "Gelb" => "0", "Gelb_Rot" => "0", "Rot" => "0");
$teams[0][] = array("Franck Ribery", 7, "Bayern München", 'Mittelfeld_links', 'Nr' => "3", "Tore" => "0", "Gelb" => "0", "Gelb_Rot" => "0", "Rot" => "0");
$teams[0][] = array("Mark van Bommel", 6, "Bayern München", 'Mittelfeld_mitte', 'Nr' => "4", "Tore" => "0", "Gelb" => "0", "Gelb_Rot" => "0", "Rot" => "0");
$teams[0][] = array("Anatoly Tymoshcuk", 5, "Bayern München", 'Mittelfeld_mitte', 'Nr' => "5", "Tore" => "0", "Gelb" => "0", "Gelb_Rot" => "0", "Rot" => "0");
$teams[0][] = array("Edson Braafheid", 5, "Bayern München", 'Abwehr_links', 'Nr' => "6", "Tore" => "0", "Gelb" => "0", "Gelb_Rot" => "0", "Rot" => "0");
$teams[0][] = array("Martin Demichelis", 6, "Bayern München", 'Abwehr_mitte', 'Nr' => "7", "Tore" => "0", "Gelb" => "0", "Gelb_Rot" => "0", "Rot" => "0");
$teams[0][] = array("Daniel van Buyten", 6, "Bayern München", 'Abwehr_mitte', 'Nr' => "8", "Tore" => "0", "Gelb" => "0", "Gelb_Rot" => "0", "Rot" => "0");
$teams[0][] = array("Philipp Lahm", 7, "Bayern München", 'Abwehr_rechts', 'Nr' => "9", "Tore" => "0", "Gelb" => "0", "Gelb_Rot" => "0", "Rot" => "0");
//Team B
$teams[1][] = array("Lucas Barrios", 5, "Borussia Dormund", 'Sturm_rechts', 'Nr' => "0", "Tore" => "0", "Gelb" => "0", "Gelb_Rot" => "0", "Rot" => "0");
$teams[1][] = array("Nelson Valdez", 5, "Borussia Dormund", 'Sturm_links', 'Nr' => "1", "Tore" => "0", "Gelb" => "0", "Gelb_Rot" => "0", "Rot" => "0");
$teams[1][] = array("Kuba", 5, "Borussia Dormund", 'Mittelfeld_rechts', 'Nr' => "2", "Tore" => "0", "Gelb" => "0", "Gelb_Rot" => "0", "Rot" => "0");
$teams[1][] = array("Nuri Sahin", 5, "Borussia Dormund", 'Mittelfeld_links', 'Nr' => "3", "Tore" => "0", "Gelb" => "0", "Gelb_Rot" => "0", "Rot" => "0");
$teams[1][] = array("Tamas Hajnal", 5, "Borussia Dormund", 'Mittelfeld_mitte', 'Nr' => "4", "Tore" => "0", "Gelb" => "0", "Gelb_Rot" => "0", "Rot" => "0");
$teams[1][] = array("Sebastian Kehl", 6, "Borussia Dormund", 'Mittelfeld_mitte', 'Nr' => "5", "Tore" => "0", "Gelb" => "0", "Gelb_Rot" => "0", "Rot" => "0");
$teams[1][] = array("Dede", 6, "Borussia Dormund", 'Abwehr_links', 'Nr' => "6", "Tore" => "0", "Gelb" => "0", "Gelb_Rot" => "0", "Rot" => "0");
$teams[1][] = array("Neven Subotic", 6, "Borussia Dormund", 'Abwehr_mitte', 'Nr' => "7", "Tore" => "0", "Gelb" => "0", "Gelb_Rot" => "0", "Rot" => "0");
$teams[1][] = array("Mats Hummels", 5, "Borussia Dormund", 'Abwehr_mitte', 'Nr' => "8", "Tore" => "0", "Gelb" => "0", "Gelb_Rot" => "0", "Rot" => "0");
$teams[1][] = array("Patrick Owomoyela", 5, "Borussia Dormund", 'Abwehr_rechts', 'Nr' => "9", "Tore" => "0", "Gelb" => "0", "Gelb_Rot" => "0", "Rot" => "0");
// Stärke von Offensive und Deffensive der beiden Mannschaften
$Off_A = $teams[0][0][1] +
$teams[0][1][1] +
$teams[0][2][1] +
$teams[0][3][1] +
$teams[0][4][1];
$Def_A = $teams[0][5][1] +
$teams[0][6][1] +
$teams[0][7][1] +
$teams[0][8][1] +
$teams[0][9][1];
$Off_B = $teams[1][0][1] +
$teams[1][1][1] +
$teams[1][2][1] +
$teams[1][3][1] +
$teams[1][4][1];
$Def_B = $teams[1][5][1] +
$teams[1][6][1] +
$teams[1][7][1] +
$teams[1][8][1] +
$teams[1][9][1];
//Spielstärke berechnen
$Staerke_A = ($Off_A + $Def_A);
$Staerke_B = ($Off_B + $Def_B);
echo "Spielstaerken:" . "<br>";
echo $teams[0][0][2] . ": " . $Staerke_A . "<br>";
echo $teams[1][0][2] . ": " . $Staerke_B . "<br>" . "<br>";
PHP-Code:
//Anzahl der Angriffe für Team A ausrechnen
$Angriffe_0 = 10 + (($Off_A - $Off_B)/4);
$Angriffe_0 = rand(1, $Angriffe_0);
echo "Angriffe " . $teams[0][0][2] . ": " . $Angriffe_0 . "<br>";
//Anzahl der Angriffe für Team B ausrechnen
$Angriffe_1 = 10 + (($Off_B - $Off_A)/4);
$Angriffe_1 = rand(1, $Angriffe_1);
echo "Angriffe " . $teams[1][0][2] . ": " . $Angriffe_1 . "<br>" . "<br>";
// Trefferquote bei einem Angriff beider Teams
$Quote_0 = 50 + (($Off_A - $Def_B)/2);
$Quote_1 = 50 + (($Off_B - $Def_A)/2);
echo "Quote " . $teams[0][0][2] . ": " . $Quote_0 . "<br>";
echo "Quote " . $teams[1][0][2] . ": " . $Quote_1 . "<br>";
PHP-Code:
// für 90 minuten jeweils eine Aktion pro Minute
for ($i = 1; $i <= 90; $i++){
if($i == 1){
echo "$i. Minute: " . "Der Schiedsrichter pfeift die Partie an!<br>";}
elseif($i == 90){
echo "$i. Minute: " . "Der Schiedsrichter beendet die Partie mit dem Schlusspfiff!<br>";}
elseif($i == 45){
echo "$i. Minute: " . "Der Schiedsrichter pfeift die Erste Halbzeit ab!<br><br>";
echo "$i. Minute: " . "Weiter geht es mit der Zweiten Halbzeit!<br>";}
elseif(rand(1, 3) == 1){
"$i. Minute: " . "Nichts passiert<br>";}
//Foul/Freistoss und evtl. Gelbe/rote Karte
elseif(rand(1, 8) == 3){
freistoss($i, $teams, $Fouls_0, $Fouls_1, $Gelbe_Karten, $Rote_Karten);}
//Hier wird per Zufall entschieden ob ein Tor fällt
elseif(rand(1, 2) == 2){
tor($i, $teams, $Angriffe_0, $Angriffe_1, $Quote_0, $Quote_1, $Goals_0, $Goals_1);}
else{
"$i. Minute: " . "Es kommt kein Angriff zustande... <br>";}
}
Hier z.B. die Funktion, wie ein Tor fällt (Ausschnitt)(Welches Team die Torchance bekommt, wird per Zufall entscheiden):
PHP-Code:
//Hier wird geschaut, ob noch genügend Angriffe für das gewählte Team verfügbar sind
if(${$a.$zufall} > 0){
//nun wird die anzahl der angriffe um 1 subtrahiert
${$a.$zufall} = ${$a.$zufall} - 1;
//Schleife ob ein Tor fällt oder nicht (ein durchlauf)
for ($r =1; $r <= 1; $r++){
//zufällig 1/150 muss kleiner sein als die Quote des jeweiligen Teams
if(rand(1, 150) < ${$c.$zufall}){
Ist bisher recht simpel, liefert aber eigentlich ganz gute Ergebnisse ab
Was mich daran stört, ist dass die einzelnen Spieler darin eigentlich keine große Bedeutung haben. Deren Stärken werden nur zu beginn für die Gesamt Stäke gebraucht, und den Rest erledigt der Zufall.
Ich würde gerne die individuellen Stärken des einzelnen Spielers stärker einbeziehen wollen, und nicht nur die Stärken, sondern auch noch andere Dinge wie z.B. die Form eines Spielers oder dessen Frische usw.
Am besten sollten diese Dinge dann nicht ganz zu beginn einmal berechnet werden und fertig, sondern dies sollte denke ich mal am besten in jeder Situation neu zum Tragen kommen, ob nun ein Zweikampf gewonnen wird, ein Foul begangen wird oder eben ein Tor geschossen wird.
Nur leider weiß ich da im Moment nicht weiter....
Würde mich freuen, wenn User, die vieleicht auch einen Fussball Manager betreiben oder daran arbeiten, aber natürlich auch alle anderen mir vieleicht ein paar Tipps oder Anregungen geben könnten, wie ich sowas vieleicht realisieren könnte.
Würde mich riesig freuen
Entschuldigt bitte, dass der Beitrag so lang geworden ist
Und viele Grüße
bageleudi
Kommentar