// game.cpp : 定义控制台应用程序的入口点。 // #define _CRT_SECURE_NO_WARNINGS #include "EasyxEx.h // // 全局变量 // //游戏当前场景状态 GAME_STATE state; //图片对象 IMAGE background; //背景图片 //鼠标按下消息 void mouse_push(int x, int y, int button); //鼠标弹起消息 void mouse_pop(int x, int y, int button); //鼠标移动消息 void mouse_move(int x, int y); //按键处理函数 void key_event(int key); //游戏逻辑更新 void update(int t); //显示函数 void display(); // // main() // int main(int argc, char* argv[]) { //鼠标消息 MOUSEMSG msg; //初始化图形环境 //WINX = 1024 //WINY = 720 initgraph(WINX, WINY); //字体背景透明 setbkmode(TRANSPARENT); //加载图片 loadimage(&background, TEXT("bgm.png"), WINX, WINY); //帧时间 int t = clock(); while (running){ if (MouseHit()) { //如果有鼠标消息,处理鼠标操作 msg = GetMouseMsg(); switch (msg.uMsg){ case WM_LBUTTONDOWN: //记录按钮状态 mouse_button = MK_LBUTTON; mouse_push(msg.x, msg.y, MK_LBUTTON); break; case WM_RBUTTONDOWN: mouse_push(msg.x, msg.y, MK_RBUTTON); break; case WM_LBUTTONUP: //记录按钮状态 mouse_button = 0; mouse_pop(msg.x, msg.y, MK_LBUTTON); break; case WM_RBUTTONUP: mouse_pop(msg.x, msg.y, MK_RBUTTON); break; case WM_MOUSEMOVE: //记录鼠标位置 mouse.x = msg.x; mouse.y = msg.y; mouse_move(msg.x, msg.y); break; } } else if (_kbhit()) { //如果有键盘消息,处理按键操作 key_event(_getch()); } else { //更新游戏 update(clock() - t); t = clock(); //批量绘图,防止闪烁 BeginBatchDraw(); //显示画面 display(); //结束批量绘图 EndBatchDraw(); //延时 Sleep(20); } } //关闭图形坏境 closegraph(); return 0; } //鼠标按下消息 //button MK_LBUTTON 左键 // MK_RBUTTON 右键 void mouse_push(int x, int y, int button) { } //鼠标弹起消息 //button MK_LBUTTON 左键 // MK_RBUTTON 右键 void mouse_pop(int x, int y, int button) { } //鼠标移动消息 void mouse_move(int x, int y) { } //按键处理函数 void key_event(int key) { switch (key) { case KEY_ESC: //设置运行标记为 false,退出程序。 running = false; break; } } //游戏逻辑更新 void update(int t) { switch (state) { case GAME_MENU: break; case GAME_PLAY: //处理游戏执行逻辑 break; case GAME_END: break; default: break; } } //显示函数 void display() { //绘制背景图片 putimage(0, 0, &background); switch (state) { case GAME_MENU: //绘制游戏菜单 break; case GAME_PLAY: //绘制游戏场景 break; case GAME_END: //绘制游戏结束画面 break; default: break; } }
sdragonx https://github.com/sdragonx