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
Ir a la versión completa