Foros del Web » Programación para mayores de 30 ;) » C/C++ »

plock en c++

Estas en el tema de plock en c++ en el foro de C/C++ en Foros del Web. Hola Tengo que hacer un juego llamado plock, que se puede encontrar en facebook, en c++. EL juego consiste en llenar uan matriz de dimensiones ...
  #1 (permalink)  
Antiguo 16/11/2009, 14:17
 
Fecha de Ingreso: noviembre-2009
Mensajes: 3
Antigüedad: 15 años
Puntos: 0
plock en c++

Hola

Tengo que hacer un juego llamado plock, que se puede encontrar en facebook, en c++. EL juego consiste en llenar uan matriz de dimensiones nxn bloques. Para obtener puntos se debe seleccionar un bloque con al menos dos bloques consecutivos del mismo tono, el cual desaparecerá, los bloques ubicados en la parte superior de estos espacios en blanco serán sustituidos por los bloques que se encuentran arriba de estos y se pondrán bloques en la superficie de manera aleatoria.

Ya llene la matriz con caracteres, no se cómo hacerlo con bloques. Además me falta la función para identificar los bloques consecutivos del mismo tono.

Por favor necesito ayuda urgente para la funcions de elementos consecutivos....
  #2 (permalink)  
Antiguo 19/11/2009, 09:28
 
Fecha de Ingreso: noviembre-2009
Mensajes: 8
Antigüedad: 15 años
Puntos: 0
Respuesta: plock en c++

Si tienes la matriz con sus datos, lo único que tienes que hacer es comprobar que el color de las casillas adyacentes sea el mismo.

Algo del estilo de (mal código incoming...)

Código Comparar:
Ver original
  1. for a = 1; a = maxfilas; a++;{
  2.     for b = 1; b = maxcolumnas; b++;{
  3.         if((posicion.color(a,b) == posicion.color(a-1,b) == posicion.color(a-2,b)){
  4.             destruir();
  5.         }
  6.     }
  7. }

Esto lo tendrías que aplicar, lógicamente, para cada una de las cuatro posibilidades en ángulo recto, y otras cuatro si admites diagonales. Luego, tan sólo tendrías que arrastrar los valores superiores para cubrir las casillas que eliminas.

Lo que yo haría sería codificar con un valor entero el color en cuestión, y igualar a 0 las casillas "destruidas". Así, no hace falta que "recuerdes" qué casillas has destruido, basta con que leas la matriz y vayas permutando de abajo a arriba con su valor inmediatamente superior, algo así:

Código Destruir:
Ver original
  1. for a = maxfilas; a = 2; a--;{
  2.     for b 1= ; b = maxcolumnas; b++;{
  3.         if posicion.valor(a,b) == 0{
  4.             posicion.valor(a,b)=posicion.valor(a+1,b);
  5.             posicion.valor(a,b)=0;
  6.         }
  7.     }
  8. }

y luego, sustituyes la última fila con un valor aleatorio, utilizando el (random MOD númerodecolores)+1 (nota: dados mis escasos conocimientos, y mi imposibilidad para hacer funcionar en el pasado correctamente la función rand, por favor, que alguien con más seso ayude a este mozo).

Saludos,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:13.