Пример #1
0
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);
	}
}
Пример #2
0
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;
}
Пример #3
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);
}