Java n尺寸Tic Tac Toe图的解决方案(策略)
据我所知,蒂克塔克托是一个解决了的游戏。我想为电脑玩家制定一个策略,在这个策略的基础上,他将决定在哪里(在哪个基础上)传球 在我的游戏中,游戏板是:Java n尺寸Tic Tac Toe图的解决方案(策略),java,tic-tac-toe,strategy-pattern,Java,Tic Tac Toe,Strategy Pattern,据我所知,蒂克塔克托是一个解决了的游戏。我想为电脑玩家制定一个策略,在这个策略的基础上,他将决定在哪里(在哪个基础上)传球 在我的游戏中,游戏板是: Field[][] fields; //which has size n x n, definition on fields is at the bottom: n值可能为3,4,5。我发现一些策略只适用于3x3版本 计算机应该使用什么策略来获胜 字段可以有状态:空、交叉或圆 import java.awt.BasicStroke; import
Field[][] fields; //which has size n x n, definition on fields is at the bottom:
n值可能为3,4,5。我发现一些策略只适用于3x3版本
计算机应该使用什么策略来获胜
字段可以有状态:空、交叉或圆
import java.awt.BasicStroke;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.JButton;
public class Field extends JButton {
public final static int PREFERRED_SIZE = 100;
public final static int EMPTY = 1, CROSS = 2, CIRCLE = 4;
private int state;
public Field() {
state = EMPTY;
}
public void setState(int state) {
if(state != EMPTY) {
this.state = state;
setEnabled(false);
}
}
public void getState(){return state;}
public Dimension getPreferredSize() {
return new Dimension(PREFERRED_SIZE, PREFERRED_SIZE);
}
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setStroke(new BasicStroke(4));
int shorterEdge = (int) (Math.min(getWidth(), getHeight()));
int startXY = (int) (1d / 5d * shorterEdge);
if(state == CIRCLE) {
int ovalSize = (int) (3d / 5d * shorterEdge);
g2d.drawOval(startXY, startXY, ovalSize, ovalSize);
System.out.println(getWidth() + " x " + getHeight());
} else if(state == CROSS) {
g2d.drawLine(startXY, startXY, shorterEdge - startXY, shorterEdge - startXY);
g2d.drawLine(shorterEdge - startXY, startXY, startXY, shorterEdge - startXY);
}
}
}
由于Stack Overflow是一个编程帮助台,而不是一个游戏策略站点,因此以下是一种以编程方式生成策略的方法: 步骤1:将可能的游戏状态建模为 步骤2:将游戏树的叶子节点标记为赢、输或平 第3步:每当轮到计算机时,使用a沿游戏树向下移动,选择对计算机有益的选项,同时假设其他玩家也使用最小轴(胜利比平局好,平局比失败好)
一切都结束了。这就是为一个像tic-tac-toe这样简单的游戏创建人工智能所需要的全部。只要看看这棵树,哪根树枝肯定是胜利的,哪根树枝肯定是失败的,就选最好的。为了额外的练习和效率,使minimax部分更快一些,尽管使用小的tic-tac-toe板,这在实践中并不重要。我是否误解了什么,或者你是在要求tic-tac-toe策略?@kviiri是的,我知道,已经有一个标签tic-tac-toe了。我应该在哪里问这个问题?我不知道,但是堆栈溢出并不是要求游戏策略的地方。然而,我可以帮助你制定策略——见我的答案。使用它很容易创建一个工作tic-tac-toe AI。