7. Juni 200322 j wie funktioniert eigendlich der füllpinselprinzip (z.b. bei malprogrammen), habe folgendes zweidimensionales arrayfeld: beispiel: Xangeklickt, alle umliegenden 0en sollen zu 2en werden also: 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 X 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 soll so werden: 1 1 1 2 2 2 2 2 2 2 1 1 1 1 2 X 2 2 2 2 1 1 1 1 2 2 2 1 1 1 1 1 1 1 2 2 1 1 1 1 2 2 2 2 2 2 1 1 1 1 2 2 2 1 1 1 1 1 1 1 2 2 2 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 habe das ganze mit folgender funktion versucht, stürzt aber immer ab.. schauen(5,1); //startwert function schauen ($x,$y){ if ($feld[$x-1][$y+1]==0){$feld[$x+1][$y+1]=2; schauen($x-1,$y+1);} if ($feld[$x-1][$y-1]==0){$feld[$x-1][$y-1]=2; schauen($x-1,$y-1);} if ($feld[$x+1][$y+1]==0){$feld[$x+1][$y+1]=2; schauen($x+1,$y+1);} if ($feld[$x+1][$y-1]==0){$feld[$x+1][$y-1]=2; schauen($x+1,$y-1);} if ($feld[$x+1][$y]==0){$feld[$x+1][$y]=2; schauen($x+1,$y);} if ($feld[$x-1][$y]==0){$feld[$x-1][$y]=2; schauen($x-1,$y);} if ($feld[$x][$y+1]==0){$feld[$x][$y+1]=2; schauen($x,$y+1);} if ($feld[$x][$y-1]==0){$feld[$x][$y-1]=2; schauen($x,$y-1);} } -habe auch mal die anzahl der functionsaufrufe auf 50 begrenzt, weil sich die schleife ja sonst immer wieder mehrfach + unendlich aufufen würde, hat aber auch nix gebracht. -verbesserung wäre alle zutreffenden werte in ein array zu speichern & dann vor jeden functionsaufuf zu prüfen, ob die function mit den werten schonmal aufgerufen wurde. wie mache ich das am besten?? :confused:
7. Juni 200322 j hab mittlerweile den fehler selber gefunden, thread kann also theoretisch geschlossen werden..
8. Juni 200322 j Das sieht ja ganz nach Minesweeper aus (automatisches Freilegen von nicht belegten Feldern).
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.