好的,这是一个相当复杂的代码高尔夫挑战:实施一个黑白棋(奥赛罗)游戏.
以尽可能少的字符执行此操作.
会话应该看起来像这样:
abcdefgh
1
2
3
4 wb
5 bw
6
7
8
b>d3
abcdefgh
1
2
3 b
4 bb
5 bw
6
7
8
Run Code Online (Sandbox Code Playgroud) 我目前正在使用min-max和Alpha-beta修剪为othello开发一个简单的AI.
我的问题与董事会状态的评估功能有关.
我目前正在考虑通过计算来评估它
1)光盘数
2)没有合法行动
3)特定职位的重要性
因此,假设根节点是初始游戏状态.第一个动作是AI的动作,而第二个动作是对手的动作.
0
/ \ AI's Action
1 1
/ \ \ Opponent's action
2 2 2
Run Code Online (Sandbox Code Playgroud)
在节点级别1,我是否会评估我的AI芯片的光盘数量以及它在完成操作后的时间点可以进行的合法移动数量?
在节点级别2,我是否评估对手的筹码的盘数以及在对手完成动作之后它可以进行的合法移动的数量?意思是AI移动 - >对手移动==>此时我评估对手的盘数和对手可以合法的数量.
只是想检查我是否在正确的道路上,因为计算刚刚完成一个动作的玩家的合法移动数量感觉很奇怪.
谢谢和问候,Nat
如果我有一个64长度的java数组i [],有没有一种快速的方法可以找出该数组中的每个位置是否都是"满",而不是循环整个数组?我正在编写一个Reversi AI,我需要知道整个阵列是否已满.
有人可以解释以下return语句的用法/含义:t> 1; (见最后if语句的最后一种方法)
代码来自一个名为"黑白棋"的游戏http://en.wikipedia.org/wiki/Reversi
此方法检查您是否附上其他玩家的石头.
public bool allowed(int x, int y, bool player)
{
int color;
if(player == true) // true = player is blue.
color= 1;
else color= -1;
if(stone[x,y] != 0)
return false;
else
{
for (int dx = -1; dx <= 1; dx ++)
{
for (int dy = -1; dy <= 1; dy ++)
{
if (dx != 0 || dy != 0) // 0, 0 must be skipped, own stone.
{
if (close(color, …Run Code Online (Sandbox Code Playgroud)