2014-03-04 2 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"의 경우) 일 가능성이 높습니다. 그래서 각 keypress로 x를 따라 구를 97만큼 이동시킵니다. – Nobody

답변

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

여기에 당신이 x += 0.5;x = a + 0.5을 변경 즉 Theseus.respondtokeypress(key);로 전화 위치로 키 코드를 추가하고 있습니다. 플레이어의 위치에 변위를 추가하는 대신 키 코드를 잘못 추가하는 것입니다.

+0

도움이되었습니다. 하지만 여러 입력을 사용하려면 어떻게해야합니까? A = 왼쪽으로 이동, D = 오른쪽으로 이동? – Angelrawzz

+0

'Player'는 실제로 Move (x, y) 만 가져야합니다. 여기서 x와 y는 X 축과 Y 축을 따라 이동하는 플로트 값입니다. 그러면'respondtokeypress'는 누른 키에 따라'Move'를 호출합니다. – legends2k