Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Reversi / Othello

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP Reversi / Othello

    Hallöchen

    Im Informatik-Unterricht hat jeder von uns ein Projekt bekommen, welches derjenige machen soll.
    Ich habe Reversi (Othello) bekommen bzw. "gewählt".
    (Falls jemand nicht weiß, was es ist -> klick)

    Die Aufgabe ist, ein Spiel (in meinem Fall Reversi) in PHP zu programmieren. Dabei kann auf Datenbanken und auf andere "Hilfsmittel" (JavaScript, AJAX, ...) zurückgegriffen werden.

    Soweit hat auch alles funktioniert.
    Ich bin jetzt so weit, dass man Steine platzieren kann und die Position der Steine wird in der Datenbank gespeichert.
    Die eigentlich Spielfunktion fehlt mir also noch.

    Dabei geht es jetzt darum,
    a) dass die umschlossenen, gegnerischen Steine umgedreht werden und
    b) dass man Steine nur setzen kann, wenn ein gegnerischer umschlossen wird. (Siehe Spiel-Beispiel oben im Link)

    Das Problem liegt bei mir eher in der Bedingung, wann Steine umgedreht werden sollen, als an dem (automatischen) Umdrehen.
    Das Umdrehen kann man mit ner simplen SQL UPDATE-Query lösen.

    Wie kann ich bestimmen, wann Steine umgedreht werden?
    Mein bisheriger Quelltext sieht so aus:

    PHP-Code:
    // [...]
    if (isset($_SESSION['userid'])) {

    ################### Anwendung starten ###################

    ## User bestimmen ##
    $DB_User_Text2 "SELECT Name FROM users WHERE id='".$_SESSION['userid']."'";
    $DB_User_Name mysql_query($DB_User_Text2);
    $username mysql_result($DB_User_Name0);

    ## Menüleiste ##
    echo "
    <div style='margin:0 auto;'>
    <table style='font-size:11px;'>
    <tr>
    <td>Angemeldet als <u>
    $username</u>.</td>
    <td><button style='background-color:
    $bgcolor;border:0px;' onclick='document.home.submit();'><img src='img/home.png' style='width:25px;height:25px;'></button>";

    if(isset(
    $_POST['play'])) {
    echo 
    "<button style='background-color:$bgcolor;border:0px;' onclick='document.neues_spiel.submit();'><img src='img/newgame.png' style='width:25px;height:25px;'></button>";
    } else {
    echo 
    "<button style='background-color:$bgcolor;border:0px;' onclick='document.playform.submit();'><img src='img/play.png' style='width:25px;height:25px;'></button>";
    }

    echo 
    "<button style='background-color:$bgcolor;border:0px;' onclick='document.profilform.submit();'><img src='img/profile.png' style='width:25px;height:25px;'></button><button style='background-color:$bgcolor;border:0px;' onclick='document.logoutform.submit();'><img src='img/logout.png' style='width:25px;height:25px;'></button>
    </td>
    </tr>
    </table>"
    ;
    ## Neues Spiel ##
    echo "
    <form method='post' action='index.php' name='neues_spiel'>
    <input type='hidden' name='newgame' value='1'>
    <input type='hidden' name='spielen' value=''>
    <input type='hidden' name='play' value=''>
    </form>"
    ;
    ## Play ##
    echo "
    <form method='post' action='index.php' name='playform'>
    <input type='hidden' name='newgame' value='1'>
    <input type='hidden' name='spielen' value=''>
    <input type='hidden' name='play' value=''>
    </form>"
    ;
    ## Home ##
    echo "
    <form method='post' action='index.php' name='home'>
    <input type='hidden' name='home' value=''>
    </form>"
    ;
    ## Profil ##
    echo "
    <form method='post' action='index.php' name='profilform'>
    <input type='hidden' name='profil' value='1'>
    </form>"
    ;
    ## Logout ##
    echo "
    <form method='post' action='index.php' name='logoutform'>
    <input type='hidden' name='logout' value='1'>
    </form>"
    ;

    ## Neues Spiel (Tabelle löschen) ##
    if(isset($_POST['newgame'])) {
    $deltext "DELETE FROM felder";
    $del mysql_query($deltext);
    mysql_query("INSERT INTO felder (FeldX, FeldY, Spieler) VALUES ('4','4', '2'), ('5','4', '1'), ('5','5', '2'), ('4','5', '1')");
    }

    ## Spielfeld generieren ##
    function Spielfeld() {
    $table_border_color "green";
    $bgcolor "#002200";
    $DB_FeldX "";
    $DB_FeldY "";
    $DB_Spieler "";
    $spieler2 "";

    if(isset(
    $_POST['spieler_wert'])) {
    $spieler_wert $_POST['spieler_wert'];
    } elseif(!isset(
    $spieler_wert)) {
    $spieler_wert "1";
    }

    if(
    $spieler_wert=="1") {
    $spieler_wert++;
    } elseif (
    $spieler_wert=="2") {
    $spieler_wert--;
    }

    echo 
    "<table border='0'>";
    for(
    $y=1$y<=8$y++)
     {
        echo 
    "<tr>";
      for(
    $x=1$x<=8$x++)
       {
    $abfrage "SELECT * FROM felder WHERE FeldX = '$x' AND FeldY = '$y'";
    $ergebnis mysql_query($abfrage);
    while(
    $row mysql_fetch_array($ergebnis))
       {
        
    $DB_FeldX=$row["FeldX"];
        
    $DB_FeldY=$row["FeldY"];
        
    $DB_Spieler=$row["Spieler"];
       }

        echo 
    "
            <form method='post' id='feldklick' name='feldklick' action='index.php'>
            <td name='
    $x.$y' align='center' valign='middle' style='border:1px solid $table_border_color;width:50px;height:50px;'>
            <input type='hidden' name='spielen' value=''>
            <input type='hidden' name='play' value=''>
            <input type='hidden' name='spieler_wert' value='
    $spieler_wert'>
            <input type='hidden' name='FeldX' value='
    $x'>
            <input type='hidden' name='FeldY' value='
    $y'>";

    ##

    if($x=="$DB_FeldX&& $y=="$DB_FeldY") {
        if(
    $DB_Spieler=="1") {
            
    $spieler2 "rot";
        } elseif(
    $DB_Spieler=="2") {
            
    $spieler2 "weiß";
        }
        echo    
    "<img src='img/$spieler2.png' style='width:50px;height:50px;'>";
    } else {
        echo     
    "<input style='width:50px;height:50px;background-color:$bgcolor;border:0px;' name='absenden' type='button' value='' onclick='this.form.submit();'>";
    }

    ##
        
    echo     "</td>
            </form>"
    ;
       }
        echo 
    "</tr>";
     }
    echo 
    "</table>";
    }

    ## Wenn angeklickt, Feld-Werte in die DB eintragen ##
    if(isset($_POST['FeldX']) && ($_POST['FeldY'])) {
    $FeldX $_POST['FeldX'];
    $FeldY $_POST['FeldY'];
    $spieler $_POST["spieler_wert"];
    mysql_query("INSERT INTO felder (FeldX, FeldY, Spieler) VALUES ('$FeldX','$FeldY', '$spieler')");
    ## Ausgabe als Test
    ##echo "$FeldX $FeldY <br>";
    }
     
    function 
    Profil() {
    echo 
    "<style type='text/css'>
    .herv {
    background-color:#003300;
    }
    </style>"
    ;
    ## Werte auslesen ##
    $email "";
    $icq "";
    $DB_User_Name mysql_query("SELECT Name FROM users WHERE id='".$_SESSION['userid']."'");
    $username mysql_result($DB_User_Name0);
    $DB_Email mysql_query("SELECT Email FROM users WHERE id='".$_SESSION['userid']."'");
    $email mysql_result($DB_Email0);
    $DB_ICQ mysql_query("SELECT ICQ FROM users WHERE id='".$_SESSION['userid']."'");
    $icq2 mysql_result($DB_ICQ0);
    if(
    $icq2=="0") {
    $icq "";
    } else {
    $icq $icq2;
    }

    echo 
    "
    <h2>Profil bearbeiten</h1>"
    ;

    if(isset(
    $_POST["profile_edit"])) {
    echo 
    "<img src='img/success.png'> Profildaten erfolgreich geändert<br><br>";
    }

    echo 
    "
    <form method='post' action='index.php' name='profil_editform'>
    <table style='border:1px solid green;'>
    <tr>
    <td style='width:150px;'>Benutzername</td>
    <td style='width:150px;'>
    $username</td>
    </tr>
    <tr class='herv'>
    <td style='width:150px;'>E-Mail</td>
    <td style='width:150px;'><input type='text' name='profil_email' value='
    $email' size='22' /></td>
    </tr>
    <tr>
    <td style='width:150px;'>ICQ</td>
    <td style='width:150px;'><input type='text' name='profil_icq' value='
    $icq' size='22' /></td>
    </tr>
    <tr>
    <td style='width:150px;'>&nbsp;</td>
    <td align='right' style='width:150px;'><input type='submit' value='absenden' /></td>
    </tr>
    </table>
    <input type='hidden' name='profile_edit' value='' />
    <input type='hidden' name='profil' value='' />
    </form>"
    ;
    }

    if(isset(
    $_POST["profile_edit"])) {
    $icq $_POST["profil_icq"];
    $email $_POST["profil_email"];
    mysql_query("UPDATE users SET Email='".$email."', ICQ='".$icq."' WHERE ID='".$_SESSION["userid"]."'");
    }

    function 
    logout() {
         
    session_destroy();
         echo 
    "<meta http-equiv='Refresh' content='0 url=index.php'>";
    }

    if (isset(
    $_POST['logout'])) {
    logout();
    }

    ## Startseite nach Login ##
    if(isset($_POST["spielen"])) {
    Spielfeld();
    } elseif(isset(
    $_POST["profil"])) {
    Profil();
    } else {
    echo 
    "
    <h2>Willkommen bei Reversi</h2>"
    ;
    }
    echo 
    "
    </div>"
    ;
    } else {
    // [...] 
    Hoffentlich versteht ihr, was ich meine
    Danke schonmal im Vorraus.

    MfG

  • #2
    Wir sind kein Hausaufgabenservice. Der Algorithmus ist eindeutig Deine Aufgabe.

    Kommentar


    • #3
      Ich verlange nicht, dass ihr mir alles vorkaut.
      Ich bräuchte lediglich einen kleinen Denkanstoß, wie ich das verwirklichen kann.

      //Edit:
      es soll übrigens kein Singleplayer werden, sondern Multiplayer. Also ohne Bot, ergo kein Algorithmus.

      Kommentar


      • #4
        Ja. Kriegste aber nicht.

        Inserate, Konzepte und Meinungsumfragen

        Und doch, auch die Brettfunktion gehorcht einem Algorithmus.

        [MOD: Thread geschlossen]

        Kommentar

        Lädt...
        X