php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.06.2004, 09:03  
Gast
 
Beiträge: n/a
Standard Erstellung eines kleinen Schachbrettes

Moin moin,
daher das ich ein anfänger bin was PHP & Datenbanken angeht frag ich einfach mal die Profis unter euch . Es geht um folgendes Problem und suche eine Lösung.

Ich möchte mittels PHP ein kleines Schachbrett erstellen. Es geht mir hier noch nicht ums Spiel sondern vorerst nur um das Brett wenn ich die index.php aufrufe das es mir optisch mittels Bildern dargestellt wird.
Dateien die ich schon habe:
index.php (die noch nicht fertig ist)
brett.php (mit inhalt
x1|y1|weiss|blank
x1|y2|schwarz|blank
x1|y3|gelb|air
x1|y4|blau|air
.
.)

wie schaff ich es jetzt, dies optisch wieder wiederzugeben??? hab mich schon durch einige Foren durchgelesen&denkopfzerbrochen
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 29.06.2004, 09:19  
Erfahrener Benutzer
 
Registriert seit: 17.10.2003
Beiträge: 243
MrMarco
Standard

Mach 2 Schleifen. Eine für die X-Koordinate, eine für die Y-Koordinate.

Logischerweise Y zuerst

Geh die durch und schicke jeweils in der inneren die notwendigen Informationen zum Client.

Irgendwie habe ich das Gefühl, das dies aber nicht deine Frage beantwortet... formuliere sie deshalb bitte ein wenig genauer.
MrMarco ist offline  
Alt 29.06.2004, 09:33  
Gast
 
Beiträge: n/a
Standard

der Begriff "Schleifen" sagt mir schonmal was. (am Boden schleifen vor verzweiflung).

Zunächst möchte ich die brett.php auslesen lassen. dies geht mit
Code:
$array = file("brett.php");<
danach sollte mir je nach X Y Farbe Zustand ein Bild zuordnen und wie ein Schachbrett aufbauen.
Code:
$X = range(1,10);
$Y = range (1,10);
$farbe = array("schwarz","weiss","blau","gruen","gelb");
$zustand = array("air","clear","blank");
 
Alt 29.06.2004, 09:44  
Erfahrener Benutzer
 
Registriert seit: 17.10.2003
Beiträge: 243
MrMarco
Standard

Die "brett.php" auslesen...

Mir dämmert was böses... du willst damit doch wohl nicht sagen, das du die Daten in einem Flatfile abgelegt hast, welches die Extension .php trägt?

Bzw. mal anderster gefragt, hast du die Daten in einer Datenbank abgelegt, oder geht es dir nur um das Parsen einer Datei, extrahieren der notwendigen Informationen anhand vorgegebener Syntax und Visualisierung dieser dann als Schachbrett?
MrMarco ist offline  
Alt 29.06.2004, 10:09  
Gast
 
Beiträge: n/a
Standard

hört sich ja kompliziert an aber (!)
nein, die Daten wurden in keiner Datenbank angelegt
jain, ich möchte die daten nur auslesen lassen
ja, Visualisierung wenn es möglich ist

PS: Nebenfrage: ist es ein fehler (für später wenn ich evtl was ändern möchte) das ich die Datei einfach so angelegt hab?
 
Alt 29.06.2004, 10:32  
Erfahrener Benutzer
 
Registriert seit: 17.10.2003
Beiträge: 243
MrMarco
Standard

Fehler... Ansichtssache... das .php als Extension ist falsch gewählt.

Wenn du Zugriff auf eine Datenbank hast, dann speichere die Daten lieber dort. Das macht es dir später einfacher dieser z.B. zu ändern.

Ich gehe mal davon aus, das du das noch machst und wir jetzt nur noch über den Theoretischen Weg reden zu der Lösung deines Problems.

Damit du die Grundlagen nachlesen kannst, hier ein Link:

http://www.php.net/manual/de/ref.filesystem.php

Hier ein Beispiel:

Code:
$objFH = fopen ("/home/rasmus/file.txt", "r");
while (!feof($objFH))
{
  $strBuffer = fgets($objFH, 80);
  $arrParts = explode ("|", $strBuffer);
}
fclose ($objFH);
Dieser kleiner Code geht die Datei Zeilenweise durch, zerlegt sie anhand des Trenners | und speichert das Ergebniss in einem Array ab.

