/*------------------- ex8_5.java 2次元配列でビンゴを --------------------*/ import java.util.Random; import java.util.Scanner; class ex8_5 { public static void main(String[] args) { int num = 5; // ビンゴ版サイズ(5×5) int a[][] = new int[num][num]; // ビンゴ版用2次元配列 int b[] = new int[num*num]; // ビンゴボール用配列 int i, j, k = 0, tmp, r1, r2, c1, c2, usr; Random rnd = new Random(); Scanner stdIn = new Scanner(System.in); for (i = 0; i < num; i++) { for (j = 0; j < num; j++) { a[i][j] = i*num + j+1+10; // ビンゴ版:初期化(11〜35を割り当て) } } for (i = 0; i < num*num; i++) { // ビンゴボール:初期化(11〜35を割り当て) b[i] = i+11; } while (k<10000) { // ビンゴゲームの初期設定(数値のシャッフル10000回) r1 = rnd.nextInt(5); // 0〜4の整数乱数を生成 r2 = rnd.nextInt(5); c1 = rnd.nextInt(5); c2 = rnd.nextInt(5); tmp = a[r1][r2]; // 数値のスワップ:ビンゴ版[r1,r2]と[c1,c2]を入れ替え a[r1][r2] = a[c1][c2]; a[c1][c2] = tmp; r1 = rnd.nextInt(25); // 0〜24の整数乱数を生成 c1 = rnd.nextInt(25); tmp = b[r1]; // 数値のスワップ:ビンゴボール[r1]と[c1]を入れ替え b[r1] = b[c1]; b[c1] = tmp; k++; } /* ビンゴゲームスタート */ System.out.println("-------- Bingo Game! ---------"); for (i = 0; i < num; i++) { for (j = 0; j < num; j++) { System.out.print(" " + a[i][j]); // i行j列を表示 } System.out.println(); } System.out.println("------------------------------"); for (i = 0; i < num*num; i++) { System.out.print(" " + (i+1) + "回目の当たり数字は…… " + b[i]); System.out.print(" ビンゴ? [Yes, Bingo! = 1, No = 0] --> "); usr = stdIn.nextInt(); if (usr == 1) { System.out.println("\n★☆★ Bingo! Congratulations ☆★☆\n"); break; } } if (i >= num*num) { System.out.println("\n玉切れです.ゲーム・オーバー\n"); } } }