一、唠嗑一下
这次接触mfc纯属意外:一家开发公司在西安举办了软件编程大赛来我们学校做大赛宣传,看了下作品要求都是些Web Page、Android APP什么的,然后看到mfc开发一项,对mfc产生了好奇,于是就查了一些mfc的资料,觉得界面编程挺有趣的。所以这也是我第一次接触微软基础类库mfc,也是我第一次写游戏哈哈哈!不完善之处希望多多包涵。
二、游戏思路及逻辑说明
这款游戏本身操作简单、逻辑分明,大致可分为以下几种状态:
1、 初始态:
随机生成物体,出现在最高处,分数为0;基本上为静态贴图。
2、 游戏进行态:
(一)方块控制
1.变形
围绕一个方块向右旋转90度.以变形
2.左右下移动
1>物体左右移动的时候不要过界.
2>物体落定后.
(1).设定它落下的位置.
(2).看是否满足三个同样方格排成一排或一列,满了消去,而后继续随机生成新的方块
(3).看是否方块垒到顶了.到了game over
(三)随机生成物体
共七种类型的方块,分别是“田”,“一”,“L”、“J”、“Z”、反“Z”、“T”
(四)重复以上步骤
3、 死亡状态:
方块垒到最高处
三、实现
(一)类的定义
- 方格类
typedef struct tagPane
{
int y; // 行
int x; // 列
CImage blockPNG;
int imageKind; //方格的种类
}Pane;
- block类
//每个物体定义
struct Block
{
Pane eachPane[4]; //每个方块共有4个方格,用结构体数组记录
int y1; // 对应于最上面的一个方块的y坐标
int y2; // 对应于最下面一个方块x的坐标
int x1; // 对应于最左面一个方块的y坐标
int x2; // 对应于最右面一个方块x的坐标
};
- 游戏区域类
struct GameArea
{
int bSet;//记录该方格是否被占用,被占用==1,否则为0
int blockkind;
CImage blockPNG;
};
(二)操作函数
void DrawBlock(int flag);//随机产生方块的颜色
void GenerateBlock(struct Block &blk);// 随机的产生方块形状
void TransBlockForm();//方块变形
void Move(int direction);//方块左右移动
void MoveDown();//方块下落
void UpdateLimit(struct Block &blk);// 更新物体的上下左右边界
bool IsBorder();//判断是否到达边界
void SetBlockFlag();//标记
bool IsLine();//判断是否符合消去条件
bool IsValid();//消消乐的玩法
void Initialize();//游戏初始化
void Pause();//游戏暂停
void GameOver();//游戏结束
(三)一些变量
//当前的方块
struct Block block;
//我们将这个游戏区域格式化为 18*10 (y*x);
struct GameArea gameAreas[18][10];
int AreasTopLine; //记录游戏区域最高的一行
CRect GAME_RECT; //游戏区域
CImage background; //背景图
CImage blockPNG; //方块的图片
CDC cacheDC; //缓冲DC
CBitmap cacheCBitmap; //缓冲位图
int score;//得分
1万+



被折叠的 条评论
为什么被折叠?