$arrParts[0] ist danach X
$arrParts[1] ist danach Y
...

Ich hoffe es hilft.

Trotzdem nochmal der Hinweis: Sofern möglich, steige auf eine Datenbankbasierende Lösung um.
[/b]
MrMarco ist offline  
Alt 29.06.2004, 10:33  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 2.150
Guradia befindet sich auf einem aufstrebenden Ast
Standard

Ich bin mal so frei und knall dir eine meiner Klassen vor den Latz.

In getPlate() ist der eigentlich Aufbau drin.

Code:
class dfpCms_chessPlate {

   var $pieces;
   var $piecesString;
   var $letter;

   function dfpCms_chessPlate () {
      $this->letter = array ( 'a' => 1,
                              'b' => 2,
                              'c' => 3,
                              'd' => 4,
                              'e' => 5,
                              'f' => 6,
                              'g' => 7,
                              'h' => 8 );
   }

   function resetPieces () { $this->pieces = array(); }

   function setPieces ($piecesString = null) {

      if (is_null($piecesString)) {
         $this->pieces[8] = array (null, 'wt', 'ws', 'wl', 'wk', 'wd', 'wl', 'ws', 'wt');
         $this->pieces[7] = array (null, 'wb', 'wb', 'wb', 'wb', 'wb', 'wb', 'wb', 'wb');
         $this->pieces[2] = array (null, 'sb', 'sb', 'sb', 'sb', 'sb', 'sb', 'sb', 'sb');
         $this->pieces[1] = array (null, 'st', 'ss', 'sl', 'sk', 'sd', 'sl', 'ss', 'st');
      } else {
         $this->piecesString = $piecesString;

         $plate = strtolower( trim( $this->piecesString));
         $figures = split( ', ', $plate);

         foreach ($figures AS $figure) {
            $len = strlen($figure);
            $rest = $len % 2;
            
            if ($rest == 1) {            
               $figure_is = substr( $figure, 0, 3);
               $figure_on = substr( $figure, 3);
            } else {            
               $figure_is = substr( $figure, 0, 2);
               $figure_on = substr( $figure, 2);
            }

            $figure_on = strtr( $figure_on, $this->letter);
            $figure_ct = strlen( $figure_on);
            for ($c = 1; $c <= $figure_ct; $c += 2) {
               $this->pieces[$figure_on{$c}][$figure_on{$c - 1}] = $figure_is;
            }
         }
#        var_dump ($this->pieces);
      }
   }

   function _colorHexToRGB($color) {
      $color = strtolower($color);
      $l = strlen($color);

      if ($l == 7) {
         $color = substr($color, 1);
      }

      $r = substr($color,0,2);
      $g = substr($color,2,2);
      $b = substr($color,4);
      
      $r = hexdec($r);
      $g = hexdec($g);
      $b = hexdec($b);
      
      return $r.'_'.$g.'_'.$b;
   }
   
   function _figureToString($figure) {
      $figure = strtolower($figure);
      $color = substr($figure, 0, 1);
      $piece = substr($figure, 1, 1);
      $position = substr($figure, 2, 1);
      if (!$position) {
         $position = 'o';
      }

      $pieces = array(
         'k' => 'king',
         'd' => 'queen',
         's' => 'knight',
         'l' => 'bishop',
         't' => 'tower',
         'b' => 'pawn'
         );

      $colors = array(
         'w' => 'white',
         's' => 'black',
         'n' => 'neutral'
         );

      $positions = array(
         'o' => 'up',
         'l' => 'left',
         'r' => 'right',
         'u' => 'down'
         );
         
      return
         $pieces[$piece].'.'.
         $colors[$color].'.'.
         $positions[$position];
         
   }

