Pascal/Turbo Pascal - Procedimiento para matriz

 
Vista:

Procedimiento para matriz

Publicado por Franco (1 intervención) el 20/06/2014 05:35:52
Necesitaria saber como puedo hacer para que cuando mueva un elemento de la matriz y me queden 3 o mas letras iguales, cada letra tiene un puntaje, cuando se juntan que me elimine esa cadena de letras me sume su puntaje y me lo muestre, ademas de que se llenen los espacios en blanco aleatoriamente desde arriba hacia abajo , esto es una parte del codigo:

Program asdasd;
Uses CRT;
Const
MaxFil = 6;
MaxCol = 6;
MaxMovimientos = 20;
Type
Matriz = Array [1..maxfil,1..maxcol] of char;
ArrP = Array [1..10] of Integer;
ArrN = Array [1..8] of string;

Procedure CargarTablero (var Tablero:Matriz);
Var
Num:Real;
i,j:integer;
begin
randomize;
For i:=1 to maxfil do
For j:=1 to maxcol do
begin
Num:=Random(5);
If (Num < 1) then
Tablero[i,j]:='R'
else
If (Num <= 2) then
Tablero[i,j]:= 'V'
else
If (Num <= 3) then
Tablero[i,j]:= 'A'
else
Tablero[i,j]:= 'B';
end;
end;

Procedure MoverFichas(Var Tablero:Matriz);
Var
numf,numc,m,i,j,maxm:integer;
direccion,aux:char;
begin
maxm:=20;
numf:=0;
numc:=0;
direccion:= ' ';
For m:=1 to MaxMovimientos do
begin
Write('Ingrese la fila que desea seleccionar:');
Readln(numf);
Write('Ingrese la columna que desea seleccionar:');
Readln(numc);
Write('En que direccion desea mover el elemento:');
repeat
readln(direccion);
direccion := upcase(direccion);
write();
until direccion in['A','B','D','I'];
If (direccion = 'A') then
begin
If (numf <> 1) then
begin
aux:= Tablero[numf,numc];
Tablero[numf,numc]:= Tablero[(numf - 1),numc];
Tablero[(numf - 1),numc]:= aux;
MaxM:= (MaxM - 1);
writeln('Movimientos Restantes:', maxm);
writeln();
For i:=1 to maxfil do
begin
For j:=1 to maxcol do
begin
write(tablero[i,j]);
write(' ');
end;
writeln();
writeln();
end;
end
else
write('El movimiento no se puede realizar');
end
else
If (direccion = 'B') then
begin
If (numf <> 2) then
begin
aux:= Tablero[numf,numc];
Tablero[numf,numc]:= Tablero[(numf + 1),numc];
Tablero[(numf + 1),numc]:= aux;
MaxM:= (MaxM - 1);
writeln('Movimientos Restantes:', maxm);
writeln();
For i:=1 to maxfil do
begin
For j:=1 to maxcol do
begin
write(tablero[i,j]);
write(' ');
end;
writeln();
writeln();
end;
end
else
write('El movimiento no se puede realizar');
end
else
If (direccion = 'I') then
begin
If (numf <> 3) then
begin
aux:= Tablero[numf,numc];
Tablero[numf,numc]:= Tablero[numf,(numc - 1)];
Tablero[numf,(numc - 1)]:= aux;
MaxM:= (MaxM - 1);
writeln('Movimientos Restantes:', maxm);
writeln();
For i:=1 to maxfil do
begin
For j:=1 to maxcol do
begin
write(tablero[i,j]);
write(' ');
end;
writeln();
writeln();
end;
end
else
write('El movimiento no se puede realizar');
end
else
If (direccion = 'D') then
begin
If (numf <> 4) then
begin
aux:= Tablero[numf,numc];
Tablero[numf,numc]:= Tablero[numf,(numc + 1)];
Tablero[numf,(numc + 1)]:= aux;
MaxM:= (MaxM - 1);
writeln('Movimientos Restantes:', maxm);
writeln();
For i:=1 to maxfil do
begin
For j:=1 to maxcol do
begin
write(tablero[i,j]);
write(' ');
end;
writeln();
writeln();
end;
end
else
write('El movimiento no se puede realizar');
end
end;
end;

Procedure RevisarLinea(Var Tablero:Matriz);
Var
i,j,puntajes:integer;
aux:char;
CalcularPuntaje:integer;
begin
Puntajes:=0;
For i:=1 to MaxFil do
begin
For j:=1 to maxcol do
begin
If (Tablero[i,j] = 'R') then
Puntajes:=CalcularPuntaje(Puntajes)
end;
end;
writeln(Puntajes);
end;

Function CalcularPuntaje(var Tablero:Matriz);
Var
i,j,cont,puntaje:integer;
valor:char;
begin
i:=1;
j:=1;
cont:=0;
Puntaje:= Puntajes;
If valor = 'R' then
Cont:= Puntaje + (Cont *1)
else
If valor = 'V' then
Cont:= Puntaje + (Cont * 2)
else
If valor = 'A' then
Cont:= Puntaje + (Cont * 3)
else
If Tablero[i,j] = 'B' then
Cont:= Puntaje + (Cont * 4);
end;


var
tablero:matriz;
i,j:integer;
begin
CargarTablero(Tablero);
For i:=1 to maxfil do
begin
For j:=1 to maxcol do
begin
write(tablero[i,j]);
write(' ');
end;
writeln();
writeln();
end;
MoverFichas(Tablero);
RevisarLinea(Tablero);
end.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Procedimiento para matriz

Publicado por Kira (2 intervenciones) el 20/06/2014 22:36:32
La parte más difícil del color crush, decime cuando te pinte y nos juntamos a resolver eso, soy de exactas tambien,este finde estoy re alpedo, excepto por el recu de analisis, pero podemos juntarnos.

[email protected] avisa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Procedimiento para matriz

Publicado por Sebastian (1 intervención) el 22/11/2017 04:40:18
Necesito ayuda en color crush pascal en el codigo de calcular puntajes , de Rojos ,blancos ,Azul,Verdes....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar