Ankündigung

Einklappen
Keine Ankündigung bisher.

Hilfe bei Schulprojekt - Schach für 2 Spieler

Einklappen

Neue Werbung 2019

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

  • Hilfe bei Schulprojekt - Schach für 2 Spieler

    Ich müsste in der Schule ein Schachspiel für 2 Spieler programmieren. Ich habe gerade erst mit PHP angefangen um bräuchte Hilfe beim Projekt.

    Ich möchte in meinem Programm zuerst einmal eine Ausgabe der Spielfelder machen. Die Felder habe ich schon mit mehrdimensionalen Arrays gemacht und eine Abfrage ob die Felder richtig geordnet sind.

    Macht euch am besten selbst ein Bild von meinem Code :

    PHP-Code:
    <?PHP

    $Feld
    [11] = array(
       
    Nummer=>"A1",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Turm",
       
    Farbe=>"Weiss");

    $Feld[21] = array(
       
    Nummer=>"B1",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Springer",
       
    Farbe=>"Weiss");

    $Feld[31] = array(
       
    Nummer=>"C1",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Laufer",
       
    Farbe=>"Weiss");

    $Feld[41] = array(
       
    Nummer=>"D1",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Dame",
       
    Farbe=>"Weiss");

    $Feld[51] = array(
       
    Nummer=>"E1",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Konig",
       
    Farbe=>"Weiss");

    $Feld[61] = array(
       
    Nummer=>"F1",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Laufer",
       
    Farbe=>"Weiss");

    $Feld[71] = array(
       
    Nummer=>"G1",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Springer",
       
    Farbe=>"Weiss");

    $Feld[81] = array(
       
    Nummer=>"H1",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Turm",
       
    Farbe=>"Weiss");

    $Feld[12] = array(
       
    Nummer=>"A2",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Bauer",
       
    Farbe=>"Weiss");

    $Feld[22] = array(
       
    Nummer=>"B2",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Bauer",
       
    Farbe=>"Weiss");

    $Feld[32] = array(
       
    Nummer=>"C2",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Bauer",
       
    Farbe=>"Weiss");

    $Feld[42] = array(
       
    Nummer=>"D2",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Bauer",
       
    Farbe=>"Weiss");

    $Feld[52] = array(
       
    Nummer=>"E2",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Bauer",
       
    Farbe=>"Weiss");

    $Feld[62] = array(
       
    Nummer=>"F2",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Bauer",
       
    Farbe=>"Weiss");

    $Feld[72] = array(
       
    Nummer=>"G2",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Bauer",
       
    Farbe=>"Weiss");

    $Feld[82] = array(
       
    Nummer=>"H2",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Bauer",
       
    Farbe=>"Weiss");

    $Feld[13] = array(
       
    Nummer=>"A3",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[23] = array(
       
    Nummer=>"B3",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[33] = array(
       
    Nummer=>"C3",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[43] = array(
       
    Nummer=>"D3",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[53] = array(
       
    Nummer=>"E3",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[63] = array(
       
    Nummer=>"F3",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[73] = array(
       
    Nummer=>"G3",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[83] = array(
       
    Nummer=>"H3",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[14] = array(
       
    Nummer=>"A4",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[24] = array(
       
    Nummer=>"B4",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[34] = array(
       
    Nummer=>"C4",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[44] = array(
       
    Nummer=>"D4",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[54] = array(
       
    Nummer=>"E4",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[64] = array(
       
    Nummer=>"F4",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[74] = array(
       
    Nummer=>"G4",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[84] = array(
       
    Nummer=>"H4",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[15] = array(
       
    Nummer=>"A5",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[25] = array(
       
    Nummer=>"B5",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[35] = array(
       
    Nummer=>"C5",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[45] = array(
       
    Nummer=>"D5",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[55] = array(
       
    Nummer=>"E5",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[65] = array(
       
    Nummer=>"F5",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[75] = array(
       
    Nummer=>"G5",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[85] = array(
       
    Nummer=>"H5",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[16] = array(
       
    Nummer=>"A6",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[26] = array(
       
    Nummer=>"B6",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[36] = array(
       
    Nummer=>"C6",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[46] = array(
       
    Nummer=>"D6",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[56] = array(
       
    Nummer=>"E6",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[66] = array(
       
    Nummer=>"F6",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[76] = array(
       
    Nummer=>"G6",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[86] = array(
       
    Nummer=>"H6",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Leer",
       
    Farbe=>"Leer");

    $Feld[17] = array(
       
    Nummer=>"A7",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Bauer",
       
    Farbe=>"Schwarz");

    $Feld[27] = array(
       
    Nummer=>"B7",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Bauer",
       
    Farbe=>"Schwarz");

    $Feld[37] = array(
       
    Nummer=>"C7",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Bauer",
       
    Farbe=>"Schwarz");

    $Feld[47] = array(
       
    Nummer=>"D7",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Bauer",
       
    Farbe=>"Schwarz");

    $Feld[57] = array(
       
    Nummer=>"E7",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Bauer",
       
    Farbe=>"Schwarz");

    $Feld[67] = array(
       
    Nummer=>"F7",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Bauer",
       
    Farbe=>"Schwarz");

    $Feld[77] = array(
       
    Nummer=>"G7",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Bauer",
       
    Farbe=>"Schwarz");

    $Feld[87] = array(
       
    Nummer=>"H7",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Bauer",
       
    Farbe=>"Schwarz");

    $Feld[18] = array(
       
    Nummer=>"A8",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Turm",
       
    Farbe=>"Schwarz");

    $Feld[28] = array(
       
    Nummer=>"B8",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Springer",
       
    Farbe=>"Schwarz");

    $Feld[38] = array(
       
    Nummer=>"C8",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Laufer",
       
    Farbe=>"Schwarz");

    $Feld[48] = array(
       
    Nummer=>"D8",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Dame",
       
    Farbe=>"Schwarz");

    $Feld[58] = array(
       
    Nummer=>"E8",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Konig",
       
    Farbe=>"Schwarz");

    $Feld[68] = array(
       
    Nummer=>"F8",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Laufer",
       
    Farbe=>"Schwarz");

    $Feld[78] = array(
       
    Nummer=>"G8",
       
    FeldFarbe=>"Weiss",
       
    Figur=>"Springer",
       
    Farbe=>"Schwarz");

    $Feld[88] = array(
       
    Nummer=>"H8",
       
    FeldFarbe=>"Schwarz",
       
    Figur=>"Turm",
       
    Farbe=>"Schwarz");


    #========================================Spielfelder-Eigabe=============================================================


    foreach($Feld AS $wert_x)
    {
       foreach(
    $wert_x AS $schluessel_x => $endwert_x)
       {
          if (
    $endwert_x ==  "Leer") {

          echo 
    "Leer";

          }

          elseif (
    $endwert_x ==  "Turm") {

          echo 
    "Turm";

          }

          elseif (
    $endwert_x ==  "Springer") {

          echo 
    "Springer";

          }

          elseif (
    $endwert_x ==  "Laufer") {

          echo 
    "Laufer";

          }

          elseif (
    $endwert_x ==  "Konig") {

          echo 
    "Konig";

          }

          elseif (
    $endwert_x ==  "Dame") {

          echo 
    "Dame";

          }

          elseif (
    $endwert_x ==  "Bauer") {

          echo 
    "Bauer";

          }
       }

       echo 
    "<br />\r\n";
    }


    #==============================================Spielfelder-Anzeige============================================


    ?>
    Ausgabe:
    Code:
    Turm
    Springer
    Laufer
    Dame
    Konig
    Laufer
    Springer
    Turm
    Bauer
    Bauer
    Bauer
    Bauer
    Bauer
    Bauer
    Bauer
    Bauer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    LeerLeer
    Bauer
    Bauer
    Bauer
    Bauer
    Bauer
    Bauer
    Bauer
    Bauer
    Turm
    Springer
    Laufer
    Dame
    Konig
    Laufer
    Springer
    Turm
    Wie kann ich das jetzt in die richtige Form bringen bzw. Grafiken für Figuren einbinden?
    Hätte vielleicht jemand eine Idee wie ich das mit dem ziehen der Figuren bewerkstelligen kann?

    Hoffe auf baldige Antwort

  • #2
    Ich würde mittels Div-Container ein Raster erstellen.
    Du hast ein Div, welcher sich nach rechts x mal wiederholt und dann in der nächsten Reihe wieder x mal weiterläuft u.s.w.
    Nun gibt man jedem Div eine ID (einfach fortlaufend). Und danach könnte man ein Array mit den Spielfiguren und id anfertigen, welches dann mit foreach durchlaufen wird und bei passender Id, die Figur gesetzt wird (Bild oder sowas).

    Kommentar


    • #3
      Im Grunde ist das Schachbrett(feld) nichst anderes als wie eine Game map. Dazu wurde in diesen Forum schon mal ein link zu einem Tutorial gepostet wie man so eine Map am einfachsten umsetzen kann.

      Zunächst solltes du die Map größe bestimmen die ergibt sich bei dir Automatisch durch das Schachbrett diese hat immer die gleiche Größe und immer die gleichen anzahl an Feldern.

      Weiters wenn dir es bei Schach schon mal aufgefallen ist haben die eine Nummerierung sowie Buchstaben.

      Zb Springer auf A5 , Läufer auf c7 und so weiter.

      Mfg Splasch

      Kommentar


      • #4
        Sorry, aber mit ner Game map hat das nun wirklich NULL zu tun.
        Ein zweidimensionales Array für die Felder bietet sich auf jeden Fall an, weil man darüber gut die Gültigkeit von Zügen (bspw. Rösselsprung) bestimmen kann.
        [COLOR="#F5F5FF"]--[/COLOR]
        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
        [COLOR="#F5F5FF"]
        --[/COLOR]

        Kommentar


        • #5
          Wenn Du das Schachspiel lokal mit JavaScript schreiben würdest, fällt der Aufwand für AJAX/PHP/Datenbank/Long-Polling weg und Du kannst direkt auf die Felder zugreifen.
          Ich habe vor einer Weile ein Dame-Spiel für JavaScript geschrieben; Aufwand rund ein Nachmittag (hauptsächlich um JS zu lernen).. das geht eindeutig bequemer als mit einem PHP-"Server".
          Oder muss das Spiel "online" an zwei verschiedenen PCs gegeneinander spielbar sein?
          LG
          PS: Du könntest für das Spielfeld auch das <table>-Tag benutzen und es so vorm Aussterben bewahren

          edit. Mist, falsch verstanden. Trotzdem: die Ausgabe per PHP ist eigentlich überflüssig und kann auch in JS erledigt werden; am Besten in 2 geschachtelten Schleifen, die eine Tabelle und ein Zweidimensionales Array erzeugen. Die Tabelle kannst Du so schon als Ein/Ausgabe-Modul umbauen:
          Code:
          <div id="spielfeld">
           <!-- hier kommt die Tabelle rein -->
          </div>
          <script type="text/javascript">
           var sf = '<table cellpadding="10px">';
           for (var y=1;y<=8;y++) {
            sf += "<tr>";
            for (var x=1;x<=8;x++) {
             sf += '<td id="feld-'+x+'-'+y+'" onclick="clickcallback('+x+','+y+');">&bull;</td>';
            }
            sf += "</tr>";
           }
           sf += "</table>";
           document.getElementById("spielfeld").innerHTML = sf;
           //Wird aufgerufen, wenn der Spieler auf ein Feld klickt
           function clickcallback(x,y) {
            document.getElementById("feld-"+x+"-"+y).style.background = "#ff0000";
           }
          </script>
          Ist natürlich nur eine Anregung.
          Gruß

          Kommentar


          • #6
            @DEdK4ever

            Leider ist es so das wir das Spiel nur mit PHP programmieren dürfen.
            Mein Lehrer stellt sich das so vor:

            Zuerst soll das Spiel lokal auf meinem Laptop spielbar sein.
            Dann sollen wir mit MySql das Spiel Online für das Schulnetzwerk spielbar machen so das die Klasse sich anmelden und spielen kann. (Das wird dann extra bewertet.)

            Als PHP-Server verwende ich XAMPP1.7.7

            Zum Spiel selbst hat er folgende Anforderungen:

            -Grafisch muss es noch nicht ausgereift sein (als ob das bei Schach möglich ist )
            -Ziehen mit Klick auf die Figur und Klick auf das Feld
            -Wenn man auf die Figur geklickt hat sollen die machbaren Zügen hervorgehoben werden.
            -Wenn Weis am Zug ist sollen die Schwarzen Figuren nicht anklickbar sein und umgekehrt

            @Solu

            Mal sehen ob ich deine Idee verstanden habe.

            -Ich soll für jedes Feld ein div machen.
            -Aus meinem bisherigen Code die Figurenteile herauslöschen und mit dem Wert x ersetzen
            -Dann 1 Array mit den Figuren (z.B. Läufer) und dazugehöriger ID (Schwarzer Springer auf Weißem Feld = 2, 0 = Leeres weißes Feld) erstellen und
            -Eine Foreach-Schleife durchlaufen lassen und bei wenn x z.B 0 ist ein leeres weißes Feld image einfügen.

            Kommentar


            • #7
              Das hier ist mein Dame-Spiel, was ich als JS-Anfänger ohne Internet mal zusammengebastelt habe. Es ist rein in JS, funktioniert in quasi keinem Browser, hat keine Absicherung für Verloren/Gewonnen/Fehler und nur die einfachsten Regeln eingebaut.
              Code:
              <html>
               <head>
                <title>Dame in JavaScript</title>
                <style type="text/css" >
                 table { border:3px solid #a30; }
                 table tr td { width:50px;height:50px; }
                 table tr td div { width:50px;height:50px; }
                 h1 { margin:2px; }
                </style>
               </head>
               <body>
                <h1 id="farbe">&nbsp;</h1>
                <table cellpadding="0" cellspacing="1px" border="0">
                 <tr>
                  <td id="aa">&nbsp;</td>
                  <td id="ab">&nbsp;</td>
                  <td id="ac">&nbsp;</td>
                  <td id="ad">&nbsp;</td>
                  <td id="ae">&nbsp;</td>
                  <td id="af">&nbsp;</td>
                  <td id="ag">&nbsp;</td>
                  <td id="ah">&nbsp;</td>
                 </tr>
                 <tr>
                  <td id="ba">&nbsp;</td>
                  <td id="bb">&nbsp;</td>
                  <td id="bc">&nbsp;</td>
                  <td id="bd">&nbsp;</td>
                  <td id="be">&nbsp;</td>
                  <td id="bf">&nbsp;</td>
                  <td id="bg">&nbsp;</td>
                  <td id="bh">&nbsp;</td>
                 </tr>
                 <tr>
                  <td id="ca">&nbsp;</td>
                  <td id="cb">&nbsp;</td>
                  <td id="cc">&nbsp;</td>
                  <td id="cd">&nbsp;</td>
                  <td id="ce">&nbsp;</td>
                  <td id="cf">&nbsp;</td>
                  <td id="cg">&nbsp;</td>
                  <td id="ch">&nbsp;</td>
                 </tr>
                 <tr>
                  <td id="da">&nbsp;</td>
                  <td id="db">&nbsp;</td>
                  <td id="dc">&nbsp;</td>
                  <td id="dd">&nbsp;</td>
                  <td id="de">&nbsp;</td>
                  <td id="df">&nbsp;</td>
                  <td id="dg">&nbsp;</td>
                  <td id="dh">&nbsp;</td>
                 </tr>
                 <tr>
                  <td id="ea">&nbsp;</td>
                  <td id="eb">&nbsp;</td>
                  <td id="ec">&nbsp;</td>
                  <td id="ed">&nbsp;</td>
                  <td id="ee">&nbsp;</td>
                  <td id="ef">&nbsp;</td>
                  <td id="eg">&nbsp;</td>
                  <td id="eh">&nbsp;</td>
                 </tr>
                 <tr>
                  <td id="fa">&nbsp;</td>
                  <td id="fb">&nbsp;</td>
                  <td id="fc">&nbsp;</td>
                  <td id="fd">&nbsp;</td>
                  <td id="fe">&nbsp;</td>
                  <td id="ff">&nbsp;</td>
                  <td id="fg">&nbsp;</td>
                  <td id="fh">&nbsp;</td>
                 </tr>
                 <tr>
                  <td id="ga">&nbsp;</td>
                  <td id="gb">&nbsp;</td>
                  <td id="gc">&nbsp;</td>
                  <td id="gd">&nbsp;</td>
                  <td id="ge">&nbsp;</td>
                  <td id="gf">&nbsp;</td>
                  <td id="gg">&nbsp;</td>
                  <td id="gh">&nbsp;</td>
                 </tr>
                 <tr>
                  <td id="ha">&nbsp;</td>
                  <td id="hb">&nbsp;</td>
                  <td id="hc">&nbsp;</td>
                  <td id="hd">&nbsp;</td>
                  <td id="he">&nbsp;</td>
                  <td id="hf">&nbsp;</td>
                  <td id="hg">&nbsp;</td>
                  <td id="hh">&nbsp;</td>
                 </tr>
                </table>
                <script type="text/javascript">
                 col_bright = "#999;";
                 col_dark = "#444;";
                 col_dark_hi = "#9a0";
                 fig_bw = "url(bauer-weiss.png)";
                 fig_dw = "url(dame-weiss.png)";
                 fig_bs = "url(bauer-schwarz.png)";
                 fig_ds = "url(dame-schwarz.png)";
                 fig_sel = "url(selektion.png)";
                 
                 n = new Array("","a","b","c","d","e","f","g","h");
                 function f(id) {
                  return document.getElementById(id);
                 }
                 
                 function felderRendern() {
                  var color;
                  var black = true;
                  for (var r=1;r<9;r++) {
                   for (var c=1;c<9;c++) {
                    f(n[r]+n[c]).innerHTML = "<div id=\""+n[r]+""+n[c]+"sel\" onclick=\"cc("+r+","+c+");\">&nbsp;</div>";
                    if (black) {
                     color = col_dark;
                    } else {
                     color = col_bright;
                    }
                    f(n[r]+n[c]).style["background-color"] = color;
                    black = ! black;
                   }
                   black = ! black;
                  }
                 }
                 
                 felderRendern();
                 
                 s = new Array();
                 //Weiss
                 s[1] = new Array(1,1,1);
                 s[2] = new Array(1,3,1);
                 s[3] = new Array(1,5,1);
                 s[4] = new Array(1,7,1);
                 s[5] = new Array(2,2,1);
                 s[6] = new Array(2,4,1);
                 s[7] = new Array(2,6,1);
                 s[8] = new Array(2,8,1);
                 s[9] = new Array(3,1,1);
                 s[10] = new Array(3,3,1);
                 s[11] = new Array(3,5,1);
                 s[12] = new Array(3,7,1);
                 //Schwarz
                 s[13] = new Array(8,8,1);
                 s[14] = new Array(8,6,1);
                 s[15] = new Array(8,4,1);
                 s[17] = new Array(7,7,1);
                 s[18] = new Array(7,5,1);
                 s[19] = new Array(7,3,1);
                 s[20] = new Array(7,1,1);
                 s[21] = new Array(6,8,1);
                 s[22] = new Array(6,6,1);
                 s[23] = new Array(6,4,1);
                 s[24] = new Array(6,2,1);
                 s[16] = new Array(8,2,1);
                 
                 var fig = fig_bw;
                 for (var i=1;i<25;i++) {
                  if (i == 13) {
                   fig = fig_bs;
                  }
                  f(n[s[i][0]]+n[s[i][1]]).style["background-image"] = fig;
                 }
                 
                 function update_ueberschrift() {
                  if (schwarz_dran) {
                   f("farbe").innerHTML = "Schwarz ist am Zug";
                  } else {
                   f("farbe").innerHTML = "Wei&szlig; ist am Zug";
                  }
                 }
                 function getStein(row,col) {
                  for (var i=1;i<25;i++) {
                   if ((s[i][0] == row) && (s[i][1] == col) && (s[i][2] > 0)) {
                    return i;
                   }
                  }
                  return false;
                 }
                 
                 schwarz_dran = false;
                 spielstatus = 1; //1 = Spieler zieht; 2 = Stein selektiert 
                 selStein = false;
                 eingefarbt = [];
                 schlag_ur = [];
                 schlag_ul = [];
                 schlag_or = [];
                 schlag_ol = [];
                 
                 update_ueberschrift();
                 
                 function minVal(a,b) {
                  if (a < b) {
                   return a;
                  }
                  return b;
                 }
                 function showOptionen(stein) {
                  var row = s[stein][0];
                  var col = s[stein][1];
                  var feldinh;
                  var maxoff;
                  schlag_ur.ok = false;
                  schlag_ul.ok = false;
                  schlag_or.ok = false;
                  schlag_ol.ok = false;
                  if ((s[stein][2] == 2) || (stein < 13)) {
                   //Nach unten rechts
                   schlag_ur.ok = true;
                   schlag_ur.endpos = [];
                   schlag_ur.feinde = [];
                   maxoff = minVal(8 - row,8 - col);
                   if (maxoff == 0) {
                    schlag_ur.ok = false;
                   }
                   for(var i=1;i<=maxoff;i++) {
                    feldinh = getStein(row + i,col + i);
                    if (feldinh == false) {
                     f(n[row + i]+n[col + i]).style["background-color"] = col_dark_hi;
                     eingefarbt[eingefarbt.length] = [row + i,col + i];
                     schlag_ur.endpos = [row + i,col + i];
                     break;
                    }
                    if ((feldinh < 13) == (stein < 13)) {
                     schlag_ur.ok = false;
                     break;
                    }
                    schlag_ur.feinde[schlag_ur.feinde.length] = feldinh;
                   } 
                   //Nach unten links
                   schlag_ul.ok = true;
                   schlag_ul.endpos = [];
                   schlag_ul.feinde = [];
                   maxoff = minVal(8 - row,col - 1);
                   if (maxoff == 0) {
                    schlag_ul.ok = false;
                   }
                   for(var i=1;i<=maxoff;i++) {
                    feldinh = getStein(row + i,col - i);
                    if (feldinh == false) {
                     f(n[row + i]+n[col - i]).style["background-color"] = col_dark_hi;
                     eingefarbt[eingefarbt.length] = [row + i,col - i];
                     schlag_ul.endpos = [row + i,col - i];
                     break;
                    }
                    if ((feldinh < 13) == (stein < 13)) {
                     schlag_ul.ok = false;
                     break;
                    }
                    schlag_ul.feinde[schlag_ul.feinde.length] = feldinh;
                   }
                  }
                  if ((s[stein][2] == 2) || (stein > 12)) {
                   //Nach oben rechts
                   schlag_or.ok = true;
                   schlag_or.endpos = [];
                   schlag_or.feinde = [];
                   maxoff = minVal(row - 1,8 - col);
                   if (maxoff == 0) {
                    schlag_or.ok = false;
                   }
                   for(var i=1;i<=maxoff;i++) {
                    feldinh = getStein(row - i,col + i);
                    if (feldinh == false) {
                     f(n[row - i]+n[col + i]).style["background-color"] = col_dark_hi;
                     eingefarbt[eingefarbt.length] = [row - i,col + i];
                     schlag_or.endpos = [row - i,col + i];
                     break;
                    }
                    if ((feldinh > 12) == (stein > 12)) {
                     schlag_or.ok = false;
                     break;
                    }
                    schlag_or.feinde[schlag_or.feinde.length] = feldinh;
                   }
                   //Nach oben links
                   schlag_ol.ok = true;
                   schlag_ol.endpos = [];
                   schlag_ol.feinde = [];
                   maxoff = minVal(row - 1,col - 1);
                   if (maxoff == 0) {
                    schlag_ol.ok = false;
                   }
                   for(var i=1;i<=maxoff;i++) {
                    feldinh = getStein(row - i,col - i);
                    if (feldinh == false) {
                     f(n[row - i]+n[col - i]).style["background-color"] = col_dark_hi;
                     eingefarbt[eingefarbt.length] = [row - i,col - i];
                     schlag_ol.endpos = [row - i,col - i];
                     break;
                    }
                    if ((feldinh > 12) == (stein > 12)) {
                     schlag_ol.ok = false;
                     break;
                    }
                    schlag_ol.feinde[schlag_ol.feinde.length] = feldinh;
                   }
                  }
                 }
                 function zugSpielen(row,col,feinde) {
                  for (var i=0;i<feinde.length;i++) {
                   s[feinde[i]][2] = 0;
                   f(n[s[feinde[i]][0]]+n[s[feinde[i]][1]]).style["background-image"] = "";
                  }
                  f(n[s[selStein][0]]+n[s[selStein][1]]+"sel").style["background-image"] = "";
                  f(n[s[selStein][0]]+n[s[selStein][1]]).style["background-image"] = "";
                  s[selStein][0] = row;
                  s[selStein][1] = col;
                  if (((selStein < 13) && (row == 8)) || ((selStein > 12) && (row == 1))) {
                   s[selStein][2] = 2;
                  }
                  var sfig;
                  if (selStein < 13) {
                   sfig = fig_bw;
                   if (s[selStein][2] == 2) {
                    sfig = fig_dw;
                   }
                  } else {
                   sfig = fig_bs;
                   if (s[selStein][2] == 2) {
                    sfig = fig_ds;
                   }
                  }
                  f(n[row]+n[col]).style["background-image"] = sfig;
                 }
                 function cc(row,col) {
                  if (spielstatus == 1) {
                   stein = getStein(row,col);
                   if (!(stein == false)) {
                    if ((schwarz_dran && (stein > 12)) || (!schwarz_dran && (stein < 13))) {
                     f(n[row]+n[col]+"sel").style["background-image"] = fig_sel;
                     selStein = stein;
                     spielstatus = 2;
                     showOptionen(stein);
                    }
                   }
                  } else {
                   var zug = false;
                   if (schlag_ur.ok && (row == schlag_ur.endpos[0]) && (col == schlag_ur.endpos[1])) {
                    zug = [row,col,schlag_ur.feinde];
                   }
                   if (schlag_ul.ok && (row == schlag_ul.endpos[0]) && (col == schlag_ul.endpos[1])) {
                    zug = [row,col,schlag_ul.feinde];
                   }
                   if (schlag_or.ok && (row == schlag_or.endpos[0]) && (col == schlag_or.endpos[1])) {
                    zug = [row,col,schlag_or.feinde];
                   }
                   if (schlag_ol.ok && (row == schlag_ol.endpos[0]) && (col == schlag_ol.endpos[1])) {
                    zug = [row,col,schlag_ol.feinde];
                   }
                   if (zug == false) {
                    spielstatus = 1;
                    felderRendern();
                    cc(row,col);
                   } else {
                    zugSpielen(zug[0],zug[1],zug[2]);
                    schwarz_dran = ! schwarz_dran;
                    spielstatus = 1;
                    update_ueberschrift();
                    felderRendern();
                   }
                  }
                 }
                 
                </script>
               </body>
              </html>
              Bist Du sicher, dass euer Lehrer ein Schach-Browsergame mit Server und Datenbank verlangt, was sehr sicher mehr als zwanzigmal so viel Aufwand ist wie der Schnipsel oben?
              Das wird auf jeden Fall eine menge Arbeit
              Viel Glück

              Kommentar


              • #8
                So schwer ist das nicht, habe genau das beschriebene selbst schon mal als Spaßprojekt umgesetzt. Das kriegt man hin als Anfänger. Vielleicht nicht als blutiger Einsteiger.
                [COLOR="#F5F5FF"]--[/COLOR]
                [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                [COLOR="#F5F5FF"]
                --[/COLOR]

                Kommentar


                • #9
                  Schwerer wird es, wenn man gegen den "Computer" spielen soll.

                  Kommentar


                  • #10
                    @DEdK4ever

                    Ich bin mir sicher das mein Lehrer das verlangt. Das ist ja das Dumme.

                    Ich habe noch nie Kontakt mit PHP gehabt. Alles was ich weiß habe ich mir aus dem Internet zusammengestoppelt.

                    @nikosch

                    Wie hast du das umgesetzt ?
                    Mein größtes Problem sind die Züge und die Überprüfung ob der Zug korrekt ist bzw. ob Schach/Matt vorliegt.
                    Auch die Grafische Umsetzung hab ich noch nicht hinbekommen.
                    Eigentlich habe ich KEINE AHNUNG wie ich das umsetzen soll.
                    Mein Abgabetermin ist am 13.3. für das lokal-spielbare Spiel

                    @Solu

                    Nein bloß nicht. Das hätte mir noch gefehlt.

                    Kommentar


                    • #11
                      Relativ viel (einfache) Mathematik:

                      Wenn Du ein Schachfeld hast mit den Feldern (1;1) bis (8;8 ) und Dein Läufer steht an Position (x;y), dann sind alle diagonalen Positionen (x+n;y+n),(x-n;y+n),(x+n;y-n),(x-n;y-n) gültig, bei denen
                      * x+/n > 0 und < 8
                      * Die Feldposition frei ist.
                      Schlagpositionen sind die ersten Positionen, die mit Figuren besetzt sind.
                      Die Berechnungen kann man einfach durch Schleifen lösen.

                      Für den Springer gibts dann 8 berechenbare Positionsangaben, die man ebenso abprüft usw.

                      Eine einfache Schach-Prüfung wäre, alle Gegner-Figuren abzufragen, ob sie den König schlagen können.
                      Eine einfache Matt-Prüfung wäre, eine Schach-Prüfung durchzuführen + zu prüfen, ob der König sicher bewegen kann und ob auf dieser neuen Position Schach besteht (Schach-Prüfung)
                      [COLOR="#F5F5FF"]--[/COLOR]
                      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                      [COLOR="#F5F5FF"]
                      --[/COLOR]

                      Kommentar


                      • #12
                        Zitat von mutschuk Beitrag anzeigen
                        mein abgabetermin ist am 13.3. Für das lokal-spielbare spiel
                        Du meinst aber nicht 2012, oder?

                        Für den Zuggenerator eignet sich die 12x10-Darstellung sehr gut, wie ich finde.

                        Kommentar


                        • #13
                          Zitat von Mutschuk Beitrag anzeigen
                          [...]Zuerst soll das Spiel lokal auf meinem Laptop spielbar sein. Dann sollen wir mit MySql das Spiel Online für das Schulnetzwerk spielbar machen so das die Klasse sich anmelden und spielen kann[...]
                          Lokal auf dem Laptop und online im Schulnetz hätte einen weitgehend verschiedenen Aufbau.
                          Zumindest die 2te Version kriegst du in 3 Wochen nie hin, wenn du noch quasi nichts mit PHP gemacht hast - trotzdem viel Glück

                          PS: Wie soll denn das Spiel aussehen? In einem Tab spielbar mit beiden Spielern abwechselnd oder in 2 Tabs spielbar mit je einem Spieler?

                          Kommentar


                          • #14
                            Zumindest die 2te Version kriegst du in 3 Wochen nie hin, wenn du noch quasi nichts mit PHP gemacht hast - trotzdem viel Glück
                            Lass ihn doch erstmal anfangen, bevor Du hier gleich demotivierst. Das ist doch kontraproduktiv.
                            [COLOR="#F5F5FF"]--[/COLOR]
                            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                            [COLOR="#F5F5FF"]
                            --[/COLOR]

                            Kommentar


                            • #15
                              Danke nikosch.

                              Der Projektteil Datenbank ist nicht bis März fertigzustellen. Er wird als eigenes Projekt behandelt und wahrscheinlich vom 13.03 bis Mitte Mai, Anfang Juni zu machen sein.

                              Das Spiel soll in einem Tab spielbar sein.

                              Ich hab mir das so vorgestellt:

                              Eine Art Startseite mit einem Button für SPIEL STARTEN, ein Button für REGELN und ein Button für Einstellungen (Erst bei der Version 1.5 )

                              Beim Ersten soll im gleichen Tab das Spiel gestartet werden.
                              Bei Regeln soll ein neues Tab aufgehen und eine Art Lexikon mit Regeln erscheinen. (Das Regelwerk ist eigentlich schon fast fertig)

                              Beim Spiel selbst: Das Schachbrett mit simplen schwarz-weißen Feldern und Buchstaben als Figuren (Diese sind aber Bilder).

                              Beim Ziehen sollte die Figur mit einem Klick ausgewählt werden. Die Felder auf die sie ziehen kann werden gelb bei Figuren wir der Hintergrund gelb.

                              Mit einem Klick auf die Figur wird sie wieder abgewählt. Beim wählen eines gelben Feldes wird das Feld einfach besetzt. Nichts aufwendiges.

                              Wenn es Schach gibt soll unterhalb des Bretts diese Meldung anzeigen. Genauso bei Matt.

                              Wenn Matt vorliegt soll der Bildschirm zu einem Ergebnisschirm werden und das wird angezeigt welcher Player gewonnen hat (Pokalgrafik).
                              Von dort aus soll man ein neues Spiel Starten können oder zum Startbildschirm zurückkehren können.

                              Im Spiel gibt es noch seitlich eine Anzeige welcher Spieler an der Reihe ist, bzw. ein Button Regeln (gleich wie oben) und ein Button Aufgeben (Ergebnisschirm).

                              Dann ist noch zu sagen:

                              -Spezialzüge (En passant und Rochade) dürfen nicht vergessen werden
                              -Patt
                              -Optional ein Hintergrundbild für Startseite und Spiel
                              -Bei Schach gibt es ja nicht nur die Möglichkeit den König wegzuziehen sondern auch eine Figur dazwischenzustellen oder die Angreiferfigur zu Schlagen

                              So möchte ich das eigentlich realisiert haben, was mir ziemlich kompliziert erscheint.

                              Kommentar

                              Lädt...
                              X