[Perl] Schiffe versenken...

Coldfist

Mitglied
Hallo,
wir sind grad dabei, ein Schiffe versenken in Perl zu programmieren.
Das Hauptproblem liegt darin zu prüfen,auf welchen Feldern die Schiffe plaziert werden können. Wir haben die Funktion dafür geschrieben, nur funktioniert diese nicht ganz.

Hat einer eine Idee woran es liegen könnte?

Code:
system(cls);
my @pfield1 = [0,0,0,0,0,0,0,0,0,0],
	      [0,0,0,0,0,0,0,0,0,0],
	      [0,0,0,0,0,0,0,0,0,0],
	      [0,0,0,0,0,0,0,0,0,0],
	      [0,0,0,0,0,0,0,0,0,0],
	      [0,0,0,0,0,0,0,0,0,0],
	      [0,0,0,0,0,0,0,0,0,0],
	      [0,0,0,0,0,0,0,0,0,0],
	      [0,0,0,0,0,0,0,0,0,0],
	      [0,0,0,0,0,0,0,0,0,0];

# Verschiedene Stati
# 0 = Frei
# 1 = Schiff
# 2 = Treffer
# 3 = Daneben

my $i = 0;
my $j = 0;

for ($i=0; $i<10; $i++){
   for ($j=0; $j<10; $j++){
      $pfield1[$i][$j] = 0;
   }
}

my $k = 0;
my $x_coords = 0;
my $y_coords = 0;
my @act_ship = [1,2,3,4];
my $act_ship_valid = true;
#schiffgrößen
$act_ship[0] = 1;
$act_ship[1] = 1;
$act_ship[2] = 2;
$act_ship[3] = 4;
my $shipsready = false;

if (shipsready == false){
    for ($i=0;$i<4;$i++){

       while($act_ship[$i]>0){

#Koordinaten werden ausgerechnet
         $x_coords = int(rand(10));
         $y_coords = int(rand(10));

        # $k = int(rand(2));
         $k = 0;
        $act_ship_valid = true; 
	#Bei 0 Horizontal, bei 1 Vertikal
         if ($k == 0){
	    for ($j=1;$j<=$act_ship[$i];$j++){
	       if ($pfield1[$x_coords+$j-1][$y_coords]!=0){
	           $act_ship_valid = false;
	       }
            }
            if ($act_ship_valid == true){
               for ($j=1;$j<=$act_ship[$i];$j++){
		  $pfield1[$x_coords+$j-1][$y_coords]=1;
	          $act_ship[$i] = 0;  
               }
            } else {
		$act_ship[$i] = 0;
	   }
	 }
      $act_ship_valid = true;
      }
   }
   $shipsready = true;
}


mfg
Cold
 
Zurück