〇言語
・Java
〇実現したいこと。
・ビンゴ表に表示される乱数が被らないように表示させ、ビンゴ表を完成させたいです。
〇前提
javaでビンゴ表の作成~ビンゴまでの流れを作成しています。
※
➀B行(1~15), I行(16~30), N行(31~45), G行(46~60), O行(61~75)の数字をランダムに表示させる。
②Enterキーを押すたびに1~75までの数字をランダムに出し、当たればHIT、外れはDeviate
を表示させ、現在のカードを表示。
③リーチ数の表示、ビンゴしたらcongratulationを表示。
〇不明点
・ビンゴ表の作成を、for文、Math.randomを使い、表示させているのですが、
ランダムで出てくる数字が被ってしまう問題点があります。
数字が被らずにビンゴ表に表示をさせる方法が分からないため、教えていただきたいです。
〇作成中のソースコード
import java.util.Scanner;
class Bingo{
public static void main(String[] args){
int[][] bigoCard = new int[5][5];
int a = 15;
int b = 1;
int random = 0;
System.out.println("--------------------------");
System.out.println("| B | I | N | G | O |");
System.out.println("--------------------------");
for (int score1 = 0 ; score1 <= 4 ; score1 ++){
for (int score2 = 0 ; score2 <= 4 ; score2 ++){
random = (int)(Math.random() * a) + b;
bigoCard[score1][score2] = random;
}
b = b + 15;
}
for (int score1 = 0 ; score1 <= 4 ; score1 ++){
for (int score2 = 0 ; score2 <= 4 ; score2 ++){
if(score1 == 2 && score2 == 2){
System.out.print("| ■ ");
}else{
String str = String.format("%2s", bigoCard[score2][score1]);
System.out.print("| " + str + " ");
}
}
System.out.println("|");
System.out.println("--------------------------");
}
Scanner scanner = new Scanner(System.in);
int[] list = new int[75];
int count = 0;
int congratulation = 0;
while(congratulation == 0){
for(int i = 0 ; i < 75 ; i ++){
int random1 = (int)((Math.random() * 75) + 1);
for(int j = 0 ; j < 75 ; j ++){
if(list[i] == random1){
count = count + 1;
}
}
if(count > 0){
i = i - 1;
count = 0;
continue;
}else{
list[i] = random1;
String enter = scanner.nextLine();
System.out.println("出た数字" + list[i]);
int count1 = 1;
for (int score1 = 0 ; score1 <= 4 ; score1 ++){
for (int score2 = 0 ; score2 <= 4 ; score2 ++) {
if(bigoCard[score1][score2] == list[i]){
bigoCard[score1][score2] = 0;
count1 = 0;
}
}
}
if(count1 == 0){
System.out.println("HIT!");
}else if(count1 == 1){
System.out.println("Deviate!");
}
System.out.println("--------------------------");
System.out.println("| B | I | N | G | O |");
System.out.println("--------------------------");
for (int score1 = 0 ; score1 <= 4 ; score1 ++){
for (int score2 = 0 ; score2 <= 4 ; score2 ++){
if(score1 == 2 && score2 == 2){
System.out.print("| ■ ");
}else if(bigoCard[score2][score1] == 0){
System.out.print("| ■ ");
}else{
String str = String.format("%2s", bigoCard[score2][score1]);
System.out.print("| " + str + " ");
}
}
System.out.println("|");
System.out.println("--------------------------");
}
int tate = 5;
int yoko = 5;
int naname1 = 5;
int naname2 = 5;
int reach = 0;
for (int score1 = 0 ; score1 <= 4 ; score1 ++){
for (int score2 = 0 ; score2 <= 4 ; score2 ++){
if(bigoCard[score1][score2] == 0){
tate = tate - 1;
}
}
if(tate == 1){
reach = reach + 1;
}else if(tate == 0){
congratulation = congratulation + 1;
}
tate = 5;
}
for (int score1 = 0 ; score1 <= 4 ; score1 ++){
for (int score2 = 0 ; score2 <= 4 ; score2 ++) {
if(bigoCard[score2][score1] == 0){
yoko = yoko - 1;
}
}
if(yoko == 1){
reach = reach + 1;
}else if(yoko == 0){
congratulation = congratulation + 1;
}
yoko = 5;
}
int score2 = 0;
for (int score1 = 0 ; score1 <= 4 ; score1 ++){
if(bigoCard[score2][score1] == 0){
naname1 = naname1 - 1;
}
if(naname1 == 1){
reach = reach + 1;
}else if(naname1 == 0){
congratulation = congratulation + 1;
}
score2 = score2 + 1;
}
int score1 = 4;
for (int score3 = 4 ; score3 >= 0 ; score3 --){
if(bigoCard[score3][score1] == 0){
naname2 = naname2 - 1;
}
if(naname2 == 1){
reach = reach + 1;
}else if(naname2 == 0){
congratulation = congratulation + 1;
}
score1 = score1 - 1;
}
if(reach >= 1 && congratulation == 0){
System.out.println("リーチ数:" + reach);
}
}
if(congratulation > 0){
System.out.println("congratulation!!");
}
}
}
}
}
0 コメント