Ankündigung

Einklappen
Keine Ankündigung bisher.

Fussball Manager - Ideen für Berechnung

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Fussball Manager - Ideen für Berechnung

    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.
    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>"
    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.
    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>"
    Für den Spielablauf habe ich eine einfache for Schleife, die für 90 Minuten jeweils eine Aktion per Zufall bestimmt.
    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(13) == 1){
            
            
    "$i. Minute: " "Nichts passiert<br>";}

        
    //Foul/Freistoss und evtl. Gelbe/rote Karte
        
    elseif(rand(18) == 3){
            
    freistoss($i$teams$Fouls_0$Fouls_1$Gelbe_Karten$Rote_Karten);}

        
    //Hier wird per Zufall entschieden ob ein Tor fällt
        
    elseif(rand(12) == 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>";}


    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):
    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(1150) < ${$c.$zufall}){ 
    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


  • #2
    Das Beste ist, Du befasst Dich wirklich mal mit den Grundlagen PHP.
    Vor einer Woche hattest Du ein ähnliches Problem (siehe hier).

    Was kommt als nächstes?

    Ich hab Verständnis dafür, wenn jemand keine Zeit oder meinetwegen auch keine Lust zum Lernen hat,
    aber dann solltest Du in der Scriptbörse posten und fragen, ob's
    Dir dort jemand macht...

    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche Tutorials

    Kommentar


    • #3
      Überleg dir doch erstmal, wie du auf die Einzelspieler konkret eingehen könntest. Starker Stürmer, schwacher Gegenspieler, das könnte seine Chance ein Tor zu schiessen doch erhöhen. Die Form könntest du abhängig davon machen, wie die Mannschaft spielt, ob er viele Chancen vergeben hat + einen zusätzlichen nicht allzu flukturierenden Faktor (eine Kurve) (kann ja auch sein dass Köln dauernd veliert, Podolski aber trotzdem Top in Form ist), bei der Frische, wieviele Tore gefallen sind oder wie oft ein Spieler gefoult wurde, was auch immer.
      Mach dazu doch mal Vorschläge, dann können wir hier ja mal schauen, wie sich das umsetzen lässt. Wenn du das ganze schonmal klar vorformulierst, ergibt sich der Code schon fast von selbst.

      Edit: @Arne Drews Ach ich find das nicht schlimm, ist doch cool wenn sich jemand mit PHP beschäftigt und ich glaub nichtmal dass es am eigenen Engagement liegt, vielmehr halt noch weil er PHP noch nicht so lange macht, es ja aber scheinbar zum Spass lernen möchte. Find ich gut sowas, da helf ich 10x lieber als bei manch anderem
      "Mein Name ist Lohse, ich kaufe hier ein."

      Kommentar


      • #4
        Vielen Dank schonmal für die schnellen Antworten.

        @arne Drews
        Zeit habe ich leider nicht so viel
        Aber ich habe sehr wohl Lust zu Lernen und bin auch fleißig dabei.
        Und ich möchte auch nicht, dass es mir jemand fertig macht oder so - ich möchte lediglich ein paar Ideen, Vorschläge oder Anregungen bekommen.

        @Chriz
        danke, genau so ist es, ich bin noch nicht so lange dabei - dabei fallen mir Lösungen nicht so schnell ein wie euch anderen, die schon lange dabei sind, darum will ich ja auch ein paar Anregungen bekommen

        Ich glaube ich könnte oder sollte die Spielberechnung generel anders gestalten, vieleicht, dass es immer Zweikämpfe gibt, und je nach dem, ob man diesen Zweikampf gewinnt (das könnte auch einfach nur ein Pass sein), kommt man weiter nach vorne und hat irgendwann die Möglichkeit zu schießen. Ich habe ja jetzt eine Gesamt-Quote für die Mannschaft - denke ich könnte dann in jeder dieser Situationen 2 Spieler aufeinander treten lassen und dann jeweils eine Quote für diesen Zweikampf aus den beiden Spielern errechnen in dem ich die Stärken der beiden Spieler verwende. Dann hätte ich es schonmal, dass ein Starker Stürmer sich leichter gegen einen schwachen Abwehrspieler durchsetzt.

        Zur Frische und Form, ich denke mal, dass sind Attribute, die im ganzen Spiel gleichbleiben oder? Eine Form hat man doch, wenn man z.B. einige Spiele hintereinander gewonnen hat und die Frische hat man, wenn man gut trainiert hat usw. darum denke ich nicht, dass sich das während des Spiels so großartig verändert.
        Vieleicht könnte ich die Frische und oder Form einfach als einen Faktor mit in die Quotenberechnung bei dem oben genannten Zweikampf mit einfließen lassen.
        Klar, wenn man im Spiel dann 10 Chancen z.B. vergibt, könnte man diesen Faktor dann vieleicht verkleinern oder so.
        Währe sowas in der Art Sinnvoll?

        Kommentar


        • #5
          Hast wohl noch nie Fußball gespielt was? Form ist längerfristig, Frische eher kurzfristig und gegen Spielende natürlich geringer. Eingewechselter Spieler ist frischer als Typ der schon die ganze Zeit aufm Platz rumrennt. Könntest auch Angstfaktor einbauen, für nen Maik Franz gegen Mario Gomez (den Angsthasen) Liegt in deiner Hand, und gleich das volle Programm spielen ist vielleicht übertrieben.

          Machs doch so, such dir 2-3 Eigenschaften noch für jeden Spieler aus, von mir aus Fitness [e1], Zweikampfstärke [e2], Schusskraft [e3];
          danach suchst du dir 2-3 Spielsituationen aus: normaler Pass [s1], Pass in die Tiefe [s2], Flanke [s3], Schuss [s4]
          mehrere Ausgangsmöglichkeiten für Spielsituationen: Foul [a1], Zweikampf gewonnen/verloren [a2a, a2b], Seitenaus [a3], Abseits [a4], freier Mann [a5]
          Von mir aus noch Platzverhältnisse/Umweltbedingungen: Regen [u1], Sonne [u2], schlechte Rasen [u3]
          So jetzt bestückst du die Spieler mit ihren Eigenschaften, die Mannschaften mit ihren Spielern und die Mannschaften mit ihren Stadien und Wetterverhältnissen (München = Sonne, Hamburg = Regen, Frankfurt = schlechter Rasen). Regen heißt höhere Torwahrscheinlichkeit beispielsweise, weil Rasen nass. Keine Ahnung.

          So jetzt überlegst du dir, wie ein Spiel aussieht:
          Anstoss - Spielsituation - Ausgangsmöglichkeit der Spielsituation - falls Schuss + Tor: Anstoss, andernfalls: zurück zu Spielsituation. Schimpf sich Endlicher Automat soetwas.

          So jetzt kannst du überlegen, wie du eine der Spielsituationen auswählst:
          [s1]: recht wahrscheinlich
          [s2]: selten (abhängig von Teamstärke)
          [s3]: kann nicht auf [s2] folgen, nur auf [s1].
          [s4]: selten, kann nur auf [s2] oder [s3] folgen

          Ausgang der Spielsituation:
          Beteiligte: Angreifer, Verteidiger
          Wahrscheinlichkeit, dass Angreifer/Verteidiger siegt:
          - abhängig von Dauer der ununterbrochenen Ballkontakte (nach 10 Spielzügen sollte langsam mal der Ball die Mannschaft wechseln)
          - Stärke der Gegenspieler [e1], [e2]
          - Teamstärke
          - Zufall

          Neue Spielsituation: (siehe oben).

          So kannst du das hin- und herlaufen lassen, irgendwann, so will es der Zufall, wird auf die Flanke mal ein Schuss kommen und sogar im Tor landen. Das schwierige wird wahrscheinlich eher das Einstellen sein, soll ja nicht so sein, dass fast alle Spiele gleich ablaufen (vor allem nicht Hin- und Rückspiele) bzw. keine Überraschungsergebnisse möglich sind. Du musst den Zufall oft aber nicht wahllos einsetzen.

          Ich weiß viel Theorie, aber für Programmcode schreiben reichts bei mir heute nicht mehr..
          "Mein Name ist Lohse, ich kaufe hier ein."

          Kommentar


          • #6
            Zitat von Chriz
            Ach ich find das nicht schlimm, ist doch cool wenn sich jemand mit PHP beschäftigt und ich glaub nichtmal dass es am eigenen Engagement liegt, vielmehr halt noch weil er PHP noch nicht so lange macht, es ja aber scheinbar zum Spass lernen möchte. Find ich gut sowas, da helf ich 10x lieber als bei manch anderem
            Da hast Du allerdings Recht. Mir kams halt anders vor.
            Hat er ja aber richtig gestellt.

            @bageleuldi: Sorry! Kam bei mir anders rüber...
            Competence-Center -> Enjoy the Informatrix
            PHProcks!Einsteiger freundliche Tutorials

            Kommentar


            • #7
              Form ist längerfristig, Frische eher kurzfristig und gegen Spielende natürlich geringer. ... Könntest auch Angstfaktor einbauen, für nen Maik Franz gegen Mario Gomez (den Angsthasen)
              Wie wärs mit nem Bad-Hair-Day oder ne kneifende Unterhose am Anfang der 2. Halbzeit?
              Sorry 4 OT.
              --

              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


              --

              Kommentar


              • #8
                Ich hab schon ganz oft Fussball gespielt
                Das mit der Form ist klar, aber das mit der Frische, stimmt, zum Spielende wird diese weniger, und ein eingewechselter Spieler ist selbstverständlich frischer.
                Aber was ich meinte, war auch, wenn ich viel und gut trainiere, dann habe ich doch mehr Firsche, als jemand, der nie trainiert.
                Wo du das volle Programm erwähnst, da hatte ich auch eine Idee - nämlich, dass man quasi den Einsatz seiner Mannschaft einstellen kann, ob man jetzt mit vollem Einsatz spielt, oder mit weniger, oder übermutiviert.

                Das was du da geschrieben hast, hört sich alles sehr gut an, so ähnlich hatte ich mir das auch gedacht.
                Ach und zu den Spielzügen - du sagtest, dass nach 10 Spielzügen, der Ball mal langsam die Mannschaft wechseln sollte - ich weiß was du meinst, aber ich kann ja keine Zahl festlegen, nach der die Mannschaft wechselt.
                Ich kann doch auch als Sieler wenn ich will, den Ball in der eigenen Hälfte 100 mal hin und her passen

                Ich dachte vieleicht eher daran, dass ich das Feld vieleicht in Bereiche oder sowas einteile, und wenn dann z.B ein Pass oder Zweikampf gelingt, dann kommt man einen Bereich (oder auch mehrere) weiter in die Gegnerische Häflte. Und je näher man dem Tor kommt, desto wahrscheinlicher ist es , dass entweder eine Flanke kommt, oder ein Schuss und auch je näher man dran ist, desto wahrscheinlicher geht der Schuss ins Tor usw.

                Davon mal abgesehen, weiß ich leider immer noch nicht, wie ich das ganze in eine Formel bringen soll.....
                Also die einzelnen Aktionen würde ich wohl hinbekommen - sprich einen Pass, Zweikampf, Torschuss usw.

                Nur leider fällt mir immer noch nichts ein, wie ich entscheiden kann ob eine Aktion gelingt, oder nicht.....

                Ich müsste/oder würde gerne in diese Formel dann folgende Eigenschaften einbauen:

                Spielerstärke, Form, Frische, vieleicht Einsatz, dann vieleicht noch Dinge die du genannt hattest wie Fitness, Zweikampfstärke, Schusskraft, und mir würden bestimmt noch welche einfallen.

                In der Formel müssten ja dann quasi diese genannten Eigenschaften sowohl vom Spieler, als auch von seinem Gegenspieler mit einfließen.
                (Und um es ganz perfekt zu machen, sollte diese vieleicht später noch ganz leicht erweiterbar sein?)

                Aber leider finde ich dazu keine zufriedenstellende Lösung

                Kommentar


                • #9
                  Zitat von bageleudi Beitrag anzeigen
                  Wo du das volle Programm erwähnst, da hatte ich auch eine Idee - nämlich, dass man quasi den Einsatz seiner Mannschaft einstellen kann, ob man jetzt mit vollem Einsatz spielt, oder mit weniger, oder übermutiviert.
                  Warum sollte man mit weniger Einsatz spielen? Wenn dann sollte man es umstellen können, um sich an andere Gegner anzupassen.


                  Zitat von bageleudi Beitrag anzeigen
                  Ach und zu den Spielzügen - du sagtest, dass nach 10 Spielzügen, der Ball mal langsam die Mannschaft wechseln sollte - ich weiß was du meinst, aber ich kann ja keine Zahl festlegen, nach der die Mannschaft wechselt.
                  Ich kann doch auch als Sieler wenn ich will, den Ball in der eigenen Hälfte 100 mal hin und her passen
                  Unwahrscheinlich. Meiner Meinung nach solltest du die Wahrscheinlichkeit auf einen Fehlpass nach jedem Pass herabsetzen, so dass sie nach ~10 Spielzügen (von mir aus auch erst bei 100) gegen 0 tendiert. War aber auch nur eine Idee.


                  Zitat von bageleudi Beitrag anzeigen
                  Ich dachte vieleicht eher daran, dass ich das Feld vieleicht in Bereiche oder sowas einteile, und wenn dann z.B ein Pass oder Zweikampf gelingt, dann kommt man einen Bereich (oder auch mehrere) weiter in die Gegnerische Häflte. Und je näher man dem Tor kommt, desto wahrscheinlicher ist es , dass entweder eine Flanke kommt, oder ein Schuss und auch je näher man dran ist, desto wahrscheinlicher geht der Schuss ins Tor usw.
                  Das nennt sich American Football Aber für einen einfachen Manager (ist das überhaupt noch ein Manager?) auch OK.


                  Wie du das vom Code her umsetzt musst du selbst entscheiden. Erstell dir doch erstmal die entsprechenden Klassen:

                  Team, Coach, Player, Stadium mit ihren jeweiligen Eigenschaften (in der Datenbank ablegen). Danach noch eine "Spielbrett", dem du Stadium und die beiden Teams übergibst. Danach kannst du das Spiel starten ($match->start()) und durch Aufruf von $match->play() oder sowas die Spielsituation jeweils um eins erhöhen. Resultat könnte ein MatchSituation-Objekt sein, in dem alles relevante zur Aktion drinsteht:
                  beteiligte Spieler, Resultat der Aktion (Tor, Fehlpass, ..) etc.
                  Ein ViewHelper/ViewRenderer könnte diese Aktion jetzt visualisieren, als Grafik (zweikampf-verloren.png) oder als Text ("Mario Gomez hat den Zweikampf gegen Maik Franz (schon wieder) verloren" )
                  Den nächsten Spielzug startest du wieder mit $match->play() und die Spielsituation läuft weiter.

                  Jetzt mal ganz doof für vier gewinnt:
                  init.php
                  PHP-Code:
                  <?php
                  session_start
                  ();
                  $player1 = new Connect4_Player_Computer();
                  $player2 = new Connect4_Player_Human("Heinz");
                  $match = new Connect4_Board();
                  $match->registerPlayer($player1);
                  $match->registerPlayer($player2);
                  $move $player1->getAutoMove();
                  $match->start($move);
                  $viewRenderer = new Connect4_ViewRenderer_HtmlBasic();
                  echo 
                  $viewRenderer->render($match);
                  $_SESSION["connect4"] = $match;
                  ?>
                  play.php
                  PHP-Code:
                  <?php
                  session_start
                  ();
                  $match $_SESSION["connect4"];
                  $player2 $match->getPlayer(2); // heinz
                  $move $player2->getNewMove();
                  $move->setChip($_POST["x"], $_POST["y"]);
                  $match->continue($move);
                  if (!
                  $match->hasWinner()) {
                    
                  $move $match->getPlayer(1)->getAutoMove(); // comp
                    
                  $match->continue($move);
                  }
                  $viewRenderer = new Connect4_ViewRenderer_HtmlBasic(); // oder *_AnimatedGif z.B.
                  echo $viewRenderer->render($match);
                  ?>
                  Vielleicht kannst du das ja als Ansatz gebrauchen (top-down):
                  Top-down und Bottom-up – Wikipedia

                  So langsam solltest du aber anfangen mal Code zu schreiben, mehr liefer ich dir nämlich nicht
                  "Mein Name ist Lohse, ich kaufe hier ein."

                  Kommentar


                  • #10
                    Hmm, warum man mit weniger Einsatz spielen sollte, weiß ich grad auch nicht keine Ahnung, vieleicht um sich zu schonen, nicht verletzt zu werden oder sowas - aber hauptsächlich ging es mir darum, dass man den Einsatz erhöhen kann und aggressiver spielen könnte.

                    Ja klar ist das unwarhscheinlich, aber ich kann nicht festlegen, nach welcher anzahl von passen die Mannschaft gewechselt werden soll.
                    Aber das mit der Wahrscheinlichkeit auf einen Fehlpass ist gut. Das könnte man machen.

                    Hehe, nein Amarican Football will ich nicht haben
                    Wieso sollte das kein Manager sein?
                    Ich mein ich muss doch irgendwie wissen, oder festlegen können, wo der Ball oder das Spielgeschehen sich gerade auf dem Platz befindet oder?

                    Ach, was die Berechnung angeht, habe ich glaube ich eine ganz gute Möglichkeit gefunden - habe mich diesbezüglich mit nem Kumpel unterhalten.
                    Werde es jetzt wohl so machen, dass Eigenschaften wie Form Frische und Kondition usw. die Spielstärke des einzelnen Spielers beeinflussen.

                    Wenn der Spieler beispielsweise eine Form von 78 hat, dann bekommt er (78/200) auf seine Stärke draufgerechnet das wären dann in diesem Fall 0,39

                    (Der Default Wert liegt dann bei 50 wobei Werte von 1-100 möglich sind. alles was über 50 liegt beeinflusst die Stärke positiv, alles was darunter liegt, negativ)

                    Und für die Berechnung, muss ich am Ende dann einfach nur die beiden Stärken der Gegenspieler vergleichen. Ist glaube ich viel einfacher, aber erfüllt das, was ich mir vorgestellt hatte.

                    Tja.... Leider habe ich mich mit Objekten und Klassen noch nicht beschäftigt
                    Das verstehe ich noch nicht so ganz... habe in den nächsten Tagen und Wochen ein paar Klausuren usw. daher wird die Zeit ein wenig knapp - aber werde mich da einlesen sobald die Zeit dafür da ist.

                    Würdet ihr sagen, dass ich es unbedingt mit Objekten und Klassen machen sollte? oder wäre es normal und mit Funktionen auch ok?

                    Ach und nochwas am Rande? was hast du eigentlich gegen Mario Gomez?
                    Der hat dir doch nichts getan! (Ich bin aber kein Bayern Fan - falls du das meinst )

                    Kommentar


                    • #11
                      OOP ist halt lesbarer finde ich, zumindest solltest du auch erkennen können, was mein Beispielcode oben macht, auch wenn du nicht verstehen musst, wie er intern funktioniert. Wenn du aber noch neu in PHP bist, ist prozedural mit Funktionen vielleicht einfacher.

                      Was ich gegen Mario Gomez habe? Der ist halt ne Heulsuse
                      "Mein Name ist Lohse, ich kaufe hier ein."

                      Kommentar


                      • #12
                        Hmm - ich denke ich werde es erstmal ganz normal machen.
                        OOP ist denke ich noch ein wenig kompliziert für mich.

                        Ich würde jetzt noch gerne wissen, wie ich es am besten machen könnte um zu entscheiden, wo der ball oder das geschehen gerade auf dem platz stattfindet.
                        Habe bis jetzt die idee so eine art schachbrett daraus zu machen - ich weiß hört sich komisch an.

                        Aber dachte mir, es gibt reihen von a bis h - asntoss ist in der mitte also bei e oder d und wenn eine aktion erfolgreich ist, kommt der ball eine reihe oder so weiter nach vorne.
                        des weiteren gibt es noch breitenangaben, ob man jetzt in der mitte ist oder rechts außen oder so.
                        außen ist dann z.b die wahrscheinlichkeit einer flanke sehr groß und wenn man im 16er ist am wahrscheinlichsten, dass ein schuss abgegeben wird usw.

                        Ist die Idee in Ordnung? oder gibt es dafür eine bessere Lösung?

                        Kommentar


                        • #13
                          Macht es überhaupt irgendeinen Sinn, sowas in Echtzeit zu machen?

                          Btw.
                          Bitte beachten: Anmerkungen zu Crosspostings
                          --

                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                          --

                          Kommentar


                          • #14
                            Was meinst du mit Echtzeit? Ich will halt einfach wissen, wo sich der Ball gerade befindet um entscheiden zu können was ich als nächstes für eine Aktion machen kann.

                            Z.B. Kann ich ja keine Flanke in den Strafraum schlagen, wenn ich irgendwo hinten in meiner eigenen Hälfte bin.

                            Wie würdest du es stattdessen machen?

                            Ach und das mit dem Crossposting tut mir leid, war ne blöde Idee.....

                            Kommentar


                            • #15
                              Darauf zielte wohl die Frage ab, ob es ein Manager werden soll.
                              Ein Spielkonzept wäre, dass die Software ein Spiel simuliert (anhand der Parameter wie aufgestellte Spieler, Umgebungssituation) und dann irgendwann das Ergebnis ausspuckt. Der Spieler könnte dann zwischendurch spielen (Spieler kaufen, Aufstellungen ändern, Gegner analysieren, Spieler der Gegenmannschaft abwerben, Trainings durchführen, Spieler dopen, Schiedsrichter bestechen, ...)

                              Für all diese Aktionen ist ein Spiel in Echtzeit (wie ist der aktuelle Stand, wo ist der Ball, wer flankt wohin..) total irrelevant.
                              --

                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                              --

                              Kommentar

                              Lädt...
                              X