Onlinegame - Fussballspiel

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

  • #16
    Ich hab doch nochmal in Richtung Array-> Werte bezogen, gedacht.
    Die Ausführung hätte man besser gestalten können, aber nu ists gleich 6..

    Zur Erklärung:

    Es gibt zb 2 Stärkeverhältnisse. Die Differenz dieser Verhältnisse wird in Prozent erfasst.
    Es gibt ein Array mit 30 festgelegten Werten, 10x0, 10x1, 10x2. 0 = unentschieden, 1 = stärker gewinnt, 2 = schwächer gewinnt.
    Standardmäßig hat man also eine 33,333% Chance zu gewinnen/verlieren/unentschieden spielen.
    Auf die 33,333% wird der Differenzprozentsatz gerechnet. Daraus ergbit sich der Gewinn-Chancenwert.
    Nun wird errechnet wieviel Werte diese entgültige Prozentzahl im Array einnehmen würde.
    Anschliessend wird ein Array initialisiert, und eine for Schleife mit dem Endwert von dem eben errechneten im Array enthaltenen Sieger Werten.
    In dieser Schleife wird das Array also solange um den Siegerwert erweitert, wie Siegerwerte reinsollen (wurd ja grad ausgerechnet).

    Anschliessend wird die Restzahl an übrigen Werten errechnet.
    Hiervon wird der Prozentwert vom unentschieden (nun 50%) + dem anfänglichen Differenzprozentsatz multipliziert.
    Nun hab ich die Werteanzahl für das UNentschieden. Diese werden wieder mit for Schleife im Array gespeichert.
    Zum Schluss wird noch ausgerechnet wieviel Restwerte vorhanden sind, und mit dem Verlierer gefüllt.


    PHP-Code:
    $Manschaft_A 73;
    $Manschaft_B 63;

    // Differenz des Stärkenverhältnisses in % wird errechnet
    $differenz $Manschaft_A $Manschaft_B;
    $differenz_prozent_teil1 $Manschaft_A 100;
    $differenz_prozent $differenz $differenz_prozent_teil1;

    //Gesamtdifferenz wird errechnet
    $gsmt_differenz_prozent $differenz_prozent '33,333';

    //Berechnung der Häufigkeit des überlegenen Vorkomnisses
    $array_haufigkeit_ueberlegen '30' '100' $gsmt_differenz_prozent;


    //Ueberlegenheit wird Prozentual ins Array gepackt
    $array = array();
    for(
    $count 1$count $array_haufigkeit_ueberlegen$count++)
        {
    array_push($array,1);
        }

    //Restlich Vorhandene Positionen im Array werden errechnet
    $restziffern '30' $array_haufigkeit_ueberlegen;
    $restziffern2 $restziffern 100;

    //Prozentualen Anteil vom Unentschieden am Restlichen Prozentsatz berechnen
    $unentschieden '50' $differenz_prozent;
    $unentschieden_haufigkeit $restziffern2 $unentschieden;


    //Unentschieden wird Prozentual ins Array gepackt
    for($count 1$count $unentschieden_haufigkeit$count++)
        {
    array_push($array,0);
        }

    //Restlichen Plätze für schwach werden ermittelt und ins array gepackt
    $schwach '30' $array_haufigkeit_ueberlegen $unentschieden_haufigkeit;

    //Unterlegenheit wird Prozentual ins Array gepackt
    for($count 1$count $schwach$count++)
        {
    array_push($array,2);
        }


    //Ausgabe zu Testzwecken
    $zahl 100;
    for(
    $count 1$count $zahl$count++)
        {
    $zufall rand(0,30);
    if (
    $array[$zufall] == 0) {
    echo 
    "Das SPiel endete <b>unentschieden</b>";
    }
    elseif (
    $array[$zufall] == 1) {
    echo 
    "Team <b>Stark</b> hat gewonnen";
    }
    elseif (
    $array[$zufall] == 2) {
    echo 
    "Team <b>Schwach</b> hat gewonnen";
    }
    echo 
    "<br>";
        } 
    Ich bin nun mal Testweise die Ausgabe durchgegangen,
    49x gewann das starke Team
    33x Unentschieden
    17x gewann das schache Team

    Prozentual gesehen ist das genau das was ich wollte, auch wenn es nur 99 statt 100 Werte/Berechnungen sind.
    Einziges Manko ist die Berechnung der Unentschieden, da ich da einfach die prozentuale Überlegenheit + den restlichen vorkommenden Prozentsatz multipliziere, und aus diesem Gesamtsatz errechne, wieoft ein Unentschieden ins Array muss.
    Hat da jmd eine Idee, wie ich besser auf das Unentschieden komm?

    Wäre das grob in deinem Sinne, onemorenerd?
    Natürlich kann in die Manschafststärke alles mögliche einfließen, so könnte die Heimmanschaft zb einen 10% Siegbonus bekommen, etc.
    Zuletzt geändert von Zine; 09.01.2006, 06:21.

    Kommentar


    • #17
      Ich hab hier mal einen anderen Ansatz ausgearbeitet (Den Programmierstil müsst ihr einfach ignorieren):

      PHP-Code:
      <?php

      // Stärke von Offensive und Deffensive der beiden Mannschaften (1-100)
      $Off_A 23;
      $Def_A 45;
      $Off_B 67;
      $Def_B 89;

      // Anzahl Angriffe/Conterangriffe während des Spiels anhand der
      // Offensivwerte beider Mannschaften ausrechnen
      $Angriffe = ($Off_A $Off_B) / 10;
      $Angriffe rand($Angriffe/2$Angriffe*1.5);
      echo 
      "Total Angriffe im Spiel: " $Angriffe "<br>";

      // Damit nicht von vorne herein die Offensivere Mannschaft viel bessere
      // Chancen hat, werden die Angriffe je zur hälfte auf beide Mannschaften verteilt
      $Angriffe round($Angriffe/2);

      // Trefferquote bei einem Angriff beider Teams
      $Quote_A 50 + (($Off_A $Def_B)/2);
      $Quote_B 50 + (($Off_B $Def_A)/2);
      echo 
      "Quote A: " $Quote_A "<br>";
      echo 
      "Quote B: " $Quote_B "<br>";

      $Goals_A 0;
      $Goals_B 0;

      echo 
      "<br><br>Mitreissender Spielkomentar:<br>";
      // Jetzt wird für jeden Angriff ausgerechnet, ob ein Goal gefallen ist oder nicht
      for($i 1$i <= $Angriffe$i++){
          if(
      rand(1100) < $Quote_A){
          
      $Goals_A $Goals_A 1;
          Echo 
      "Goal für Team A!<br>";
          }
          else{
          Echo 
      "Kein Goal für Team A...<br>";
          }
      }

      // Und noch das ganze für das andere Team
      for($i 1$i <= $Angriffe$i++){
          if(
      rand(1100) < $Quote_B){
          
      $Goals_B $Goals_B 1;
          Echo 
      "Goal für Team B!<br>";
          }
          else{
          Echo 
      "Kein Goal für Team B...<br>";
          }
      }

      Echo 
      "<br><br>Resultat: " $Goals_A ":" $Goals_B "<br>";

      ?>
      Ich hab jetzt 2 Werte einfliessen lassen (Angriff und Verteidigung). Je Agressiver beide Mannschaften spielen, desto mehr Angriffe werden gemacht. Für jeden Angriff wird dann anhand der Offensiven Werte des Angreifers und der Defensiven Werte des Verteidigers ausgerechnet, ob dieser in ein Goal verwandelt wurde.

      Ich hab mal ein Testlauf mit den folgenden Werte gemacht:
      $Off_A = 1;
      $Def_A = 100;
      $Off_B = 100;
      $Def_B = 1;
      (Eine Mannschaft voll Offensiv, die andere voll Deffensiv, aber beide gleich Stark)

      Die Resultate waren:
      1:1 - 2:3 - 3:2 - 3:4 - 4:4 - 4:2 - 1:0 - 1:4 - 3:3 - 4:1
      Zuletzt geändert von Luc; 09.01.2006, 13:02.

      Kommentar


      • #18
        Den Ansatz find ich auch garnicht mal schlecht..
        Hab dazu grad was interessantes gefunden, ich denke dass man das durchaus mit in die Berechnung einfließen lassen kann.

        http://de.wikibooks.org/wiki/Sportwetten


        Kurzstatistik Torverhalten
        Ich habe eine Statistik über das Fußball-Torverhalten angefertigt. Diese ist natürlich Zufällen unterworfen, zeigt aber dennoch nützliche Informationen. Die Erhebung erfolgte am 25.11.04 auf 400 bei Buchmachern zum Wetten angebotenen Spielen. Wettquoten wurden hierbei nicht berücksichtigt.

        Fußball - Torverhalten * Im Test: 400 Fußballspielergebnisse


        Allgemein

        Wie oft wurde 0:0 bis Spielzeitende erreicht?

        23 / 400


        Wie oft gab es zum Spielzeitende ein Unentschieden?

        102 / 400




        1. Halbzeit

        Wie oft stand es zur Halbzeit 0:0?

        117 / 400




        Wie viele Tore fielen in der 1. Halbzeit?
        130 / 400 1 Tor
        91 / 400 2 Tore
        44 / 400 3 Tore
        9 / 400 4 Tore
        3 / 400 5 Tore und mehr
        ------------------------------------
        277 / 400 Spiele mit Ersthalbzeittoren

        Wie oft gab es zur Halbzeit ein unentschieden (inkl. 0:0)?

        161 / 400




        2. Halbzeit

        Wie oft fiel in der 2. Halbzeit kein Tor?

        70 / 400




        Wie viele Tore fielen in der 2. Halbzeit?
        146 / 400 1 Tor
        100 / 400 2 Tore
        56 / 400 3 Tore
        18 / 400 4 Tore
        1 / 400 5 Tore und mehr
        ------------------------------------
        321 / 400 Spiele mit Zweithalbzeittoren
        Zuletzt geändert von Zine; 09.01.2006, 16:19.

        Kommentar


        • #19
          Vorhin ist mir mal kurz 'ne Idee gekommen, allerdings lässt sie sich nicht so verwirklichen, zumindest nicht mit meinen Kentnissen.
          Also, angenommen in der db wird Zeitpunkt, sowie Ereignis gespeichert, (bsp.: time->4 ereignis->Schuss auf Tor), so sollte es eine dynamische Anzeige geben, so als würde das Spiel grade erst berechnet.

          Das ganze wird entsprechend verkleinert (Zeit), zb auf eine max Spieldauer von 20min. Eine reale Spielminute würde also in 13,33sek im Script verstreichen.
          Sollte nun in der 4. min ein Eregnis auftauchen, so wird nach ca. 53sek das Ereignis auf der Seite durch Refresh oder so ausgegeben.

          Aber genau da liegt das Problem. Wie bitte soll ich etwas zeitbasierend ausgeben, ohne das zb im Quelltext das nächste Event schon vorhersagbar ist? (durch Angabe der Zeit bis zum reload)
          Und vorallem, wie kann ich es realisieren, dass, wenn man 5min nach Anpfiff erst die Seite aufruft, um das Spiel zu verfolgen, das dann die Events bis dato schon gelisted sind.

          Ich habs mit meta refresh und header location probiert, aber mit header klappte das garnicht und mit meta refresh ist alles vorhersagbar, und nicht wirklich dynamisch.

          Ich steh da grad echt wieder auf'm Schlauch.. jmd eine Idee?

          Kommentar


          • #20
            Mach es nicht zu kompliziert. Speichere den aktuellen Spielstand irgendwie auf dem Server und lass die Seite zyklisch refreshen, wie es der Durchschnittsuser aus dem Web schon kennt, um den aktuellen Speicherzustand anzuzeigen.

            Kommentar


            • #21
              Hm, die Seite also zb jede min neu laden? Genau das wollte ich eigt, insofern möglich, verhindern..
              Allein dieses tolle "klick" jedesmal..

              Kommentar


              • #22
                Original geschrieben von Zine
                Hm, die Seite also zb jede min neu laden? Genau das wollte ich eigt, insofern möglich, verhindern..
                Dann machs mit Ajax.

                Kommentar


                • #23
                  So, nachdem ich Ajax ja nun mal überhaupt nicht kannte, hab ichs mir mal angeschaut.. 2 Tutorials dazu gelesen.. und mir das Ding mehr oder minder zusammen gebastelt. Funktioniert einwandfrei. Danke für den Tipp.

                  Aber mal eine Frage zum Lizenzrecht.
                  Ich hab mal ein paar solcher Games abgeklappert, dabei ist mir aufgefallen, dass recht viele reale Club Namen in Zusammenhang mit dem Vereinslogo oder aber frei erfundenem Logo nutzen.

                  Da ich mir nicht vorstellen kann, dass jedes dieser Games eine Lizenz zur Verwendung der Namen/Logos hat, und ich auch nicht glaube dass viele das einfach aus Unwissen/Illegalität machen, muss es doch einen weg dafür geben?!

                  Weiß da jmd genaueres?

                  Kommentar


                  • #24
                    Kannst bei www.hattrick.org mal schauen, das ist ein guter Online-Fußballmanager.

                    Meines Wissens ist es dort folgendermaßen geregelt:

                    1. Anhand der Aufstellung werden die Stärken der beiden Mannschaften berechnet. Folgende Bereiche gibt es:
                    Mittelfeld
                    Abwehr rechts
                    Abwehr zentral
                    Abwehr links
                    Angriff rechts
                    Angriff zentral
                    Angriff links

                    2. Anhand des Verhältnis der Mittelfeldstärken zwischen den beiden Mannschaften wird der Ballbesitz bestimmt.

                    3. Anhand des Ballbesitzes werden 10 Chancen auf die beiden Teams aufgeteilt.

                    4. Für jede Chance passiert folgendes:
                    - Zufällige Feststellung ob Chance über Mitte, Links oder Rechts erfolgt
                    - Anhand der Abwehr- und Angriffsstärke wird ermittelt ob aus der Chance ein Tor resultiert


                    Das Ganze wird noch durch Sondereignisse (Freistöße, Fouls, Verletzungen, Wetter, Erfahrung, besondere Spielerfähigkeiten wie Kopfballstärke, usw.) angereichert. Außerdem kann der Trainer noch die Taktik vorgeben (Angriff durch die Mitte, über Flügel, locker Aufspielen, Pressing, Konter, usw.).

                    Auf www.hattrick.org sind die Regeln auch sehr gut erklärt, falls du es noch etwas detaillierter wissen möchtest.

                    Kommentar

                    Lädt...
                    X