1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C++五子棋(五)——实现AI落子

C++五子棋(五)——实现AI落子

时间:2021-08-31 07:00:38

相关推荐

C++五子棋(五)——实现AI落子

AI思考落子点

在之前我们已经实现计算权值了,现在要想让AI落子,应根据之前的计算结果使棋子落在分值最大点上。当然可能会出现多个分值相同的最大点,这时在其中随机取一个点落下即可。

chessData.h

typedef struct point{int row;int col;} point_t;//机器下棋point_t actionAI(ChessData* data);

chessData.cpp

#include <time.h>#include <stdlib.h>#include <vector>

point_t actionAI(ChessData* data){//计算评分calcScore(data);//找出最大分数位置int maxScore = 0;std::vector<std::pair<int, int>> maxPoints;int k = 0;for(int row = 0; row < BOARD_GRAD_SIZE; row++){for(int col = 0; col < BOARD_GRAD_SIZE; col++){//若该坐标为空if(data->chessMap[row][col] == 0){//找出最大数和坐标if(data->scoreMap[row][col] > maxScore){maxScore.clear();k = 0;maxScore.push_back(std::make_pair(row, col));k++;}else if(data->scoreMap[row][col] == maxScore){maxPoints.push_back(std::make_pair(row, col));k++;}}}}//如果有多个点随机落子srand((unsigned)time(0));int index = rend() % k;return maxPoints[index];}

实现AI落子

main.cpp

void AI_GO(){point_t point = actionAI(&game);clickPosRow = point.row;clickPosCol = point.col;Sleep(1000);chessDown(clickPosRow, clickPosCol, CHESS_WHITE);updateGameMap(&game, clickPosRow, clickPosCol);}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。