movimientos en una matriz
Publicado por referee (8 intervenciones) el 06/01/2008 10:57:06
Hola que tal foreros, tenia una duda a ver si me la pudieran resolver,se trata de que yo tengo una matriz creada con numeros aleatorios y colores aleatorios a partir de un array bidimensional, pues bien teniendo esa matriz tengo que hacer que desaparezcan elementos,al desaparecer esos elementos los numeros de las filas superiores se desplazan hacia abajo verticalmente y el espacio que dejan estos numeros arriba tengo que volver a rellenarlo con numeros aleatorios pero no tengo ni idea de como hacerlo. Les dejo el proceso que h exo para construir la matriz.
{PROGRAMA TABLERO}
TYPE
tficha=RECORD
color:integer;
valor:integer;
END;
tmatriz=ARRAY['A'..'H',1..8] OF tficha;
tcolor=byte;
tcolores=ARRAY [1..6] OF tcolor;
ttablero=ARRAY[1..Num_filas,1..Num_columnas] OF integer;
VAR
colores:tcolores;
tablero:ttablero;
colormatriz:ttablero;
ficha:tmatriz;
PROCEDURE Inicializarmatriz(VAR matriz:ttablero; VAR coloresmatriz:ttablero; VAR fichas:tmatriz);
VAR
i,j,cont,num:integer;
letra:char;
BEGIN
textcolor(4);
writeln('A':5,'B':5,'C':5,'D':5,'E':5,'F':5,'G':5,'H':5);
textcolor(15);
writeln;
writeln;
cont:=1;
FOR i:=1 TO Num_filas DO
BEGIN
FOR j:=1 TO Num_columnas DO
BEGIN
matriz[i,j]:=random(3)+cont;
coloresmatriz[i,j]:=random(6) + cont;
fichas[letra,num].valor:=matriz[i,j];
END;
END;
END;
PROCEDURE Escribirmatriz( matriz:ttablero;coloresmatriz:ttablero;fichas:tmatriz);
VAR
i,j,num:integer;
letra:char;
BEGIN
FOR i:=1 TO Num_filas DO
BEGIN
FOR j:=1 TO Num_columnas DO
BEGIN
write(matriz[i,j]:5);
CASE coloresmatriz[i,j] OF
1:textcolor(4);
2:textcolor(1);
3:textcolor(14);
4:textcolor(15);
5:textcolor(2);
6:textcolor(5);
END;
END;
writeln;
writeln;
END;
textcolor(4);
gotoxy(45,6);
writeln('1');
gotoxy(45,8);
writeln('2');
gotoxy(45,10);
writeln('3');
gotoxy(45,12);
writeln('4');
gotoxy(45,14);
writeln('5');
gotoxy(45,16);
writeln('6');
gotoxy(45,18);
writeln('7');
gotoxy(45,20);
writeln('8');
gotoxy(45,22);
textcolor(15);
END;
PROCEDURE Cargarmatriz(VAR matriz:ttablero;VAR coloresmatriz:ttablero;VAR fichas:tmatriz);
BEGIN
clrscr;
randomize;
writeln('TABLERO');
writeln;
Inicializarmatriz(matriz,coloresmatriz,ficha);
Escribirmatriz(matriz,coloresmatriz,ficha);
readkey;
END;
BEGIN
Cargarmatriz(tablero,colormatriz,ficha);
END.
{PROGRAMA TABLERO}
TYPE
tficha=RECORD
color:integer;
valor:integer;
END;
tmatriz=ARRAY['A'..'H',1..8] OF tficha;
tcolor=byte;
tcolores=ARRAY [1..6] OF tcolor;
ttablero=ARRAY[1..Num_filas,1..Num_columnas] OF integer;
VAR
colores:tcolores;
tablero:ttablero;
colormatriz:ttablero;
ficha:tmatriz;
PROCEDURE Inicializarmatriz(VAR matriz:ttablero; VAR coloresmatriz:ttablero; VAR fichas:tmatriz);
VAR
i,j,cont,num:integer;
letra:char;
BEGIN
textcolor(4);
writeln('A':5,'B':5,'C':5,'D':5,'E':5,'F':5,'G':5,'H':5);
textcolor(15);
writeln;
writeln;
cont:=1;
FOR i:=1 TO Num_filas DO
BEGIN
FOR j:=1 TO Num_columnas DO
BEGIN
matriz[i,j]:=random(3)+cont;
coloresmatriz[i,j]:=random(6) + cont;
fichas[letra,num].valor:=matriz[i,j];
END;
END;
END;
PROCEDURE Escribirmatriz( matriz:ttablero;coloresmatriz:ttablero;fichas:tmatriz);
VAR
i,j,num:integer;
letra:char;
BEGIN
FOR i:=1 TO Num_filas DO
BEGIN
FOR j:=1 TO Num_columnas DO
BEGIN
write(matriz[i,j]:5);
CASE coloresmatriz[i,j] OF
1:textcolor(4);
2:textcolor(1);
3:textcolor(14);
4:textcolor(15);
5:textcolor(2);
6:textcolor(5);
END;
END;
writeln;
writeln;
END;
textcolor(4);
gotoxy(45,6);
writeln('1');
gotoxy(45,8);
writeln('2');
gotoxy(45,10);
writeln('3');
gotoxy(45,12);
writeln('4');
gotoxy(45,14);
writeln('5');
gotoxy(45,16);
writeln('6');
gotoxy(45,18);
writeln('7');
gotoxy(45,20);
writeln('8');
gotoxy(45,22);
textcolor(15);
END;
PROCEDURE Cargarmatriz(VAR matriz:ttablero;VAR coloresmatriz:ttablero;VAR fichas:tmatriz);
BEGIN
clrscr;
randomize;
writeln('TABLERO');
writeln;
Inicializarmatriz(matriz,coloresmatriz,ficha);
Escribirmatriz(matriz,coloresmatriz,ficha);
readkey;
END;
BEGIN
Cargarmatriz(tablero,colormatriz,ficha);
END.
Valora esta pregunta


0