2014-02-15 11 views
-1

我嘗試以不同的方式設置參數,但仍然沒有骰子。有人能告訴我這裏有什麼問題嗎?我的SDL_KEYUP參數不起作用

void controls() 
{ 

if(cancontrol = true) 
{ 

if(window_key.type == SDL_KEYDOWN) 
{ 
    switch(window_key.key.keysym.sym) 
    { 
    case SDLK_UP: 
    haneposy =+ -1; 
    haneposx = 0; 
    break; 

    case SDLK_LEFT: 
    haneposx =- 1; 
    haneposy = 0; 
    break; 

    case SDLK_RIGHT: 
    haneposx =+ 1; 
    haneposy = 0; 
    break; 

    case SDLK_DOWN: 
    haneposy =- -1; 
    haneposx = 0; 
    break; 
    default: 
    break; 
    } 
} 

if(window_key.type == SDL_KEYUP) 
{ 
    switch(window_key.key.keysym.sym) 
    { 
    case SDLK_UP: 
    haneposx = 0; 
    haneposy = 0; 
    break; 

    case SDLK_LEFT: 
    haneposx = 0; 
    haneposy = 0; 
    break; 

    case SDLK_RIGHT: 
    if(haneposx && haneposy > 0) 
    { 
    haneposx = 0; 
    haneposy = 0; 
    } 
    break; 

    case SDLK_DOWN: 
    haneposx = 0; 
    haneposy = 0; 
    break; 
    default: 
    break; 
    } 
} 
} 

    } 

問題是,當鍵被釋放時,它不會通過將變量等於零來停止移動精靈。有關其他信息,我正在使用glTranslate來移動精靈。

+0

是window_key的一個事件嗎?如果您註釋掉can_control if語句(只是一行:不是整個if語句),會發生什麼情況。 – cup

+1

向我們展示整個方法或至少在哪裏獲得活動。 – olevegard

+0

考慮使用if(type == SDL_KEYUP){...} else if(type SDL_KEYDOWN){..},因爲當你使用if時,即使第一個條件爲真,代碼也會測試第二個條件但是你永遠不會進入這個塊,因爲這個類型顯然不是SDL_KEYDOWN,它的性能更好。 – jordsti

回答

0

我覺得你困惑+ = for = +。第一個是用於增量的運算符,第二個是帶有加號的賦值。

+0

SDL_KEYUP仍然沒有響應。 – user3312507