Win32 双人五子棋思路
一.实现要求:
绘制一个14乘14的棋盘格,然后黑白两种棋子依次下棋,会判断谁先连成5子。
二.运行环境:
Visual C++6.0
基于Windows应用程序的基本框架(WinMain和WndProc函数)
三.基本思路:
- 定义一个point结构体,用于存储棋盘中点的位置以及是否有棋子。
- IsWin(int x, int y)函数判断是否连成五子。
1.连成五子的可能情况有4种情况:水平、垂直、左上到右下、左下到右上。
2.假设当前的子是五个子的末端,然后-4得到一种极端情况,然后这里要小心,如果小于0,要置为0;然后依次向后遍历判断是否有5子。
- 修改WndProc()函数。
1. 在WM_CREATE消息中,计算好棋盘格各个点的坐标;
2. 在WM_MOSEMOVE消息中,实时记录鼠标的位置,以及该点属于哪个位置(可能有时候没有刚好点在交叉点上);
3. 在WM_LBUTTONDOWN消息中,用一个全局的flag记录当前下的子是黑/白,将当前位置送给IsWin()函数是否结束游戏;
4. 在WM_LBUTTONUP消息中,刷新界面;
5. 在WM_PAINT消息中,重绘棋盘以及棋子。