Example #1
0
// handle keyboard
void HandleKeyPress(unsigned char key, int x, int y){
  switch(key){
  case 27:
    exit(1);
  }
  // Control keys
  if(loseFlag==FALSE){
    switch(key){
    case 's':
      tetrisFigure.Translate(0,-1);
      glutPostRedisplay();
      break;
    case 'a':
      tetrisFigure.Translate(-1,0);
      glutPostRedisplay();
      break;
    case 'd':
      tetrisFigure.Translate(1,0);
      glutPostRedisplay();
      break;
    case 'w':
      tetrisFigure.Rotate(LEFT);
      glutPostRedisplay();
      break;
    case 'e':
      tetrisFigure.Translate(0,1);
      glutPostRedisplay();
      break;
    default:
      break;
    }
  }
  else{
    switch(key){
    case 'n':
      tetrisGame.New();
      loseFlag=FALSE;
      glutPostRedisplay();
      break;
    default:
      break;
    }
  }
}
Example #2
0
// 键盘输入处理函数
// 第一个参数是按键的ASCII码, 
// 剩下的是按键时候的鼠标坐标. 鼠标坐标是相对窗口的左上角的
void HandleKeyPress(unsigned char key, int x, int y) {

    // 控制按键,如果游戏还没有失败则支持:
    // a:形状向左移动
    // s:形状向下移动
    // d:形状向右移动
    // w:向左旋转90度
    if(tetrisGame.GetStatus()){
        switch(key){
            case 'a':
                tetrisFigure.Translate(-1,0);
                glutPostRedisplay();
                break;
            case 's':
                tetrisFigure.Translate(0,-1);
                glutPostRedisplay();
                break;
            case 'd':
                tetrisFigure.Translate(1,0);
                glutPostRedisplay();
                break;
            case 'w':
                tetrisFigure.Rotate();
                glutPostRedisplay();
                break;
            default:
                break;
        }
    } else {
        // 如果游戏已经失败,支持:
        // n:开始新的游戏
        switch(key){
            case 'n':
                tetrisGame.New();
                glutPostRedisplay();
                break;
            default:
            break;
        }
    }
}