java - 重复随机整数的宾果卡游戏问题

标签 java

我为宾果游戏创建了这个静态方法。

public static void bingoCard(){

    int [][]card = new int [5][5];
    ArrayList<Integer> alreadyUsed = new ArrayList<Integer>();
    boolean valid = false;

    // First row
    for(int row = 0; row < card.length; row++){
        int tmp = 0;
        while(!valid){
            tmp = (int)(Math.random()*15)+1;
            if(!alreadyUsed.contains(tmp)){
                valid = true;
                alreadyUsed.add(tmp);
            }
        }
        card[row][0] = tmp;
        valid = false;
    }

    // Second row
    for(int row = 0; row < card.length; row++){
        int tmp = 0;
        while(!valid){
            tmp = (int)(Math.random()*15)+1;
            if(!alreadyUsed.contains(tmp)){
                valid = true;
                alreadyUsed.add(tmp);
            }
        }
        card[row][1] = tmp;
        valid = false;
    }

    // Third row
    for(int row = 0; row < card.length; row++){
        int tmp = 0;
        while(!valid){
            tmp = (int)(Math.random()*15)+1;
            if(!alreadyUsed.contains(tmp)){
                valid = true;
                alreadyUsed.add(tmp);
            }
        }
        card[row][2] = tmp;
        valid = false;
    }

    card[2][2] = 0; // The 3rd matrix to the left and right is a 0.

    // Fourth row
    for(int row = 0; row < card.length; row++){
        int tmp = 0;
        while(!valid){
            tmp = (int)(Math.random()*15)+1;
            if(!alreadyUsed.contains(tmp)){
                valid = true;
                alreadyUsed.add(tmp);
            }
        }
        card[row][3] = tmp;
        valid = false;
    }

    // Fifth row
    for(int row = 0; row < card.length; row++){
        int tmp = 0;
        while(!valid){
            tmp = (int)(Math.random()*15)+1;
            if(!alreadyUsed.contains(tmp)){
                valid = true;
                alreadyUsed.add(tmp);
            }
        }
        card[row][4] = tmp;
        valid = false;
    }

    // Creates an array to make title

    String title[] = {"B","I","N","G","O"};
    for(int i = 0; i < title.length;i++){
        System.out.print(title[i] + "\t");
    }

    System.out.println();

    for(int row = 0; row < card.length; row++){
        for(int col = 0; col < card[row].length; col++){
            System.out.print(card[row][col] + "\t");
        }
        System.out.println();
    }
}

在输出中,这段代码输出到这个控制台宾果卡:http://puu.sh/487mz/939c8d7a59.png

我的主要问题是重复的数字。我有兴趣知道如何消除 5x5 数组中的重复数字。谢谢!

第二次编辑:我也对让游戏自己玩感兴趣。意思是,它将提取随机数字并对应于数字是否在棋盘上。如果满足 BINGO 条件,则执行某些操作。有人对此有什么建议吗?

最佳答案

当我编写 BINGO 板时,我创建了一个包含所有可能的唯一值的 ArrayList,然后调用 Collections.shuffle( mylist) 这将随机地重新排序这些值。然后您可以迭代该列表来填充您的矩阵。

只需确保为您制作的每个新棋盘重新洗牌

关于java - 重复随机整数的宾果卡游戏问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18384454/

相关文章:

java - 如何将包包含到查询中?

java - 从基类设置派生类成员

java - 有没有办法在 Selenium 运行时动态获取元素的 xpath

java - 使用 Java 7/Eclipse 3.7.1 的 headless pde 构建失败

java - 在 java 应用程序中实现自定义 jar 时出现错误

java - 在Java程序中执行bat文件

java - Java 中的对象类型转换

java - java中的多线程任务调度器

java - 莫贾拉 2.2.6 和 EL 3.0 : Wrong number of arguments in h:commandButton action attribute

java - 双哈希常数 5?