如何用MFC写俄罗斯方块程序

如题所述

第1个回答  2010-09-27
建议你去这里看看,很详细http://student.csdn.net/space.php?uid=110891&do=blog&id=10323

黏贴代码如下:

const int BLOCK_LINE = 20;//当前地图的行数
const int BLOCK_ROW = 10;//当前地图的列数
class CBlock
{
public:
CBlock(void);
~CBlock(void);
private:
// 当前方块形状
int m_BlockShape;
//下一个方块形状
int m_nextBlockShape;
//当前方块状态
int m_BlockState;
//等级
int m_BlockLevel;
//当前可消行数
int m_BlockCurDelLine;
//游戏是否在执行
bool m_blockRunning;
//当前方块位置
POINT m_BlockPos[4];
//下个方块位置
POINT m_nextBlockPos[4];
//当前的屏幕状态
//BLOCK_LINE是行数,BLOCK_ROW是列数
int m_Blockmap[BLOCK_LINE][BLOCK_ROW];
public:
// 初始化游戏
void BlockInit( void );
private:
// 记录方块图形
CBitmap m_bmpBlock[7];
public:
//创建一个新的方块出来,这里只给方块形状赋值
void CreateNewBlock(void);
private:
//这里给方块位置赋值,
//shape是形状, pt[]是用来接收方块坐标的(方块形状的排列坐标)数组
//xPos是偏移量,就是方块显示位置和方块显示的框的最左边的差
void MakeNewBlock(int shape, POINT pt[], int xPos);
public:
//将方块画在对应的DC上
void DrawBlock(CDC* pDC);
//方块的下落过程,主要部分
void BlockDropDown(CDC* pDC);
private:
// 隐藏方块
void HideBlock(CDC* pDC);
// 背景图片变量
CBitmap m_bmpBKGND;
public:
// 画下个方块的框框
void DrawNextBlock( CDC* pDC );
//方块左移
void BlockLeft(CDC* pDC);
//方块右移
void BlockRight(CDC* pDC);
//方块下移
void BlockFastDown(CDC* pDC);
//方块变形
void ChangeState(CDC* pDC);
// 消除一行
//pDC是传入的DC
//LineNum是消除的行从第几行开始(我这里是最上面为0,最下面为19)
//start是 游戏是否是要把消除行以上的都置0,我是用在OnDraw()里,用来重画屏幕的,
void DeleteLine(CDC* pDC, int LineNum, bool start);
// 游戏是否结束,true=结束了
bool BlockGameOver(void);
// 计分板
//del是决定是否是已消一行的
void BlockScore(int del, CDC* pDC);
//返回是否升级了,true=升级了
bool BlockLevelUp(void);
//返回下落速度
int BlockSpeed(void);
};

csdn可以下载到这个代码,你要的话可以发邮件给我,我的邮箱[email protected]
相似回答