java - 连接4对电脑

标签 java random

好吧,我是个初学者,正在编写 connect 4 游戏。我已经对所有内容进行了编码,以便两个玩家可以互相对战,但我想添加一个与计算机对战的功能。

我不需要它非常智能并找出放置该零件的最佳位置,我只需要使用像随机函数这样简单的东西来放置它,但我不知道如何做到这一点。

这是我的游戏基本结构代码:

{
    makeBoard();

    System.out.println("Choose 0 - 5 to pick which column to drop your piece!");
    System.out.println("R is red and Y is yellow.");
    System.out.println("Player 1, you are red. Player 2, you are yellow.");
    System.out.println("Good luck!");

    printBoard();

    boolean flag = true;

    while(flag)
    {
        dropRed();
        printBoard();

        if(!redCheck())
        {
            flag = false;
            break;
        } //check r


        dropYellow();
        printBoard();


        if(!yellowCheck())
        {
            flag = false;
            break;
        } //check y

    } // closes while

感谢任何指导,如果您想查看更多代码,请告诉我,谢谢!

最佳答案

I just need to use something as simple as the random function

那么在公共(public) Java API 中查找它可能是个好主意。我真的没有空! https://docs.oracle.com/javase/8/docs/api/java/util/Random.html

下一步是决定如何找到空闲的地方。

显而易见的方法是简单地使用随机类来获取一些坐标并检查它们是否仍然空闲。这有一些缺点,特别是即使有可用的位置,它也有可能永远不会成功。毕竟是随机选择的...

我建议采用一种更像面向对象的方法。

这意味着您拥有可用坐标的列表(而不是数组!)。为此,您需要一个自定义类(数据传输对象 DTO)来保存 XY 值。

当真正的玩家轮到你时,你可以从这个列表中删除他的选择。 (Java 中数组不是动态的)

随机玩家可以将 nextInt(LIMIT) 方法与列表 size() getter 结合使用,从可用位置列表中获取随机值。

每一轮都会缩短列表,当列表为空时(您可以使用 empty() 方法检查),gane 就结束了。

关于java - 连接4对电脑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41264420/

相关文章:

c# - 这是生成一串随机字符的好方法吗?

python - 如何创建空词典列表并填充后记?

javascript - 在 Javascript 中生成一个介于 2 个值和 2 个小数位之间的随机数

Java 使用特定格式的 Level-Order 打印二叉树

java - 运行测试用例时无法加载 ApplicationContext

java - 破解编码面试链表 Q2

java - Neo4j 原生 Java : Creating a new database in memory rather than hard disk

java - ListView 项目不响应点击

java - 最佳 Java 随机种子

random - 使用 Erdős–Rényi 模型检查图是否是随机的?