¡Hola!
Hizo un programa en Turbo Pascal que usa la tecnica
de algoritmo recursivo. Hizo testes con el Free Pascal
para Linux e resultó bien. Pero, en MSX, con el Turbo
Pascal, el se pierde!
Lo qué pude verificar es qué la función llamada
recursivamente no salva las variables locales.
Entonces, cuándo esta rutina es llamada novamente, las
variables no son creadas y sin compartidas con las
llamadas anteriores!
El programa está aquí:
http://www.eng.uerj.br/~marcelo/msx/cursos/jogos/flood.pas
Después de testar en Hightech C para MSX, usando el
mismo programa convertido para C, todo resulto bién.
El código de recursividad en Pascal:
********** Programa ************
procedure flood_fill(i,j : integer);
var x,y : integer;
flag : boolean;
begin
{If out of bounds, return}
if (i<1) or (j<1) or (i>8) or (j>8) then
exit;
{If node is already visited, return}
if (mapOpen[i,j]=true) then
exit;
{Open node}
mapOpen[i,j]:=true;
{If node <> empty, return}
if (map[i,j]<>0) then
exit;
{Spread this to its 8 neighbors}
for x:=-1 to 1 do
begin
for y:=-1 to 1 do
begin
if not((x=0) and (y=0)) then
flood_fill(i+x,j+y);
end;
end;
end;
********** Programa ************
Saludos,
Marcelo
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com