资源简介
使用mcts算法的近似ai,能够对战ten(超级井字棋)
超级井字棋:9个九宫格,每个玩家落子的格子由另一个玩家的落子决定。
玩家在任意一个九宫格井字棋胜利则占领这个九宫格,最终在9个九宫格中完成井字棋获胜。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int cot;
int first=0;
int DEG=100000;
int n;
int txty;
int ans=0;
bool w;
int tm[10][9];
bool tf[9];
bool flag;
int tp;
int map[10][9];
int line[8][3]={
123
456
789
147
258
369
159
357};
int tem;
int ttem[2][80];
bool fin[9];
int p;
int xy;
int res=0;
int print()
{
system(“cls“);
for (int i=1;i<=3;i++)
{
for (int j=1;j<=3;j++)
{
for (int k=1;k<=3;k++)
{
for(int l=1;l<=3;l++)
{
switch (map[line[i-1][k-1]][line[j-1][l-1]-1])
{
case 0:
{
cout << “. “;
break;
}
case 1:
{
cout << “O “;
break;
}
case 2:
{
cout << “X “;
break;
}
default : cout << “error“;
}
}
cout << “|“ << “ “;
}
cout << endl;
}
cout << “-----------------------“ << endl;
}
return 0;
}
int start()
{
cot=0;
memset(map0sizeof(map));
memset(fin0sizeof(fin));
memset(ttem0sizeof(ttem));
srand((unsigned)time(NULL));
p=5;
cout << “Powered by Li Shiheng“ << endl;
cout << “Algorithm : MCTS“< cout << endl;
cout << “----------------------------HELP--------------------------------“ << endl;
cout << “In fact ten is a super Tic-Tac-Toe.It has 9 blocks each of them has 9 places to play. “ << endl;
cout << “The input should be like a b which a means blockb means place.“<< endl;
cout << “The rule is: you must play in the block that the place which another one plays in points to.“ << endl;
cout << “For example if you play in 9 2 ten must play in the block 2.“ < cout << “If in one block you winthe block is yours. You will play until finish a Tic-Tac-Toe in general“ < cout << “If the block you shuold play in has finishedyou can play everywhere.“<< endl;
system(“pause“);
system(“cls“);
cout << “type in(0 to play first1 to play the second): “;
cin >> first;
char ff;
cout << “Would you set degree?(Recommend not)(Y/N): “;
cin >> ff;
if (ff==‘Y‘)
{
cout << “Degree:(default:100000) “;
cin >> DEG;
}
print();
return 0;
}
int is_win(int mint aint side)
{
int cxd=0;
int k=0;
int l=0;
for (int i=1;i<=8;i++)
{
for (int j=1;j<=3;j++)
{
if (m==1)
{
if(map[a][line[i-1][j-1]-1]==1) k++;
if(map[a][line[i-1][j-1]-1]==2) l++;
}
if (m==2)
{
if(tm[a][line[i-1][j-1]-1]==1) k++;
if(tm[a][line[i-1][j-1]-1]==2) l++;
}
}
if (side==1)
{
if(k>=cxd) cxd = k;
k=0;
}
else
{
if(l>=cxd) cxd = l;
l=0;
}
}
return cxd;
}
int mcts(int uint v)
{
int top=DEG/(81-cot);
int ran=0;
int num=0;
int ans=0;
for (int s=1;s<=top;s++)
{
n=v;
w=0;
tp=u;
ty=v;
memcpy(tffinsizeof(fin));
- 上一篇:L.CPP
- 下一篇:操作系统课程设计之进程调度源代码六种调度算法 c++
相关资源
- VS2013+RPG小游戏
- 用C语言编写的井字棋小游戏
- 斗地主小游戏MFC版源程序
- c++小游戏五子棋,带AI
- MFC实现PopStar小游戏
- ege实现小游戏maincpp
- C++编写的第三人称视角小球Ploygon风格
- C语言经典小程序和C语言编写的小游戏
- C++实现小游戏flappy bird
- C++开发精灵对战小游戏
- 连连看C语言小游戏开发源代码
- C语言实现控制台扫雷小游戏
- c语言编写双向链表的贪吃蛇小游戏
- 3D赛车小游戏(DX学习)
- 用C++实现的经典小游戏源代码
- c++各种小游戏
- 国际象棋小游戏C语言源代码
- C++ Builder 网络小游戏 五子棋
- Qt五子棋小游戏(源码+截图)
- c++猜数小游戏源码
- 用C语言写的一个俄罗斯方块程序
- 推箱子小游戏
- c语言 打地鼠小游戏 入门级
- c++ 推箱子(控制台小游戏)
- 开外挂版走迷宫(c++小游戏源码)
- c++ 彩票小游戏
- c++ 二十四点小游戏源码
- 猜拳小游戏(Microsoft Visual Studio {Vis
- 弹球小游戏(c++源码)
- 是男人就下100层(小游戏源码)
评论
共有 条评论