HispaMSX

Bug en Pascal

2006-12-16 17:10:03
¡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 

<Anterior en la conversación] Conversación actual [Siguiente en la conversación>
  • Bug en Pascal, Marcelo Silveira <=