MFC下实现的贪吃蛇
可供初学MFC的同学参考,有实例在手,弄通无忧
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2010-01-18 11:36 skyblue_Snake
文件 6518 2006-01-05 14:54 skyblue_Snakeitmap1.bmp
文件 1334 2006-01-05 14:54 skyblue_Snakerick.bmp
目录 0 2010-01-18 11:36 skyblue_SnakeDebug
文件 7276 2009-12-24 14:36 skyblue_SnakeDebugBuildLog.htm
文件 49020 2009-12-03 13:14 skyblue_SnakeDebugmain.obj
文件 69 2009-12-24 14:36 skyblue_SnakeDebugmt.dep
文件 503808 2009-12-24 14:36 skyblue_SnakeDebugSnake.exe
文件 146 2009-12-03 13:14 skyblue_SnakeDebugSnake.exe.embed.manifest
文件 212 2009-12-03 13:14 skyblue_SnakeDebugSnake.exe.embed.manifest.res
文件 145 2009-12-24 14:36 skyblue_SnakeDebugSnake.exe.intermediate.manifest
文件 1108864 2009-12-24 14:36 skyblue_SnakeDebugSnake.ilk
文件 19416 2009-12-24 14:36 skyblue_SnakeDebugsnake.obj
文件 1960960 2009-12-24 14:36 skyblue_SnakeDebugSnake.pdb
文件 24584 2009-12-03 13:14 skyblue_SnakeDebugsnaker.res
文件 12660 2009-12-24 14:36 skyblue_SnakeDebug able.obj
文件 347136 2009-12-24 14:36 skyblue_SnakeDebugvc80.idb
文件 102400 2009-12-24 14:36 skyblue_SnakeDebugvc80.pdb
文件 332454 2006-01-05 14:54 skyblue_Snakeend.bmp
文件 766 2006-01-05 14:54 skyblue_Snakeicon1.ico
文件 12251 2009-11-30 11:38 skyblue_Snakemain.cpp
文件 15818 2006-01-05 14:54 skyblue_Snakescoreboard.bmp
文件 6518 2006-01-05 14:54 skyblue_Snakesnake.bmp
文件 7775 2009-12-15 14:46 skyblue_Snakesnake.cpp
文件 4466 2006-01-05 14:54 skyblue_SnakeSnake.dsp
文件 533 2006-01-05 14:54 skyblue_SnakeSnake.dsw
文件 1789 2009-12-24 14:36 skyblue_Snakesnake.h
文件 8192 2009-12-24 11:49 skyblue_Snakesnake.IAB
文件 408 2009-12-24 11:49 skyblue_Snakesnake.IAD
文件 4096 2009-12-24 11:48 skyblue_Snakesnake.IMB
文件 368 2009-12-24 11:48 skyblue_Snakesnake.IMD
............此处省略20个文件信息
#include
#include
#include“snaker.h“
#include“table.h“
//游戏状态定义
#define GAME_STATE_WAIT 0 //游戏等待状态
#define GAME_STATE_RUN 1 //游戏运行状态
#define GAME_STATE_END 2 //游戏结束状态
//界面相关物件尺寸定义
#define WALL_WIDTH 80 //外墙从左部到游戏区的宽度
#define WALL_HEIGHT 80 //外墙从顶部到游戏区的高度
#define BMP_SCORE_BOARD_WIDTH 256 //分数位图板的宽度
#define BMP_SCORE_BOARD_HEIGHT 55 //分数位图板的高度
#define BMP_WALL_WIDTH 16 //墙位图的宽度
#define BMP_WALL_HEIGHT 16 //墙位图的高度
LRESULT CALLBACK WndProc(HWND hWndUINT message
WPARAM wParamLPARAM lParam);
void DrawGame(void);
void ShellDraw( HDC hdc );
void GameAreaDraw(HDC hdc);
void OnTimer(UINT uTIMER_ID);
void StartGame( void );
void EndGame( void );
//创建一个桌子
CTable table;
int tableBlockWidth = 0; //桌子的格子的宽度
int tableBlockHeight = 0; //桌子的格子的高度
int iScores = 0; //游戏的得分
UINT uGameState = GAME_STATE_WAIT; //当前游戏状态
HDC windowDC = NULL; //windows屏幕设备
HDC bufferDC = NULL; //缓冲设备环境
HDC picDC = NULL; //snake图像内存设备
HDC endDC = NULL; //游戏终结图像内存设备
HDC scoreDC = NULL; //分数板内存设备
HWND hAppWnd = NULL; //本application窗口句柄
HBITMAP picBMP = NULL; //snake图像位图句柄
HBITMAP bufferBMP = NULL; //缓冲位图句柄
HBITMAP endBMP = NULL; //游戏终结图像内存句柄
HBITMAP hbmpWall = NULL; //墙位图句柄
HBITMAP hbmpScore = NULL; //分数板位图句柄
HBRUSH hbrushWall = NULL; //墙画刷
//定时器标识
UINT uSnakeMoveTimer; //蛇的移动
UINT uFoodAddTimer; //水果的产生
//框架的位置数据定义
//GDI RECT 而不是 MFC CRect
RECT g_ClientRect;
RECT g_GameValueRect;
int g_iClientWidth;
int g_iClientHeight;
int WINAPI WinMain(HINSTANCE hCurrentInstHINSTANCE hPrevInstance
PSTR lpszCmdLineint nCmdShow)
{
WNDCLASS wndClass;
HWND hWnd;
MSG msg;
UINT widthheight;
//定义窗口
wndClass.style=CS_HREDRAW | CS_VREDRAW;
wndClass.lpfnWndProc=WndProc;
wndClass.cbClsExtra=0;
wndClass.cbWndExtra=0;
wndClass.hInstance=hCurrentInst;
wndClass.hIcon=LoadIcon(NULLMAKEINTRESOURCE(IDI_MAIN));
wndClass.hCursor=LoadCursor(NULLIDC_ARROW);
wndClass.hbrBackground=(HBRUSH)GetStockobject(WHITE_BRUSH);
wndClass.lpszMenuName=NULL;
wndClass.lpszClassName=“Snake_CLASS“;
//注册窗口
RegisterClass(&wndClass);
//取整个屏幕的尺寸
width=GetSystemMetrics(SM_CXSCREEN);
height= GetSystemMetrics(SM_CYSCREEN);
//创建窗口
hWnd=CreateWindow(
“Snake_CLASS“
“skyblue snake“
WS_POPUP
00
widthheight
NULLNULL
hCurrentInst
NULL);
hAppWnd = hWnd;
//显示窗口
ShowWindow(hWndnCmdShow);
UpdateWindow(hWnd);
//获取窗体大小
GetClientRect(hAppWnd &g_ClientRect);
g_iClientWidth = g_ClientRect.right-g_ClientRect.left;
g_iClientHeight = g_ClientRect.bottom-g_ClientRect.top;
//将游戏区域分成纵,横均为20块的小方块
//并计算每块区域的大小
tableBlockWidth = (g_iClientWidth-2*WALL_WIDTH)/20;
tableBlockHeight = (g_iClientHeight-2*WALL_HEIGHT)/20;
//获取当前主窗口设备与windowDC关联
windowDC=GetDC(NULL);
//创建与windowDC兼容的内存设备环境
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2010-01-18 11:36 skyblue_Snake
文件 6518 2006-01-05 14:54 skyblue_Snakeitmap1.bmp
文件 1334 2006-01-05 14:54 skyblue_Snakerick.bmp
目录 0 2010-01-18 11:36 skyblue_SnakeDebug
文件 7276 2009-12-24 14:36 skyblue_SnakeDebugBuildLog.htm
文件 49020 2009-12-03 13:14 skyblue_SnakeDebugmain.obj
文件 69 2009-12-24 14:36 skyblue_SnakeDebugmt.dep
文件 503808 2009-12-24 14:36 skyblue_SnakeDebugSnake.exe
文件 146 2009-12-03 13:14 skyblue_SnakeDebugSnake.exe.em
文件 212 2009-12-03 13:14 skyblue_SnakeDebugSnake.exe.em
文件 145 2009-12-24 14:36 skyblue_SnakeDebugSnake.exe.intermediate.manifest
文件 1108864 2009-12-24 14:36 skyblue_SnakeDebugSnake.ilk
文件 19416 2009-12-24 14:36 skyblue_SnakeDebugsnake.obj
文件 1960960 2009-12-24 14:36 skyblue_SnakeDebugSnake.pdb
文件 24584 2009-12-03 13:14 skyblue_SnakeDebugsnaker.res
文件 12660 2009-12-24 14:36 skyblue_SnakeDebug able.obj
文件 347136 2009-12-24 14:36 skyblue_SnakeDebugvc80.idb
文件 102400 2009-12-24 14:36 skyblue_SnakeDebugvc80.pdb
文件 332454 2006-01-05 14:54 skyblue_Snakeend.bmp
文件 766 2006-01-05 14:54 skyblue_Snakeicon1.ico
文件 12251 2009-11-30 11:38 skyblue_Snakemain.cpp
文件 15818 2006-01-05 14:54 skyblue_Snakescoreboard.bmp
文件 6518 2006-01-05 14:54 skyblue_Snakesnake.bmp
文件 7775 2009-12-15 14:46 skyblue_Snakesnake.cpp
文件 4466 2006-01-05 14:54 skyblue_SnakeSnake.dsp
文件 533 2006-01-05 14:54 skyblue_SnakeSnake.dsw
文件 1789 2009-12-24 14:36 skyblue_Snakesnake.h
文件 8192 2009-12-24 11:49 skyblue_Snakesnake.IAB
文件 408 2009-12-24 11:49 skyblue_Snakesnake.IAD
文件 4096 2009-12-24 11:48 skyblue_Snakesnake.IMB
文件 368 2009-12-24 11:48 skyblue_Snakesnake.IMD
............此处省略20个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)