PHP Schachbrett

123123123

Erfahrenes Mitglied
So als nächstes muss ich mit Hilfe von Klassen und functionen ein Schachbrett machen.
Schwierig Schwierig....
So hab ich es gemacht, aber irgendwas ist falsch :
PHP:
<?php
class Schachbrett 
{
	private $schachspiel = array (	array (0,0,0,0,0,0,0,0),
									array (0,0,0,0,0,0,0,0),
									array (0,0,0,0,0,0,0,0),
									array (0,0,0,0,0,0,0,0),
									array (0,0,0,0,0,0,0,0),
									array (0,0,0,0,0,0,0,0),
									array (0,0,0,0,0,0,0,0),
									array (0,0,0,0,0,0,0,0)
								);

	
	function Brett ($schach) 
	{
		echo "table class = 't' border= '0'"; 
			for ($z=0; $z<count ($this->schachspiel[$schach]); $i++)
			{
				echo "<tr>";
				for ($s=0; $s<count($this->schachspiel[$schach] [$z]); $s++ )
				{
					$fuellen = "";
					$fuellen1 = "";
					if ($this->schachspiel [$schach] [$z] [$s] == 1)
						$fuellen = "f";
						$fuellen1 = "d";
					
					echo "<td class='{$fuellen}'></td>";
					echo "<td class='{$fuellen1}'></td>";
				}
				echo "</td>";
			}
			echo "</table>";
	}
}
?>	

<html>
	<head>
		<title>Schach</title>
		<style>
			.t {float: left;}
			.t td {width: 10px; height: 10px;}
			.t td.f {background-color: yellow;}
			.t td.d {background-color: red;}
		</style>
	</head>
 <?php
		$schachbrett = new Schachbrett ();
		$schachbrett-> Brett ();
		
	?>
	</body>
</html>



danke schon mal!!
LG anna
 
Das hier kriege ich zusehen!

Warning: Missing argument 1 for Schachbrett::Brett(), called in C:\xampp\htdocs\meinphpuebung\schachbrett.php on line 51 and defined in C:\xampp\htdocs\meinphpuebung\schachbrett.php on line 15
table class = 't' border= '0'
Notice: Undefined variable: schach in C:\xampp\htdocs\meinphpuebung\schachbrett.php on line 18

Notice: Undefined index: in C:\xampp\htdocs\meinphpuebung\schachbrett.php on line 18
 
Hallo 123123123,

also der erste Fehler den ich sehe ist, dass Du bei der Methode Brett ein Argument erwartest es beim Aufruf aber nicht übergibst:
PHP:
function Brett( $schach ) { /* ... */ }
PHP:
$schachbrett = new Schachbrett();
$schachbrett->Brett(); // wo ist das Argument?

Dann sind mir noch Fehler bei den echos aufgefallen.
statt:
PHP:
echo "table class = 't' border= '0'";
lieber:
PHP:
echo '<table class="t" border="0">';

Und statt:
PHP:
                echo "</td>"; 
            } 
            echo "</table>";
lieber:

PHP:
                echo '</tr>'; 
            } 
            echo '</table>';
Ansonsten hab ich es mir jetzt nicht genauer angesehen.

Gruß
 
//EDIT
VERDAMMT ... zu langsam


1) Du solltest vielleicht mal den <tabel>-Tag verfollständigen.
2) Wenn du eine Methode Brett($parameter) deklarierst ... warum rufst du dann nur Brett() auf ? Nach deinem Code müsste es richtig lauten

*korrigiert*
PHP:
<?php
class Schachbrett
{
	private $schachspiel=array(array(0, 0, 0, 0, 0, 0, 0, 0),
					array(0, 0, 0, 0, 0, 0, 0, 0),
					array(0, 0, 0, 0, 0, 0, 0, 0),
					array(0, 0, 0, 0, 0, 0, 0, 0),
					array(0, 0, 0, 0, 0, 0, 0, 0),
					array(0, 0, 0, 0, 0, 0, 0, 0),
					array(0, 0, 0, 0, 0, 0, 0, 0),
					array(0, 0, 0, 0, 0, 0, 0, 0));
	function Brett($schach)
	{
		echo "<table class = 't' border= '0'>";
		for($z=0; $z<count($this->schachspiel[$schach]); $z++)
		{
			echo "<tr>";
			for($s=0; $s<count($this->schachspiel[$schach][$z]); $s++ )
			{ 
				$fuellen="";
				$fuellen1="";
				if($this->schachspiel[$schach][$z][$s]==1)
				{
					$fuellen="f";
					$fuellen1="d";
				}
				echo "<td class='{$fuellen}'></td>";
				echo "<td class='{$fuellen1}'></td>";
			}
			echo "</tr>";
		}
		echo "</table>";
	}
}
?>
<html>
<head>
<title>Schach</title>
<style> 
.t {float: left;}
.t td {width: 10px; height: 10px;}
.t td.f {background-color: yellow;}
.t td.d {background-color: red;}
</style>
</head>
<?php
	$schachbrett=new Schachbrett();
	$schachbrett->Brett(0);
?>
</body>
</html>
Ob der Code LOGISCH so richtig is weis ich nicht ... aber ich habe erstmal deine "Grammatikfehler" beseitigt.
 
Zuletzt bearbeitet von einem Moderator:
Mir ist grad noch ein Fehler in der ersten for-Schleife aufgefallen:
PHP:
for($z=0; $z<count($this->schachspiel[$schach]); $i++)
Das $i++ müsste $z++ sein.

Gruß
 
Stimmt ... sonst würde das ganze in einer Endlosschleife enden da $z ja immer kleiner als die länge des Arrays bleibt. Ich habs bei mir korrigiert.
 
Zurück