SDL:如何使用case语句

时间:2015-05-06 23:46:11

标签: c++ switch-statement mouseevent sdl-2

我目前正在使用SDL2并且对它很新。我正在尝试使用案例陈述来仅在按下鼠标左键时获取鼠标移动坐标。

最后,我需要能够点击一个对象,并找出从所选对象拖动鼠标的程度。

到目前为止,我已经能够让鼠标按下并且鼠标动作分开工作,但不能同时工作。

以下是鼠标按下事件的代码:

void SDL::OnEvent(SDL_Event *_event)
{
Mallet mallet;

switch (_event->type)
{
case SDL_QUIT:
    m_running = false;
    break;

default:
    break;


case SDL_KEYUP:
    switch (_event->key.keysym.sym)
    {
    case SDLK_SPACE:
        if(m_playerTurn == 1)
            m_playerTurn = 2;
        else
            m_playerTurn = 1;

        std::cout<<"player turn = "<<m_playerTurn<<std::endl;
        break;

    }


case SDL_MOUSEBUTTONDOWN:

    switch(_event->button.button)
    {
    case SDL_BUTTON_LEFT:
        int x = _event->button.x;
        int y = _event->button.y;

        if(m_playerTurn == 1)
        {
            bool collision = checkCollision(x, y, m_player1->getTeamMallets(), mallet);
            if(collision)
                std::cout<<"collision with P1"<<std::endl;
        }

        if(m_playerTurn == 2)
        {
            bool collision = checkCollision(x, y, m_player2->getTeamMallets(), mallet);
            if(collision)
                std::cout<<"collision with P2"<<std::endl;
        }

        break;
    }
}

}

任何人都可以提供帮助。

非常感谢提前。

威尔

1 个答案:

答案 0 :(得分:0)

on SDL_MOUSEBUTTONDOWN set variable click = true ans save x,y coordinates, 在SDL_MOUSEMOTION上检查是否单击== true并更新x,y坐标,
SDL_MOUSEBUTTONUP设置click = false并计算距离。

http://lazyfoo.net/tutorials/SDL/17_mouse_events/index.php