该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

}

VOID OnTimer(HWND hWnd){

GAME_RESULT res = snake.move();

if(res != GAME_CONTINUE){

KillTimer(hWnd,1); //0

snakestate = SNAKE_DEAD;

if(res == GAME_SUCCEED){

InvalidateRect(hWnd,NULL,TRUE); //吃下最后一个蛋再结束,不加上这句,但没吃下去直接完了

MessageBox(hWnd,"Succeed!","Infor",MB_OK);

}

else

MessageBox(hWnd,"Game Over!","Infor",MB_OK); //1

//阻塞函数,如果先执行1,后执行0,则进入阻塞,点击了ok之后才会杀死计时器1

//而每normal时间后会再次弹出消息盒子,只有点击一个Ok之后才会停止继续弹出消息盒子

return;

}

InvalidateRect(hWnd,NULL,TRUE);

}

VOID OnPaint(HWND hWnd){

PAINTSTRUCT ps = {0};

HDC hdc = BeginPaint(hWnd,&ps);

Rectangle(hdc,0,0,400,400);

snake.SetHDC(hdc);

snake.showEgg();

snake.showSnake();

EndPaint(hWnd,&ps);

} void OnKeyDown(HWND hWnd,WPARAM wParam){

switch(wParam)

{

case VK_UP:

snake.turn(SNAKE_UP);

break;

case VK_DOWN:

snake.turn(SNAKE_DOWN);

break;

case VK_LEFT:

snake.turn(SNAKE_LEFT);

break;

case VK_RIGHT:

snake.turn(SNAKE_RIGHT);

break;

case VK_SPACE:

if(snakestate == SNAKE_MOVE){

snakestate = SNAKE_STOP;

KillTimer(hWnd,1);

}else if(snakestate == SNAKE_STOP){

snakestate = SNAKE_MOVE;

SetTimer(hWnd,1,speedstate,NULL);

}else{;}

break;

}

}

HRESULT CALLBACK WndProc(HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam){

switch(nMsg){

case WM_CREATE:

snake.InitSnake();

break;

case WM_KEYDOWN:

OnKeyDown(hWnd,wParam);

break;

case WM_COMMAND:

OnCommand(hWnd,wParam);

break;

case WM_PAINT:

OnPaint(hWnd);

break;

case WM_TIMER:

OnTimer(hWnd);

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

}

return DefWindowProc(hWnd,nMsg,wParam,lParam);

}

BOOL Register(LPSTR lpClsName, WNDPROC WndProc)

{

WNDCLASSEX wce = {0};

wce.cbSize = sizeof wce;

wce.cbClsExtra = 0;

wce.cbWndExtra = 0;

wce.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);

wce.hCursor = NULL;

wce.hIcon = NULL;

wce.hIconSm = NULL;

wce.hInstance = g_hInstance;

wce.lpfnWndProc = WndProc;

wce.lpszClassName = lpClsName;

wce.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);

wce.style = CS_HREDRAW|CS_VREDRAW;

ATOM nAtom = RegisterClassEx(&wce);

if(nAtom == -1)

return FALSE;

return TRUE;

} HWND CreateMain(LPSTR lpClsName,LPSTR lpWndName)

{

HWND hWnd = CreateWindowEx(0,lpClsName,lpWndName,WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,g_hInstance,0);

return hWnd;

} VOID DisPlay(HWND hWnd)

{

ShowWindow(hWnd,SW_SHOW);

UpdateWindow(hWnd);

} VOID Message()

{

MSG nMsg = {0};

while(GetMessage(&nMsg,NULL,0,0))

{

TranslateMessage(&nMsg);

DispatchMessage(&nMsg);

}

} int APIENTRY WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{

// TODO: Place code here.

g_hInstance = hInstance;

if(!Register("Wnd",WndProc))

{

MessageBox(0,"Register failed!","Infor",MB_OK);

return 0;

}

HWND hWnd = CreateMain("Wnd","Window");

DisPlay(hWnd);

Message();

return 0;

}

同时再插入一个menu,即可以运行,插入menu,下面是系统自动生成的resouce.h

#define IDR_MENU1 101

#define ID_MOVE 40001

#define ID_STOP 40002

#define ID_EXIT 40003

#define ID_SLOW 40004

#define ID_NOMAL 40005

#define ID_NORMAL 40005

#define ID_FAST 40006

#define ID_ABOUT 40007

#define ID_START 40008 // Next default values for new objects

//

#ifdef APSTUDIO_INVOKED

#ifndef APSTUDIO_READONLY_SYMBOLS

#define _APS_NEXT_RESOURCE_VALUE 102

#define _APS_NEXT_COMMAND_VALUE 40009

#define _APS_NEXT_CONTROL_VALUE 1000

#define _APS_NEXT_SYMED_VALUE 101

#endif

#endif

