基于MFC的五子棋应用(一)
前些日子,参加了学校里一个实验室的面试,面试过程实在糟心,老师提出现场写一个五子棋的算法,然而过于紧张,伪代码都写得并不顺利。
总而言之,言而总之,面试结果虽然不尽如人意,但最后布置了一道基于MFC的五子棋实现,终是能一展拳脚。
故以编程日记,记之。
1.分析
首先是对整个程序的分析:五子棋,作为最基础的交互型游戏规则简单,游戏的主体主要分为三个部分:1.视图资源 2.规则 3.交互
1.1 视图
五子棋的规则很简单:判断当前位置能否落子
判断当前执子颜色
判断是否五子连珠
1.2 环境
本例采用VC++6.0实现
建立文件 MFC AppWizard[exe] 单文档
1.3 资源编辑
黑白位图Bitmap以表示棋盘上面的棋子:
IDB_BLACK
IDB_WHITE
黑白鼠标Cursor以替换当前鼠标:
IDC_CURSOR1 黑棋子
IDC_CURSOR2 白棋子
黑白图标Icon以显示在状态栏供以提示:
IDI_BLACK
IDI_WHITE
菜单以供操作:
VS 人:ID_PLAYER
VS AI:ID_COMPUTER
保存:ID_SAVE
载入:ID_OPEN
退出:ID_APP_EXIT
具体表现为下图:
1.4 变量函数定义
为了实现状态栏的显示,修改MainFrm.h中
CStatusBar m_wndStatusBar 为public访问
在***View.h中添加变量
//保存棋谱
void OnSave();
//载入棋谱
void OnOpen();
//悔棋坐标
int bprex,bprey;
int wprex,wprey;
int Regretpoint;
//检查是否结束
void over(CPoint point);
//两个鼠标
HCURSOR hcursorwhite;
HCURSOR hcursorblack;
//棋盘数组
int wzq[19][19];
// colorwhite TRUE时白棋下,否则黑棋下
bool colorwhite;
//棋子位图
CBitmap m_bmblack;
//AI
//保存计算机落子时白棋位置
CPoint vspoint;
int vscomputer; //vscomputer=1 为人机对战 2为人人
(AI部分 之后的文章进行介绍 先针对人人对战惊醒解释这一方面比较简单)
protec