- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MFC程序设计
MFC制作五子棋
目录:
1. 目的与要求……………………….….……..…….
2. 主要功能………………………………………….
3. 设计过程中的经验与教训……………………….
4. 自己收获与不足……………………….………….
5. 重要程序清单…………………………………….
6. 窗口截图………………………………………….
1.目的与要求
利用已有的C++基础,结合对MFC的学习,进行窗口化设计。由于MFC提供了MFCppWizard自动生成框架。使得简单的编程更加简单,界面简洁。
这次用MFC设计了一个简单的五子棋游戏。可以进行简单的双人对战。目的在于更加熟悉MFC的使用来完成游戏的制作。再此期间,搜集大量信息,以及函数的源代码。不断进行整合,进行函数构造。
2主要功能
MFC的窗口更适合小型游戏的界面。五子棋可以说是再简单不过的小游戏了,不过其中确包含了大量的函数实现游戏的正常运转。
若要是游戏顺利进行,必须要有程序约束游戏规则。因此本游戏要解决,棋子所放位置的判断,棋子颜色的区分,以及玩家的输赢。解决这些问题,玩家便可以进行一场二人大战了。
本游戏可以让两个玩家在标准的五子棋盘上进行游戏,最先连成五子者,游戏可以显示哪一方获胜。最终的结果可以保存入文件夹。
3. 设计过程中的经验与教训
本次游戏设计,所遇到的阻力比较大。经过多次返工。多次函数未能定义或实现。整个设计过程所学的东西也很多。以五子棋游戏为例。首先要知道其基本规则,并设法用不同的函数来解决规则的限定。设计过程中常常会出现函数已经构造,却未加定义的情况。做本游戏时,查看了大量资料。在棋盘的画法上有所纠结。是直接将棋盘背景图直接加入还是调用函数进行棋盘绘制都是要考虑的。
经过多次尝试,不断进行函数的调试和界面图标的设计。最终完成此次实验。虽然多次返工,虽然有一天从早上做到第二天凌晨5点,但最终的成功,使这些都变成浮云。不断尝试,永不放弃,最终一定成功。
4. 自己收获与不足
此次实验初期,本计划完成一个比较优秀的作品,但最终多种原因没有达到预期理想的界面。首先谈谈收获,个人认为此次MFC课程设计更适合简单游戏的设计。五子棋的界面简单,相对规则也不多。设计过程中,最大的收获要算程序的扩充,函数的调试。其实MFC已给出框架,所要做的便是填充内容。懂得了以位图的形式表示棋子,以cusor替换当前鼠标。还有鼠标热点的设置。在BOOL CMainFrame下构造函数以坐标的形式以改变棋盘大小。同时构造出一系列画棋盘,判断鼠标,判断输赢等函数。为函数添加数据成员并使其一一实现。对相应菜单进行属性更改并进行消息映射,建立响应函数。整个过程都得到了了解及应用。
同时,不足也很多,本游戏调用函数进行了棋盘绘制,使得界面过于简单。由于时间,能力等问题,未能加入人工智能实现人机对战。而且对于老师所给出的对话框的设计及应用也未能加入。棋子的位图都是自己绘制,并不十分美观。如果有充足的时间,我想这些一定会得到完善。
5. 重要程序清单
构造函数
//两个鼠标
HCURSOR hcursorwhite;
HCURSOR hcursorblack;
//棋盘数组
int wzq[19][19];
// colorwhite TRUE时白棋下,否则黑棋下
bool colorwhite;
//棋子位图
CBitmap m_bmblack;
CBitmap m_bmwhite;
?
//保存文件
void Save();
//检查是否结束
void over(CPoint point);
//鼠标操作
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
//鼠标图形更换
afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
//菜单的开始
afx_msg void OnStart();
//菜单的保存
afx_msg void OnSave();
//菜单的打开
afx_msg void OnOpen();
?
窗口设计
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.dwExStyle=cs.dwExStyle|W
文档评论(0)