黑白棋(也叫翻转棋)的棋盘是一个有8*8方格的棋盘。下棋时将棋下在空格中间,而不是像围棋一样下在交叉点上。开始时在棋盘正中有两白两黑四个棋子交叉放置,黑棋总是先下子。
下子的方法:把自己颜色的棋子放在棋盘的空格上,而当自己放下的棋子在横、竖、斜八个方向内有一个自己的棋子,则被夹在中间的全部翻转会成为自己的棋子。并且,只有在可以翻转棋子的地方才可以下子。
引用了QQ游戏黑白棋的图片。
游戏运行截图如下:
游戏中使用了大量图片、音乐、资源文件,<
href="http://www.easyx.cn/Files/samples/201203/BlackWhiteChessAI.zip"
style="text-decoration: none; color: rgb(0, 0,
127);">点这里下载该游戏的完整 VC 项目包>。
游戏代码如下(相关图片资源请下载完整 VC 项目包):
///
// 程序名称:黑白棋AI版
// 编译环境:Visual C++ 2010/6.0,EasyX_v20120304(beta)
// 程序编写:自然向日葵 1164359890@qq.com
// 最后更新:2012-3-24
//
//说明:人机对战版
#include // EasyX_2011惊蛰版
#include
#include
#pragma comment(lib, "Winmm.lib")
#define T(c) ((c == 'B') ? 'W' : 'B')
using namespace std;
const int difficult = 6;// 难度
const int move[8][2] = { {-1, 0}, {1, 0}, {0, -1}, {0, 1},
{-1, -1}, {1, -1}, {1, 1}, {-1, 1}};
// 八个方向扩展
char map[8][8];// 棋盘
IMAGE img[5];// 保存图片
int black, white;// 双方的棋子数
int X, Y;// 白棋的下子点
void load(void);// 加载素材
void print(void);// 画棋盘
void draw(int, int, char);// 下当前子
int judge(int, int, char);// 判断当前是否可以落下
bool baidu(char);// 判断是否有棋可吃
bool quit(char);// 判断是否有棋存活
bool ask(void);// 弹出对话框
int D(char, int);// 动态规划
void play(void);// 游戏过程
void load(void)// 加载素材
{
// 加载图片
loadimage(&img[0], "图片\\空位.bmp");
loadimage(&img[1], "图片\\黑子.bmp");
loadimage(&img[2], "图片\\白子.bmp");
loadimage(&img[3], "图片\\黑子1.bmp");
loadimage(&img[4], "图片\\白子1.bmp");
// 加载音乐
mciSendString(