// 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; } } }
// 键盘输入处理函数 // 第一个参数是按键的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; } } }