knobelspiel

matse

Grünschnabel
heyo,

habe ein problem mit der umsetzung eines knobelspiels
ich komme von c++ und denke da sind irgendwelche fehler diesbezüglich drin...
ich glaube es liegt an den arrays... muss ich die vorher noch definieren?!

dem code ging ein html formular vorraus mit den feldern player1, player2 für die namen und wuerfel für die anzahl der würfel

hier der code

PHP:
<?php
// zufallswerte generieren
srand((double)microtime()*1000000);

//player1
function player1()
{
 for ($z=1;$wuerfel>$z;$z++)
 {
  $rand1[$z]=rand(1,6);
  echo("$player1 hat eine $rand1[$z] gew&uuml;rfelt!<br>");
  $summepl1+=$rand1[$z];
 }
 echo("$player1 hat mit $wuerfel W&uuml;rfeln $summepl1 Augen gew&uuml;rfelt!<br>");
}
// player2
function player2()
{
 for ($z=1;$wuerfel>$z;$z++)
 {
 $rand2[$z]=rand(1,6);
 echo("$player2 hat eine $rand2[$z] gew&uuml;rfelt!<br>");
 $summepl2+=$rand2[$z];
 }
 echo("$player2 hat mit $wuerfel W&uuml;rfeln $summepl2 Augen gew&uuml;rfelt!<br>");
}

//wenn player2=leer dann player2=Computer
if ($player2=="")
{
 $player2="Der Computer";
}
if ($summepl1==$summepl2)
{
 $gewonnen="Es haben beide Spieler die gleiche Augenzahl von $summepl1 gew&uuml;rfelt";
}
else if ($summepl1>summepl2)
{
 $gewonnen="$player1 hat mit $summepl1 Augen gewonnen!";
}
else if ($summepl1<$summepl2)
{
 $gewonnen="$player2 hat mit $summepl2 Augen gewonnen!";
}
?>
<html>
<head>
<title></title>
</head>
<body bgcolor=#ffffff>
<table border=1 bordercolor=#ffffff>
<tr>
<td colspan=2><center>Auswertung</center></td>
</tr>
<tr>
<td>
<?php
player1();
?>
</td>
<td>
<?php
player2();
?>
</td>
</tr>
<tr>
<td colspan=2>
<?php
echo("$gewonnen");
?>
</td>
</tr>
</table>
</body>



</html>

hoffe mir kann es jemand berichtigen
mfg :)

edit:

achso die ausgabe besteht nur aus der table mit den texten jedoch ohne werte/augen
 
keiner, die habe ich alle berichtigt...
kein parse error garnichts...
nur in der ausgabe werden keine werte angezeigt
 
PHP:
<?php 


$wuerfel = 10;
$name = array(Josef, Maria, Hugo);


$anzahl_player = count($name);
srand((double)microtime()*1000000); 

function player($anzahl_wuerfel) { 
  for ($z=1; $anzahl_wuerfel>=$z; $z++) { 
    $rand = rand(1,6);
    $array_player[] = $rand;
  }
  return $array_player;
} 


?> 
<html> 
<head> 
<title></title> 
</head> 
<body> 
<table> 
  <tr> 
    <td colspan="<?php echo $anzahl_player; ?>"><center>Auswertung</center></td> 
  </tr> 
  <tr>  
<?php
  for ($z=0; $z<$anzahl_player; $z++) { 
    echo "<td>";
    $pl[$z] = player($wuerfel);
    $sum_wuerfel = 0;
    foreach($pl[$z] as $key => $value) {
      echo "{$name[$z]} hat eine {$value} gewuerfelt!<br />";
      $sum_wuerfel++;
    }
    $summepl[$z] = array_sum($pl[$z]);
    echo "{$name[$z]} hat mit {$sum_wuerfel} Wuerfeln, {$summepl[$z]} Augen gewuerfelt!<br />";
    echo "</td>";
  }
?>  
  </tr> 
  <tr> 
  <td colspan="<?php echo $anzahl_player; ?>"> 
<?php 
  arsort($summepl);
  $win = array_count_values($summepl);
  $winner_s = array_pop(array_reverse($win));
  if($winner_s > 1) {
    $winner = array();
    foreach($summepl as $key => $value) {
      if($value == key($win)) {
        $winner[] = $name[$key];
      }
    }
    $winner = implode(", ", $winner);
    echo "<br />";
    echo "<b>Es gibt {$winner_s} Gewinner. {$winner} mit jeweils ".key($win)." Augen.</b>";
  } else {
    $name_index = key($summepl);
    echo "<br />";
    echo "<b>Gewonnen hat {$name[$name_index]} mit ".key($win)." Augen.</b>";
  }
?> 
  </td> 
  </tr> 
</table> 
</body> 
</html>

Du solltest dich nochmal mit den Basics von PHP beschaeftigen, da ich irgendwann aufgehoert habe, deine Fehler zu zaehlen.

* keine Ausgaben in Funktionen / nur Rueckgabewerte
* keine Variablen in Ausgaben(Strings) ohne geschweifte Klammer
* logischer Aufbau und Variablendeklarationen
* saubere Syntaxfuehrung


Du schreibst, du kommst von C++, also muesstest du ja *sauberen* Programmierstil intus haben. Das alles sah bei dir mehr nach "ich probier mal" aus. Hab dir das jetzt optimiert, dennoch kann man die ganze Sache viel dynamischer angehen, als du das versucht hast. Du musst jetzt nur noch die Namen der Spieler in ein Array stopfen und sagen wie oft sie wuerfeln duerfen.

HTH
 
Zuletzt bearbeitet:
Zurück