赞
踩
正文
01
思路
我没有选择专业的五子棋棋型,用我自己的逻辑(初高中玩五子棋的方法),去实现简单的人机对战。
首先因为要计算五子棋每一步的分数,那么你就要分析每一步形成的棋盘,以下图为例:
当你即将在红色方框区域内落子时,通过数据处理获取四个方向的棋子存储在数组里面,然后就是分析这个数组属于那种棋型。
以横向为例:
row相当于上图红色矩形区域的行坐标
col 相当于上图红色矩形区域的列坐标
player是这个位置即将落子的颜色,-1黑子 1 白子
- int Game_score(int row, int col, int player) //player = -1黑子 player = 1 白子
- {
-
- char arr[4][9] = { 0 }; //存放四个方向的棋子
- int grade[4]; //存放四个方向的总分
- int begin = 0, end = 0;
- /*========左右========*/
- //从Map[row][col]处往左找四个棋子,遇到边界结束得到左边落子数量
- //从Map[row][col]处往右找四个棋子,遇到边界结束得到右边落子数量
- for (int index = 1; index <= 4; index++)
- {
- //往左找
- if (col - index >= 0)
- {
- begin = index;
- }
- //往右找
- if (col + index < 15)
- {
- end = index;
- }
- }
- for (int temp = 0, index = col - begin; index <= col + end; index++, temp++)
- {
- arr[0][temp] = Map[row][index]; //将Map[row][col]附近九个位置的棋子放入到arr里面分析
- }
- arr[0][begin] = player; //将预测的落子位置由0
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。