爱拼图(i-JIGSAW)工程测试版发布
随便练手写了个拼图游戏,大概贴一下,由于本人水平有限,代码风格难免有问题,还请各位高手海涵.
游戏的组框架已经完成,但是还有很多功能没有添加,以后慢慢来完善,窗口大部分按钮没有添加响应函数.
每一次打开游戏都会重新开始一轮挑战(挑战是随机生成的).
头文件预览:
1: #pragma once
2:
3: class CJigsaw;
4: class CJigsawBlock //拼图块类.
5: {
6: public:
7: CJigsawBlock(); //无参数的构造函数.
8: CJigsawBlock(const CJigsawBlock& RightSide); //拷贝构造函数.
9: ~CJigsawBlock(); //析构函数.
10: friend CJigsaw; //设置本类为类CJigsawd的友元.
11: CJigsawBlock& operator=(const CJigsawBlock& RightSide); //重载赋值运算符
12: protected:
13: CImage* m_lpBlock; //图片.
14: CPoint* m_lpPosion; //块位置(只用来标示在数组中的坐标).
15: CJigsaw* m_lpParent; //此指针用于调用CJigsaw,在本类初始化时应对此赋值.
16: CRect* m_lpRect; //拼图块的矩形大小,与m_Block的大小对应相等,与屏幕坐标系对应.
17: private:
18: BOOL MoveLeft(); //拼图块向左移动一个单位,如果无法移动则返回False.
19: BOOL MoveRight(); //拼图块向右移动一个单位,如果无法移动则返回False.
20: BOOL MoveUp(); //拼图块向上移动一个单位,如果无法移动则返回False.
21: BOOL MoveDown(); //拼图块向下移动一个单位,如果无法移动则返回False.
22: public:
23: void Initialize(CJigsaw* lpParent,CPoint* lpPosition,CImage* lpImage,CRect* lpRect); //传入CJigsaw指针,内部调用CJigsawBlock(),应用此函数初始化本类.
24: BOOL MoveTheBlock(); //移动拼图块,需要调用MoveLeft,MoveRight,MoveUp,MoveDown.
25: BOOL isBackupBlock(); //返回布尔值,如果是缺失块,则返回TRUE.
26: };
1: #pragma once
2: #define DEF_PIECE 4 //默认拼图权值,用来与难度做和.
3:
4: class CJigsawBlock;
5: class CJigsaw //拼图类.
6: {
7: public:
8: CJigsaw(); //构造函数
9: ~CJigsaw(); //析构函数
10: private:
11: CJigsawBlock* m_lpBlocks; //拼图块的1维集合(用1维标示2维).
12: CJigsawBlock* m_lpBackupBlock; //缺失的拼图块的备份.
13: int m_Difficulty; //游戏难度等级,决定了拼图块的个数(对应关系为: 若拼图块的个数位 n*n,则n=m_Difficulty+4).
14: BOOL m_isPaused; //标志游戏是否出于暂停状态.
15: const int m_cBlockspace; //拼图块的间距值.
16: public:
17: CJigsawBlock* GetBlockAt(CPoint* lpPoint); //获取某个位置上的拼图块.
18: CJigsawBlock* GetBlockAt(int x,int y); //获取某个位置上的拼图块.
19: CJigsawBlock* GetBlockAt(int n); //通过1维数组坐标获得拼图块.
20: void IntroduceImage(LPSTR path); //从外部导入图片,需要调用ZoomImage以及DivideImage.
21: void IntroduceImage(CImage* lpImage); //从外部导入图片,需要调用ZoomImage以及DivideImage.
22: CJigsawBlock* GetBlockAtMousePos(CPoint* pos); //获取当前鼠标处的拼图块.
23: void StartNewGame(); //开始新游戏.
24: void PauseGame(); //暂停或者继续游戏.
25: void PaintClient(CPaintDC &dc); //绘制客户区,供OnPaint函数调用.
26: BOOL isPaused(); //获取游戏是否暂停,暂停则返回True.
27: CJigsawBlock* GetBackupBlock(); //获得确实的拼图块备份.
28: int GetDifficulty(); //获取难度等级.
29: BOOL CheckWin(); //检测是否胜利.
30: protected:
31: void ZoomImage(CImage* lpImage); //缩放并剪裁外部导入的图片.
32: void DivideImage(CImage* lpImage,int nPieces); //细分图片为若干块并导入拼图块集合.
33: void SetDifficulty(int difficulty); //设置游戏难度等级.
34: private:
35: void IntroduceDefaultImage(); //导入默认的图片(程序自带).
36: };
37:
游戏界面预览:
游戏下载:
posted on 2009-03-28 23:30 Sunwayking 阅读(425) 评论(1) 编辑 收藏 举报