c语言贪吃蛇源代码window32,Win32贪吃蛇源代码。背景非常简单相关推荐

  1. C语言贪吃蛇游戏代码,贪吃蛇C语言代码实现大全

    一.C语言贪吃蛇代码实现前言 设计贪吃蛇游戏的主要目的是让大家夯实C语言基础,训练编程思维,培养解决问题的思路,领略多姿多彩的C语言. 贪吃蛇是非常经典的一款游戏,本次我们模拟在控制台实现贪吃蛇游戏, ...

  2. 假期休闲,来发贪吃蛇!(Win32控制台版)

    假期无事,整理电脑文件的时候发现了以前大二时做的坦克小游戏,心血来潮,决定再来一发贪吃蛇. 游戏玩法不必多说,主要是算法实现和绘制过程. 首先,利用一个二维数组 mp[][] 来存储地图信息,其中的值 ...

  3. 最终幻想游戏java_Java简单实现贪吃蛇经典小游戏(附源代码)

    在我们学习java的时候,为了提高我们的兴趣,我们经常会使用所学到的知识去做一些小游戏,这篇blog就介绍了一个经典而且好理解的小游戏-贪吃蛇. 一.使用知识Jframe GUI 双向链表 线程 二. ...

  4. C语言综合练习6:制作贪吃蛇

    1 初始化界面 因为还没学QT,我们就使用终端界面替代. 这里我们假设界面中没有障碍物,我们只需要设定界面的高宽就行,这是蛇的移动范围,我们可以写两个宏来规定界面的高宽 新建一个snake.c的文件 ...

  5. 贪吃蛇游戏项目(Java版含源代码)

    这是一款经典小游戏,贪吃蛇,玩家操控小蛇从小吃到大,全方面的代码解析,适合新手第一款的项目实战 更多项目

  6. Win32 贪吃蛇游戏

    #include<windows.h> #include <time.h> #include "resource.h"#define WIN_WIDTH 8 ...

  7. C语言200行代码写一个贪吃蛇小游戏

    先看一眼主程序 一般小游戏的大致框架就是这个样子,这里主要分成画面的显示,与用户相关的更新,与用户无关的更新等三个部分.(完整代码附于文末) int main(int argc, char *argv ...

  8. python制作贪吃蛇游戏下载_自动玩贪吃蛇,满屏的蛇影当然由python制作AI贪吃蛇!...

    image 前提:本文实现AI贪吃蛇自行对战,加上人机对战,文章末尾附上源代码以及各位大佬的链接,还有一些实现步骤,读者可再次基础上自行添加电脑VS电脑和玩家VS玩家(其实把人机对战写完,这2个都没什 ...

  9. 诺基亚3d贪吃蛇java版_3D贪吃蛇诺基亚六边形

    3D贪吃蛇诺基亚六边形是一款十分经典的贪吃蛇游戏.3D贪吃蛇诺基亚六边形是曾经的手机巨头诺基亚在自己的产品上内置的一款贪吃蛇游戏,这款贪吃蛇从2D空间进化到了3D空间,玩家将在一个立体的六边形内操控贪 ...

最新文章

  1. 有源汇上下界最小费用可行流 ---- P4553 80人环游世界(拆点 + 有源汇上下界最小费用可行流)
  2. wordpress漏洞_聊聊 WordPress 5.1.1 CSRF to RCE 漏洞
  3. 谷歌为什登不上去github_我们分析了GitHub上5.46 亿条日志,发现中国开源虽然贡献大但还有这些不足......
  4. flutter打开第三方应用
  5. oc 画一个圆弧_用SolidWorks画的塑料衣架,要用到不少让人头疼的曲线
  6. mysql5.6.28安装_mysql5.6.28源码安装
  7. 计算机视觉书籍学习记录——1最近点匹配
  8. 笑死人了,要抑制房价的过快上涨?
  9. Mac与Windows双系统与虚拟机
  10. 《无线电》杂志1955年到2000年高清扫描版,果断下载一份保存!
  11. AirPlay to Mac 如何工作以及使用它需要什么
  12. php soapfault 怎么用,SoapFault出现的问题及解决办法分享
  13. 【最后有彩蛋】Pyhton接口测试手册
  14. postgres 禁止远程登录_Postgresql允许远程访问配置修改
  15. Pycharm ssh远程调试报错: cannot connect to X server的解决方法
  16. 【英语-同义词汇词组】therefore、hence、thus的用法及区别
  17. Laragon 升级composer
  18. 如何用TensorFlow图像处理函数裁剪图像?
  19. 社会各界送别“国医大师”邓铁涛
  20. vim的文件比较功能

热门文章

  1. Linux:VMware12.5.7安装Ubuntu16.04.2失败的解决方案cpufreq: cpufreq_online: Failed to initialize policy for cpu
  2. java链式存储_Java实现链式存储的二叉树
  3. C# visionpro搜索区域拖动改变事件
  4. vue.min.js:6 TypeError: Cannot read properties of undefined (reading ‘_wrapper‘)
  5. 桌面云 服务器 价格,细数目前市场上桌面云的收费模式
  6. 解析时分秒_部编版三年级上册语文生字表、识字表+生字解析(拼音+偏旁+结构+组词+造句)...
  7. java键盘控制英雄左右移动_js实现键盘操作实现div的移动或改变的原理及代码
  8. php mysql搜索功能并分页_php实现搜索和分页效果-亲测有效
  9. 7Python全栈之路系列之Django表单
  10. 《HTML5移动Web开发实战》—— 1.6 在移动网站中使用HTML5