   function getPlate (&$plate) {
      $bgcc = 1;
      $bgc[] = '#FFFFFF';
      $bgc[] = '#CCCCCC';
      if (!isset ($this->pieces)) {
         print 'NO PLACINGS';
      }
      $plate = '<div style="width:'.( 22 * 8).'px;height:'.( 22 * 8).'px;border-style:solid;border-width:1px">';
      for ($h = 8; $h > 0; $h--) {
         
         for ($v = 1; $v < 9; $v++) {
            
            if (( $h+$v+2) % 2) {
               $bgcc = 0;
            } else {
               $bgcc = 1;
            }
            
            if (!empty($this->pieces[$h][$v])) {
#              print 'Setting Piece '.$this->pieces[$h][$v].'
';
               $plate .= '<div class="chessPiece" style="background-color:'.$bgc[$bgcc].';';
               $plate .= 'background-image:url(/images/chessPieces/';
               $plate .= $this->_figureToString($this->pieces[$h][$v]).'.';
               $plate .= $this->_colorHexToRGB($bgc[$bgcc]);
               $plate .= '.png)">';
               $plate .= '</div>'."\n";
            } else {
               $plate .= '<div class="chessPiece" style="background-color:'.$bgc[$bgcc].'"></div>'."\n";
            }
#           $bgcc++;
#           if ($bgcc ==2) { $bgcc = 0; }
         }
         $plate .= '<br style="clear:both">';
      }
      $plate .= '</div>';
      return true;
   }
}
Guradia ist offline  
Alt 29.06.2004, 10:35  
Erfahrener Benutzer
 
Registriert seit: 17.10.2003
Beiträge: 243
MrMarco
Standard

*g*

Ich seh da gerade einen "Buffer Overflow" bei jemanden...

*ggg*
MrMarco ist offline  
Alt 29.06.2004, 10:38  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 2.150
Guradia befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MrMarco
Ich seh da gerade einen "Buffer Overflow" bei jemanden...
Für den Fall, dass ich gemeint bin: Die Klasse ist etwas älter .. im Moment ungetestet ... und durchaus ein guter Kanditat, ohne Zugaben von aussen nicht zu funktionieren ^^

Aber das Prinziep stimmt ;P
Guradia ist offline  
Alt 29.06.2004, 10:55  
Erfahrener Benutzer
 
Registriert seit: 17.10.2003
Beiträge: 243
MrMarco
Standard

Zitat:
Zitat von Guradia
Zitat:
Zitat von MrMarco
Ich seh da gerade einen "Buffer Overflow" bei jemanden...
Für den Fall, dass ich gemeint bin: Die Klasse ist etwas älter .. im Moment ungetestet ... und durchaus ein guter Kanditat, ohne Zugaben von aussen nicht zu funktionieren ^^

Aber das Prinziep stimmt ;P
Nein. Eher er. Ich wollte vorhin schon vorschlagen das ganze in den Anfängerbereich zu verschieben, habe es mir dann aber verkniffen.
MrMarco ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Erstellung einer Extension mit Einbindung externer DLL Han Solo PHP Tipps 2008 15 10.04.2008 15:36
Suche nach grossen und kleinen Buchstaben Sonja PHP Tipps 2006 7 11.05.2006 12:24
php-Verzeichnis-Upload über einen kleinen Umweg polymorf PHP-Fortgeschrittene 7 03.05.2006 20:59
Grafik upload + thumbnail erstellung PHP Tipps 2005-2 3 10.10.2005 19:02
Probleme mit erstellung von thumbs PHP Tipps 2005-2 5 31.08.2005 21:35
Verzwickte Abfrage einer kleinen Tabelle DerDesian Datenbanken 3 31.08.2005 13:03
Erstellung einer Swingercommunity Beitragsarchiv 0 05.08.2005 19:18
Erstellung eines Gastronomieportales Beitragsarchiv 1 22.05.2005 10:45
Thumbnail erstellung --> Funktionssammlung TheTommynator PHP Tipps 2005 7 30.03.2005 19:15
Suche Coder für Erstellung von Internetpräsentsen ! Beitragsarchiv 13 25.02.2005 17:30
Erstellung Verknüpfung:Forum für DFÜ-Netzwerk bzw XP Issues? Off-Topic Diskussionen 3 13.01.2005 18:45
thumbnail erstellung bringt keine (guten) bilder scraddy PHP Tipps 2005 8 06.01.2005 01:24
jpgraph diagramm- erstellung nach anleitung PHP Tipps 2005 6 02.01.2005 21:55
Rechnen mit seeeeeeehr kleinen Zahlen! Calexico PHP Tipps 2004-2 1 25.11.2004 10:20

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php schachbrett farbe, schleifen php schachbrett, schachbrett array php

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:07 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.