Java 中的宾果纸牌游戏

the*_*age 4 java

我用 Java 为我的宾果游戏创建了两种方法。一种方法创建一个新的棋盘,它根据宾果规则 (1-75) 用整数填充宾果棋盘。我的第二种方法生成范围为 1 - 75 的随机数。

public static int drawNum(){
    Random rand = new Random();
    int num = rand.nextInt(75)+1;
    return num;
}

public static void bingoCard(){


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

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

    //create 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要帮助的是,如何检查 drawNum() 方法是否对应于存储在我的 bingoCard() 数组中的任何值?如果是这样,打印出一个填充了整数的新数组。如果满足宾果游戏的条件,那么你赢了。

我希望我不要让它听起来像是我希望你为我做这件事,但我对如何开始编码那部分感到困惑。谢谢你。

Log*_*phy 5

这是我的建议 - 立即学习面向对象编程

我看到您正在使用 JDK 中提供的对象,那么为什么不学习创建自己的对象呢?

使用以下方法 (-) 和成员 (+) 创建两个类(PS。这不是记录代码的正式方式)

BingoCard
    +list of numbers on card
    -reset() : gets new numbers for this card
    -test(BingoDrawer) : Tests to see if this card won on this drawing
    -toString() : returns a String representation of this card

BingoDrawer
    +list of numbers drawn
    -reset() : draws new numbers
    -hasNumber(int number) : tests if this number was drawn
    -toString() : returns a String representation of this drawing
Run Code Online (Sandbox Code Playgroud)

还有一个建议

  • 与其跟踪你用过的东西,不如跟踪你没有用过的东西,它会让事情变得更容易,因为你可以从列表中随机选择东西。与您当前的行动不同,它是从稀薄的空气中选择(一个逻辑数字)并希望(这会导致问题)它不是碰撞

如果你按照我的建议你可以写这样的代码

public static void main(String[] args) {
    BingoCard bc = new BingoCard();
    BingoDrawer bd = new BingoDrawer();
    while(thePlayerWantsToPlay()) { //function to be defined by you
        bc.reset();
        bd.reset();
        System.out.println(bc);
        System.out.println(bd);
        System.out.println(bc.test(bd));
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以更进一步,创建一个BingoGame类并执行我在main其中所做的操作,然后创建一个实例BingoGamestart在该对象上调用某些方法。