开发工具:
文件大小: 8kb
下载次数: 0
上传时间: 2013-05-27
详细说明: 用链表实现贪吃蛇#include #include #include #include #include //结构体桩坐标 struct Node { int x; int y; struct Node *pNext; }; typedef struct Node Snake; typedef struct Node Bean; void showSnake(HDC hdc,const Snake *pSnakeHead); Snake* createSnake(int nLength); void snakeRun(Snake *pSnakeHead,int nSnakeDirection); void snakeDead(HWND hwnd,HDC hdc,const Snake *pSnakeHead); Bean* createBean(HWND hwnd,HDC hdc,Bean *pBean,const Snake *pSnakeHead); void showBe an(HWND hwnd,HDC hdc,const Bean *pBean,const Snake *pSnakeHead); /* 函数声明 */ LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); /* 定义全局变量 */ char szClassName[ ] = "WindowsApp"; /*主函数入口*/ int WINAPI WinMain (HINSTANCE hThisInstance, /*当前实例句柄*/ HINSTANCE hPrevInstance, /*前一个实例句柄*/ LPSTR lpszArgument, /*命令行字符串*/ int nFunsterStil) /*窗口显示方式*/ { HWND hwnd; /* 主窗体句柄 */ MSG messages; /* 主窗体向应用程序发送的消息 */ WNDCLASSEX wincl; /* 主窗体的结构 */ /* 填写窗口结构,使得其参数描述主窗口各个方面的属性 */ wincl.hInstance = hThisInstance; wincl.lpszClassName = szClassName; wincl.lpfnWndProc = WindowProcedure; /* 注册回调函数 */ wincl.style = CS_DBLCLKS; /* Catch double-clicks */ wincl.cbSize = sizeof (WNDCLASSEX); /* 使用缺省的图标和鼠标指针样式 */ wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION); wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION); wincl.hCursor = LoadCursor (NULL, IDC_ARROW); wincl.lpszMenuName = NULL; /* 没有注册菜单 */ wincl.cbClsExtra = 0; /* No extra bytes after the window class */ wincl.cbWndExtra = 0; /* structure or the window instance */ /* windows缺省的背景色 */ wincl.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); /* 对窗口进行注册 */ if (!RegisterClassEx (&wincl)) return 0; /* 创建一个窗口*/ hwnd = CreateWindowEx ( 0, /* 指定窗口的扩展风格 */ szClassName, /* 指定窗体类名 */ "Game", /* 窗口标题*/ WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX, /* 指定创建窗口的风格 */ CW_USEDEFAULT, /* Windows decides the position */ CW_USEDEFAULT, /* where the window ends up on the screen */ 608, /* The programs width */ 510, /* and height in pixels */ HWND_DESKTOP, /* The window is a child-window to desktop */ NULL, /* No menu */ hThisInstance, /* Program Instance handler */ NULL /* No Window Creation data */ ); /* 让窗口显示出来 */ ShowWindow (hwnd, nFunsterStil); /* 进入消息循环;当得到的消息是一条WM_OUIT消息时,就退出消息循环 */ while (GetMessage (&messages, NULL, 0, 0)) { /* 把虚拟键消息翻译为字符消息 */ TranslateMessage(&messages); /* 把消息分配到相应的窗口过程中去 */ DispatchMessage(&messages); } /* The program return-value is 0 - The value that PostQuitMessage() gave */ return (int)messages.wParam; } /* 回调函数,处理主窗口消息 */ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; HDC hdc; //定义变量 static Bean *pBean = NULL; //蛇的 static Snake *pSnake = NULL; static int snakeLength = 5; static int snakeDirection = 2; switch (message) /* handle the messages */ { case WM_CREATE: pSnake = createSnake(5); break; //显示图形 case WM_PAINT: hdc = BeginPaint(hwnd, &ps); /* 在这里添加画图的代码 */ showSnake(hdc,pSnake); EndPaint(hwnd, &ps); break; case WM_KEYDOWN: switch(wParam) { /*按下Enter*/ case VK_RETURN: //在这里填写代码 if(IDYES==MessageBox(hwnd,"是要开始吗?","提示",MB_YESNO)) { SetTimer(hwnd, 1, 1000, NULL); } break; /* 左箭头 */ case VK_LEFT: //在这里填写代码 snakeDirection = 1; break; /* 右箭头 */ case VK_RIGHT: //在这里填写代码 snakeDirection = 3; break; /* 上箭头 */ case VK_UP: //在这里填写代码 snakeDirection = 2; break; /* 下箭头 */ case VK_DOWN: //在这里填写代码 snakeDirection = 4; break; } break; /*时间事件*/ case WM_TIMER: //在这里填写代码 snakeRun(pSnake,snakeDirection); hdc = GetDC(hwnd); Rectangle(hdc,0,0,600,600); showSnake(hdc,pSnake); snakeDead(hwnd,hdc,pSnake); ReleaseDC(hwnd,hdc); break; case WM_DESTROY: PostQuitMessage (0); /* 向消息队列中发送一个WM_OUIT消息 */ break; default: /* 调用默认窗口过程对未处理的消息进行必要的处理 */ return DefWindowProc (hwnd, message, wParam, lParam); } return 0; } ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.