void DispatchMessage() { InitSnake(); InitWall(); while (1) { CreateFood(); CreateAward(); DrawString(10, 0, " Score:%04d ", score); AppendSnakeNodeList(Head, Orientation); CheckAward(); if (CheckSnake() || CheckWall()) { DrawString(2, 2, "你死啦! 按任意键重新开始玩!"); getch(); break; } DrawString(Head->Location.x, Head->Location.y, "◎"); if (!CheckFood()) { DrawString(Tail->Location.x, Tail->Location.y, " "); DeleteSnakeNodeList(Tail); } int keep = 0; if (kbhit()) { switch (getch()) { case 0x1b://按下ESC,暂停游戏 getch(); continue; case 0xE0://按下特殊键 switch (getch()) { case 75: if(Orientation==0) keep = 1;if (Orientation%2!=0) Orientation=0; break; case 72: if(Orientation==1) keep = 1;if (Orientation%2==0) Orientation=1; break; case 77: if(Orientation==2) keep = 1;if (Orientation%2!=0) Orientation=2; break; case 80: if(Orientation==3) keep = 1;if (Orientation%2==0) Orientation=3; break; default: ; } break; } } if(!keep&&(100-score*2)>10)Sleep(100-score*2);//难度提升 else Sleep(10); } }
int main() { srand(time(NULL)); InitWall(); g_nCurBoxType = rand() % (sizeof(g_szBox) / 64); g_nCurBoxSubType = rand() % 4; g_nCurBoxRow = 0; g_nCurBoxCol = 4; CreateNewBox(g_nCurBoxType, g_nCurBoxSubType, g_nCurBoxRow, g_nCurBoxCol); ShowGame(); clock_t tLast = 0; clock_t tCur = 0; tLast = clock(); char cKey = 0; while(g_nEndGame == 0) { if(_kbhit()) { cKey = getch(); switch(cKey) { case 'W': case 'w': pfnKey = OnKeyW; break; case 'A': case 'a': pfnKey = OnKeyA; break; case 'S': case 's': pfnKey = OnKeyS; break; case 'D': case 'd': pfnKey = OnKeyD; break; } (*pfnKey)(); } tCur = clock(); if (tCur - tLast >= 600) { tLast = clock(); OnKeyS(); } } return 0; }
void CPlyRender::Init(GLFWwindow* _glfw_window){ InitGeometry(); InitWall(); InitCubeMapping(); InitShader(); glfwSetWindowUserPointer(_glfw_window, this); glEnable(GL_MULTISAMPLE); glfwSetScrollCallback(_glfw_window, wheel); glfwSetWindowSizeCallback(_glfw_window, miffy::reshape); glfwSetMouseButtonCallback(_glfw_window, miffy::mousebutton); glfwSetCursorPosCallback(_glfw_window, miffy::mousemove); glfwSetKeyCallback(_glfw_window, keyCallback); glShadeModel(GL_FLAT); }