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?
mfg
Cold
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