Usted no esta registrado, haga click aqui para registrarse!
 Inicio   Artículos   Recursos   Foros 
 

Iniciar sesión

¿No estas registrado?
Registrate en Latindevelopers.com!

 



Usted ha votado: Pobre















Ir a la pagina : [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ]

Juego de Ajedrez en Visual C++

Utilizar el Mouse para mover las piezas

Antes de continuar debemos definir algunas variables que nos ayudarán a manipular los eventos, estas variables deben definirse dentro de la clase CAjedrezView para tenerlas disponibles en todo momento.

class CAjedrezView : public CView
{
    ...

    POINT m_celdaSel;
    POINT m_celdaCursor;
    bool m_bFichaSeleccionada;
    bool m_bTurnoBlancas;

    ...
}

Algunas aclaraciones sobre las variables:

OnMouseMove

Para activar el uso del Mouse solo tenemos que hacer clic en las propiedades de la clase CAjedrezView y buscar los eventos WM_MOUSEMOVE y WM_LMOUSEDOWN, opcionalmente también utilizaremos el evento WM_KEYDOWN para interceptar la tecla de escape.

Agregar Función OnEraseBkgnd
Agregar Función OnMouseMove

La función OnMouseMove, esta función nos ayudará a identificar la celda sobre la cual esta el puntero del Mouse. La secuencia del código fuentes es como sigue:

Sin tantas complicaciones podemos escribir este codigo para el algoritmo anterior:

void CAjedrezView::OnMouseMove(UINT nFlags, CPoint point)
{
    static int x = -1;
    static int y = -1;

    x = (point.x - MARGEN)/60; 
    y = (point.y - MARGEN)/60;

    if(x >= 0 && y >= 0 && x<8 && y<8)
    {
        if(x != m_celdaCursor.x || y != m_celdaCursor.y )
        {
            m_celdaCursor.x = x;
            m_celdaCursor.y = y;

            Invalidate();
        }
    }
    else
    {
        x=-1;
        y=-1;
        if(x != m_celdaCursor.x || y != m_celdaCursor.y )
        {
            m_celdaCursor.x = -1;
            m_celdaCursor.y = -1;

            Invalidate();
        }
    }

    CView::OnMouseMove(nFlags, point);
}

OnLButtonDown

La función OnLButtonDown (Al presional el boton izquierdo del mouse) , se hace la misma verificación de las coordenadas pero esta vez se invoca a la función MoverFicha,  La función MoverFicha la veremos mas adelante.

void CAjedrezView::OnLButtonDown(UINT nFlags, CPoint point)
{
    static int x = -1;
    static int y = -1;

    x = (point.x - MARGEN)/60; 
    y = (point.y - MARGEN)/60;

    if(x >= 0 && y >= 0 && x<8 && y<8)
    {
        MoverFicha(x,y);
    }
    CView::OnLButtonDown(nFlags, point);
}

Modificar la funcion DibujarTablero

Debemos agregar líneas de código a la función DibujarTablero para ver los efectos:

void CAjedrezView::DibujarTablero(CDC* pDC)
{
    ...
    for(int i = 0 ; i < CELDAS ; i++)
    {
        for(int j = 0 ; j < CELDAS ; j++)
        {

            ...

            if(m_celdaSel.x == j && m_celdaSel.y == i)
            {
                CBrush *pFondoAnterior = pDC->SelectObject(&brSeleccion);
                pDC->Rectangle(&rcCelda);
                pDC->SelectObject(pFondoAnterior);
            }

            ...
        }
    }

    if(m_celdaCursor.x >= 0 && m_celdaCursor.y >= 0)
    {
        rcCelda.left  = m_celdaCursor.x*TAMCELDA + MARGEN;
        rcCelda.top   = m_celdaCursor.y*TAMCELDA + MARGEN;  
        rcCelda.right = rcCelda.left + TAMCELDA;
        rcCelda.bottom = rcCelda.top + TAMCELDA;

        CPen *pAnterior = pDC->SelectObject(&penAmarillo);
        pDC->MoveTo(rcCelda.left,rcCelda.top);
        pDC->LineTo(rcCelda.right,rcCelda.top);
        pDC->LineTo(rcCelda.right,rcCelda.bottom);
        pDC->LineTo(rcCelda.left,rcCelda.bottom);
        pDC->LineTo(rcCelda.left,rcCelda.top);
        pDC->SelectObject(pAnterior);
    }
    pDC->SelectObject(penAnterior);
}

 



 

 

 

 

 

Dibujar las piezas de ajedrez Funciones generales para mover las piezas de ajedrez

Descargas

Acerca del Author

Nombre de usuario: latindeveloper
Blog/URL:
Fecha de envío: 2004-03-14
Ultima Actualización:
Visualizaciones: 20337

Comentarios y Consultas

  • Re: Juego de Ajedrez ...
  • Re: Juego de Ajedrez ...
  • Re: Juego de Ajedrez ...
  • Re: Juego de Ajedrez ...
  • Re: Juego de Ajedrez ...

  • + Agregar Comentario/Consulta
    -> Ver todos los comentarios
Nedstat Basic - Web site estadisticas gratuito
El contador para sitios web particulares