Ankündigung

Einklappen
Keine Ankündigung bisher.

Schachbrett: Brettrand erstellen und Beschriften

Einklappen

Neue Werbung 2019

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

  • Schachbrett: Brettrand erstellen und Beschriften

    Hallo Leute,

    ich habe folgendes Problem: Projektarbeit : Schachbrett

    Dieses soll mit Hilfe von PHP verwirklicht werden. Zur Zeit habe ich folgenden Code:

    PHP-Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>Schachspiel Version 1.0</title>

    <!-- Schachspiel Version 1.0 -->
    <!-- Kurs FiSi 1 / Sommr 2013 -->
    <!-- Dozent: Detlef Kremer -->
    <!-- Dirk Dopmeyer -->


    <!-- Start Css -->
    <style type="text/css">
    #schachbrett
    {
    width:800px; height:800px;
    }



    </style>
    </head>
    <body style ="background-image:url(Bilder/Schach1.jpg) ; background-position: center ; background-size: cover ; background-color: #F5F5DC ; background-repeat:no-repeat">
    <h1 align="center"> Mein Schachbrett</h1>
    <table id="schachbrett" align="center">
    <!-- Start PHP -->

    <?php
    for ($zeile=0;$zeile<10;$zeile++){
    echo 
    '<tr>';
    for(
    $spalte=0$spalte<10$spalte++)
    {
    echo 
    '<td style="background-color:';
    if(
    $zeile == 0)
    {
    echo (
    $spalte == 0) ? '#DEB887;' '#87CEFA;';
    }
    else
    {
    echo (
    $spalte == 0) ? '#87CEFA;' '#DEB887;';
    }
    echo 
    '">&nbsp;</td>';
    }
    echo 
    "</tr>";
    }
    ?>

    </table>
    </body>
    </html>

    Dieses zeigt ein Brett von 10*10 Feldern an. Jedoch möchte ich die Äusseren Reihen und Spalten beschriften Reihe 0 und Reihe 10 Sowie Splalte 0 und Splalte 10 sollen in einem Braunton erscheinen und die Buchstaben A-H sowie die Zahlen 1-8 sollen das Brett zieren.
    Brauche allerding ein wenig Hilfestellung da das I-Net leider nichts brauchbare zu bieten hat ^^

    Wer kann helfen und hat Lust zur Hilfe?

  • #2
    Grundlagen... lerne, die Bedingungen der realen Welt in Code abzubilden...

    Du hast Zeilen und Spalten. Die Buchstaben/Zahlen sollen unter ganz bestimmten Bedingungen gesetzt werden - formuliere diese Bedingungen! Kann auch erstmal umgangssprachlich gemacht werden...

    Werkzeug: if
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Danke Dir!

      Kommentar


      • #4
        Besser als viele verschachtelte if(). Überlege dir wie das Brettaufgebaut ist. Dann baue es Schritt für Schritt auf (in PHP dann als 2-Dimensionaler Array). Erst a Schluss den Array als Tabelle ausgeben.

        Mein Ansatz: Ein Brett + 4Seiten Beschriftung + 4 Leere Ecken.

        Kommentar


        • #5
          4Seiten Beschriftung
          Geht natürlich auch. Ich wollte darauf hinaus, das sich diese 4 Seiten klar durch Bedingungen definieren lassen, welche man dann in Form einer if-Abfrage ausdrücken kann.
          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

          Kommentar


          • #6
            Das doch simple:

            PHP-Code:
            <?php

            class ChessBattlefield
            {
                protected 
            $battleField;

                public function 
            __construct()
                {
                    
            $impl = new DOMImplementation();
                    
            $doctype $impl->createDocumentType('html');
                    
            $this->battleField $impl->createDocument(null'html'$doctype)
                        ->
            createElement('table');

                    
            $this->initialize();
                }

                protected function 
            initialize()
                {
                    
            $doc $this->battleField->ownerDocument;

                    
            $this->battleField->setAttribute('id''battleField');

                    
            $horizontalReplacement = array(
                        
            => 'A',
                        
            => 'B',
                        
            => 'C',
                        
            => 'D',
                        
            => 'E',
                        
            => 'F',
                        
            => 'G',
                        
            => 'H',
                    );

                    foreach ( 
            range(0,9) as $vertical ) {

                        
            $currentRow $this->battleField->appendChild(
                            
            $doc->createElement('tr')
                        );

                        foreach ( 
            range(0,9) as $horizontal ) {
                            if ( 
            $vertical === || $vertical === ) {
                                
            $currentCol $currentRow->appendChild(
                                    
            $doc->createElement('td')
                                );

                                
            $currentCol->setAttribute('class''borderCell');
                                continue;
                            }

                            if ( 
            $horizontal === || $horizontal === ) {
                                
            $currentCol $currentRow->appendChild(
                                    
            $doc->createElement('td')
                                );

                                
            $currentCol->setAttribute('class''borderCell');
                                continue;
                            }

                            
            $currentCol $currentRow->appendChild(
                                
            $doc->createElement('td')
                            );

                            
            $pos = isset($horizontalReplacement[$horizontal])
                                ? 
            ' pos-'.$horizontalReplacement[$horizontal].$vertical
                                
            '';

                            
            $currentCol->setAttribute('class''battleCell'.$pos);
                        }
                    }
                }

                public function 
            __toString()
                {
                    
            $this->battleField->ownerDocument->preserveWhiteSpaces false;
                    
            $this->battleField->ownerDocument->formatOutput true;
                    return 
            $this->battleField->ownerDocument->saveHTML($this->battleField);
                }

            }

            ?><!DOCTYPE html>
            <html>
                <head>
                    <meta charset="utf-8">
                    <title>Schach!</title>

                    <style>
                        #battleField .borderCell {

                            background-color: orange;
                            color: white;
                            width: 10px;
                            height: 10px;
                        }

                        #battleField .battleCell {
                            width:32px;
                            height:32px;
                        }

                        #battleField tr:nth-child(even) .battleCell:nth-child(odd),
                        #battleField tr:nth-child(odd) .battleCell:nth-child(even)
                        {
                            background-color:#ddd;
                        }
                    </style>
                </head>
                <body>
                    <?= new ChessBattlefield ?>
                </body>
            </html>
            Beschriften kannste über CSS, stichwort: content: counter(chapter, upper-alpha);
            [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

            Kommentar


            • #7
              Sauber tr0y... nur noch den Copyrightvermerk reinklatschen, und schon kann Doppy "seine" Arbeit abgeben...
              Code:
              <!-- Schachspiel Version 1.0 -->
              <!-- Kurs FiSi 1 / Sommr 2013 -->
              <!-- Dozent: Detlef Kremer -->
              <!-- Dirk Dopmeyer -->
              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

              Kommentar


              • #8
                Zitat von lstegelitz Beitrag anzeigen
                Sauber tr0y... nur noch den Copyrightvermerk reinklatschen, und schon kann Doppy "seine" Arbeit abgeben...
                Code:
                <!-- Schachspiel Version 1.0 -->
                <!-- Kurs FiSi 1 / Sommr 2013 -->
                <!-- Dozent: Detlef Kremer -->
                <!-- Dirk Dopmeyer -->
                Und durchfallen, ist ja nicht umsonst hier alles ergooglebar. Ich bezweifel auch sehr stark das OOP bei denen zum Töpferkurs gehört.
                [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                Kommentar


                • #9
                  Ich Danke euch für eure Hilfe !! Habe super Anregungen bekommen die wirklich machbar sind .

                  Kommentar


                  • #10
                    Zitat von Yaslaw Beitrag anzeigen
                    Besser als viele verschachtelte if(). Überlege dir wie das Brettaufgebaut ist. Dann baue es Schritt für Schritt auf (in PHP dann als 2-Dimensionaler Array). Erst a Schluss den Array als Tabelle ausgeben.

                    Mein Ansatz: Ein Brett + 4Seiten Beschriftung + 4 Leere Ecken.
                    Hier die Lösung, die ich gestern mal für mich geschrieben habe, bevor ich die zitierte Aussage gechrieben habe

                    PHP-Code:
                    <?php
                    /**
                     * mpl           by ERB software/Stefan Erb
                     */


                        // Das Brett erstellen. Ein Array mit den Index [1...8][1...8]
                        
                    for($r 1$r 9$r++){
                            for(
                    $c 1$c <= 9$c++){
                                
                    $td[$r][$c] = array('class'=>(($r+$c) % == 0) ? 'black' 'white''value' => null);
                            }
                        }
                        
                    //Randbeschriftungen hinzufügen..
                        //Für die Buchstaben sind das [0][1...8] und [9][1...8]
                        //Für die Zahlen: [1...8][0] und [1...8][9] 
                        
                    for($i 1$i 9$i++){
                            
                    $td[0][$i] = array('class'=>'border''value' => chr(64+$i));
                            
                    $td[9][$i] = array('class'=>'border''value' => chr(64+$i));
                            
                    $td[$i][0] = array('class'=>'border''value' => $i);
                            
                    $td[$i][9] = array('class'=>'border''value' => $i);
                        }
                        
                    // Die Ecken noch hinzufügen [0][0], [0][9], [9][0] und [9][9]
                        
                    $td[0][9] = array('class'=>'border''value' => null);
                        
                    $td[0][0] = array('class'=>'border''value' => null);
                        
                    $td[9][0] = array('class'=>'border''value' => null);
                        
                    $td[9][9] = array('class'=>'border''value' => null);
                        
                    // sortieren
                        
                    ksort($td);                            //Nach Zeilen
                        
                    foreach($td as &$itemksort($item);   //Jede Zeile nach SPalten  
                        
                        //Ausgabevarible initialisieren
                        
                    $brettHtml null;
                        
                    //Das Bret ausgeben
                        
                    foreach($td as $r => $row){
                            
                    $brettHtml.= '<tr>';
                            foreach(
                    $row as $c => $fld){
                                
                    $brettHtml.="<td class='{$fld['class']}'>{$fld['value']}</td>";                
                            }
                            
                    $brettHtml.= '</tr>';
                        }

                    ?>


                    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                    <html xmlns="http://www.w3.org/1999/xhtml">

                    <head>
                        <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
                        <title>Schachspiel Version 1.0</title>
                        
                        <style type="text/css">
                            #schachbrett{width:1000px; height:1000px;}
                            td{width:100px; height:100px; text-align: center; vertical-align: middle;}
                            .black{background-color:black;}
                            .white{background-color:white;}
                            .border{background-color:gray;}
                        </style>
                    </head>
                    <body>
                        <h1> Mein Schachbrett</h1>
                        <table id="schachbrett" align="center">
                            <?php echo $brettHtml?>
                        </table>
                    </body>
                    </html>

                    Kommentar


                    • #11
                      Und da Ihr beiden den Namen des Dozenten zitiert habt, kann er ihn auch nicht mehr löschen.
                      Sollte man einführen.

                      Kommentar


                      • #12
                        könnte euch Knuddeln mit den vielen Infos kann ich jetzt mit den Figuren weitermachen ^^. Erstes Teilziel erreicht.

                        Kommentar

                        Lädt...
                        X