Programación General > Pascal

 Recorrer Arreglo

(1/1)

Perrero:
Holas, Tengo problemas al tratar de recorrer un arreglo de forma diagonal, horizontal y vertical, es decir, especifico la posicion en la que quiero empezar (debe de ser en donde este a), luego desde esa posicion eliminar todas las x que se encuentran entre las a, por ejemplo:

Inicial:

a x a o o
x x o o o
x o x o o
x o o a o
a o o o o

Para i=1y j=1, se tendria:

a o a o o
o o o o o
o o o o o
o o o a o
a o o o o

O para I=4 y j=4 se tendria

a x a o o
x o o o o
x o o o o
x o o a o
a o o o o

no se como ir tomando las x, solo se como tomar las x que estan a los costados de la a, pero no se como tomar la siguiente, entodo caso ese seria todo el problema que tengo, como tomar la x que sigue en la direccion de la otra a, ya que el resto de la validacion seria sencillo, weno espero me puedan ayudar.

Enko:

--- Código: Text --- a x a o ox x o o ox o x o ox o o a oa o o o o   La cosa es que un for no te va servir;

Horizontalmente

--- Código: Text --- i:=1;j:=1;while i<max dobegin  if matriz[i,j] = 'x' then matriz[i,j] := '0';  if matriz[i,j] = 'a' then break; {sale del ciclo}  i := i + 1;end;  Verticalemnte

--- Código: Text --- i:=1;j:=1;while j<max dobegin  if matriz[i,j] = 'x' then matriz[i,j] := '0';  if matriz[i,j] = 'a' then break; {sale del ciclo}  j := j + 1;end;  Diagonalmente

--- Código: Text --- i:=1;j:=1;while j<max dobegin  if matriz[i,j] = 'x' then matriz[i,j] := '0';  if matriz[i,j] = 'a' then break; {sale del ciclo}  j := j + 1;  i := i+1;end;  

Perrero:
Estuve checando el codigo y loq ue veo es que solo me deja recorrerlos en una sola direccion, es decir, en vertical de arriba hacia abajo, en horizobtal de izquierda a derecha y en diagocal de una posicion hacia derecha abajo. Entonces tendria q hacer cosigo para cada una de las direcciones que tendria que recorrer y eso seria muy engorroso, lo unico que yo pude hacer es obtener cualquier x que este a su costado de esta manera:


--- Código: Text ---  For fil:=-1 to 1 do  For j:=-1 to 1 do      If not ((fil=0) and (col=0)) then  {No tiene que ser el centro}        If ((fil+ i) in [1..5]) and ((j+col) in [1..5]) then  {Para no salirme del rango                                                                              por si estoy en una esquina}           If (Tablero[i+fil,j+col]=x) then {Analizo su vecino}              {Ya no se que iria aqui}  
Lo que estoy haciendo con ese codigo (ya sabiendo la posicion escogida i,j)de esa posicion saco un cuadro de 3 por 3 donde (0,0) es el centro del cuadrado, algo asi:
________________________
|_(-1,1 )_|_( 0,1 )_|_( 1,1)_|
|_(-1,0 )_|_( 0,0 )_|_( 1,0)_|
|_(-1,-1)_|_(0,-1)_|_(1,-1)_|

De tal manera que la posicion que elija, siempre va hacer (0,0) y voy cotejando los valores que estan alrededor del (0,0), pero al tomar un valor vecino tendria que analizar su vecino que apunta a la direccion de a (indiferente si esta arriba o abajo), bueno ojala me puedan ayudar con sugerencias, ya que no deseo hacer codigo para cada direccion, sino un codigo para todas las direcciones...   :hola:

juancpalmajr:
pero que queres hacer un juego monocromatico?
a base de caracteres, en modo texto.

Navegación

[0] Índice de Mensajes

Ir a la versión completa