Ver Mensaje Individual
  #2 (permalink)  
Antiguo 08/11/2008, 10:22
Avatar de Xinef
Xinef
 
Fecha de Ingreso: marzo-2007
Mensajes: 202
Antigüedad: 17 años, 9 meses
Puntos: 7
Busqueda Respuesta: problemas con sdl y mouse

Lo siento, pero he sido incapaz de entender demasiado por el código que has puesto.

De todas formas, no entiendo por qué has metido el control de eventos dentro del método: destapar.

Te pongo por encima como lo haría yo... no tiene por qué ser la mejor forma, pero igual te sirve de algo:

Código PHP:
class Tablero {

    
Casillas **tablero;

public:

    
Tablero();
    ~
Tablero();
        
void setCasilla(Uint16 xUint16 yUint16 valor);
    
bool getValorCasilla(Uint16 xUint16 y);
    
bool quedanCasillasOcultas();

};


class 
Casilla {
    
//Constantes del tamaño de una casilla. Nos servirán para completar la
    //estructura "posicion".
    
const Uint16 TAMX;
    const 
Uint16 TAMY;
    
Sint8 valor;
    
//Puede ser interesante guardar la posición de la casilla para
    //comprobar si unas coordenadas de pulsación están dentro de la casilla.
    
SDL_Rect posicion;

        
SDL_Surface *imagenCasillaOculta;
        
SDL_Surface *imagenCasillaVisible;

        
//Está la casilla oculta o visible?
        
bool oculta;

public:
    
Casilla(Uint16 xUint16 yUint16 valor);
    
Uint16 getValor(void);
    
SDL_RECT getPosicion(void);
        
bool estaOculta(void);
};


int main(int nargchar **argv) {

    
SDL_Event evento;
    
bool terminar false;
    
    
Tablero tablero;

    
//[iniciamos tablero con las casillas... aleatoriamente.

    
while (SDL_PoolEvent(&evento) && !terminar) {
        switch(
evento.type) {
            case 
SDL_MOUSEBUTTONDOWN:
                
//Si hay una bomba en la casilla, terminar.
                
terminar tablero.getValorCasilla(evento.xevento.y);
                break;
        }

        
terminar tablero.quedanCasillasOcultas();
    }

    return 
0;


Es una especie de pseudocódigo con código. Es posible que tenga algún error, pero es una aproximación.

En la implementación luego puedes hacer lo que quieras, mostrar imágenes, etc, etc.

Por último, para ver si una coordenada colisiona con una casilla, sólo tienes que recorrer las casillas del tablero y preguntándole a cada una si esa coordenada la "mata".