• 大小: 3.75MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-30
  • 语言: C/C++
  • 标签: 贪吃蛇  

资源简介

可供初学MFC的同学参考,有实例在手,弄通无忧

资源截图

代码片段和文件信息

#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_Snake\bitmap1.bmp
     文件        1334  2006-01-05 14:54  skyblue_Snake\brick.bmp
     目录           0  2010-01-18 11:36  skyblue_Snake\Debug\
     文件        7276  2009-12-24 14:36  skyblue_Snake\Debug\BuildLog.htm
     文件       49020  2009-12-03 13:14  skyblue_Snake\Debug\main.obj
     文件          69  2009-12-24 14:36  skyblue_Snake\Debug\mt.dep
     文件      503808  2009-12-24 14:36  skyblue_Snake\Debug\Snake.exe
     文件         146  2009-12-03 13:14  skyblue_Snake\Debug\Snake.exe.embed.manifest
     文件         212  2009-12-03 13:14  skyblue_Snake\Debug\Snake.exe.embed.manifest.res
     文件         145  2009-12-24 14:36  skyblue_Snake\Debug\Snake.exe.intermediate.manifest
     文件     1108864  2009-12-24 14:36  skyblue_Snake\Debug\Snake.ilk
     文件       19416  2009-12-24 14:36  skyblue_Snake\Debug\snake.obj
     文件     1960960  2009-12-24 14:36  skyblue_Snake\Debug\Snake.pdb
     文件       24584  2009-12-03 13:14  skyblue_Snake\Debug\snaker.res
     文件       12660  2009-12-24 14:36  skyblue_Snake\Debug\table.obj
     文件      347136  2009-12-24 14:36  skyblue_Snake\Debug\vc80.idb
     文件      102400  2009-12-24 14:36  skyblue_Snake\Debug\vc80.pdb
     文件      332454  2006-01-05 14:54  skyblue_Snake\end.bmp
     文件         766  2006-01-05 14:54  skyblue_Snake\icon1.ico
     文件       12251  2009-11-30 11:38  skyblue_Snake\main.cpp
     文件       15818  2006-01-05 14:54  skyblue_Snake\scoreboard.bmp
     文件        6518  2006-01-05 14:54  skyblue_Snake\snake.bmp
     文件        7775  2009-12-15 14:46  skyblue_Snake\snake.cpp
     文件        4466  2006-01-05 14:54  skyblue_Snake\Snake.dsp
     文件         533  2006-01-05 14:54  skyblue_Snake\Snake.dsw
     文件        1789  2009-12-24 14:36  skyblue_Snake\snake.h
     文件        8192  2009-12-24 11:49  skyblue_Snake\snake.IAB
     文件         408  2009-12-24 11:49  skyblue_Snake\snake.IAD
     文件        4096  2009-12-24 11:48  skyblue_Snake\snake.IMB
     文件         368  2009-12-24 11:48  skyblue_Snake\snake.IMD
............此处省略20个文件信息

评论

共有 条评论