2014-03-04 50 views
-2

我正在試圖用respondtokeypress來實現移動球體(播放器)的鍵盤控件,但我不確定如何。目前,當我按下移動鍵'a'時,我的播放器消失。爲什麼我的球體這樣做,我該如何正確實施運動?用鍵盤移動2D對象

代碼:

class Player 
{ 
private: 
    double x, y; 
public: 
    Player(double a, double b){x=a;y=b;} 
    void respondtokeypress(char a) 
    { 
     x = a + 0.5; 
     glutPostRedisplay(); 
    } 
    void draw() 
    { 
    //draw player 
    glLoadIdentity(); 
    glColor3f (1.0, 0.0, 0.0); 
    glTranslatef(x,y,0); 
    glutSolidSphere(0.03,20,20); 
    } 
}; 
+0

如果按「a」,變量'a'最可能具有值97(對於ASCII「a」)。所以你在每次按鍵時將球體向x移動97。 – Nobody

回答

3
void respondtokeypress(char a) 
{ 
    x = a + 0.5; 
    glutPostRedisplay(); 
} 

在這裏,您要添加的關鍵代碼,當你把它作爲Theseus.respondtokeypress(key);即改變x = a + 0.5x += 0.5;位置。不要將位移添加到玩家的位置,而是錯誤地將關鍵代碼添加到其中。

+0

這有幫助。但是,我怎樣才能使用多個輸入E.g. A =向左移動,D =向右移動? – Angelrawzz

+0

'玩家'應該只有'Move(x,y)',其中x和y是浮點值,它給出沿X和Y軸的位移。然後'respondtokeypress'會根據按下的鍵調用'Move'。 – legends2k