我为宾果游戏创建了这个静态方法。
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/