--/--/-- (--) スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサー広告 |


2011/07/05 (Tue) 【試作版】Javaアプレットでビンゴゲーム

bingoploto2.jpg

 Java応用編の最終課題です。まだリセット(ゲーム再プレイ)の動作がうまくいかず(演習課題としてはリセット動作は不要なので完成済)、さらにコードのスリム化やコメントの付加などを行っていない試作段階ですが、現時点でのコードを晒してみます。Eclipseのコンソールが文字化けするのは何とかならないのかしら(文字コードに操作を加えてコンソールが文字化けしないようにするとアプレットビューアの日本語が化けてしまいます)。

ソースコードは「続きを読む」から。
(プロトタイプなので色分け等はしておりませんご了承下さいm)



import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
public class Bingo extends Applet implements ActionListener {
int num;
int count = 0;
int tosen;
int[] c = new int[12]; // フラグ管理カウンター
int flag;
boolean flag2;
Panel panel;
Panel panel2;
Label label;
Button[] b = new Button[25];
Button start = new Button("START");
Button reset = new Button("RESET");
Button bb1;
ArrayList<Integer> b1 = new ArrayList<Integer>(); // 1-15の数字を保持
ArrayList<Integer> b2 = new ArrayList<Integer>(); // 16-30の数字を保持
ArrayList<Integer> b3 = new ArrayList<Integer>(); // 31-45の数字を保持
ArrayList<Integer> b4 = new ArrayList<Integer>(); // 46-60の数字を保持
ArrayList<Integer> b5 = new ArrayList<Integer>(); // 61-75の数字を保持
int[][] bingo = new int[5][5]; // 数字の再配置用
int[][] fin = new int[5][12]; // ビンゴの組み合わせ
ArrayList<Integer> bingo1 = new ArrayList<Integer>(25); // ビンゴカードに配置する数字を格納
ArrayList<Integer> bingo2 = new ArrayList<Integer>(75); // 抽選用数字を格納
ArrayList<Integer> fin2 = new ArrayList<Integer>(); // 当選位置を格納
public void init() {
reset();
}
public void reset() {
this.removeAll();
setSize(249, 299);
setSize(250, 300);
setLayout(new BorderLayout());
label = new Label("B I N G O");
panel = new Panel();
panel2 = new Panel();
label.setAlignment(label.CENTER);
panel2.add(start);
panel2.add(reset);
add(label, BorderLayout.NORTH);
add(panel, BorderLayout.CENTER);
add(panel2, BorderLayout.SOUTH);
start.addActionListener(this);
reset.addActionListener(this);
panel.setLayout(new GridLayout(6, 5));
panel.add(new Button("B")).setBackground(Color.CYAN);
panel.add(new Button("I")).setBackground(Color.GREEN);
panel.add(new Button("N")).setBackground(Color.MAGENTA);
panel.add(new Button("G")).setBackground(Color.ORANGE);
panel.add(new Button("O")).setBackground(Color.PINK);
// リセット時の値とフラグのクリア
b1.clear();
b2.clear();
b3.clear();
b4.clear();
b5.clear();
bingo1.clear();
bingo2.clear();
fin2 = new ArrayList<Integer>();
count = 0;
flag = 0;
flag2 = false;
// リストに列の範囲に応じた数字を格納する
for (int i = 1; i <= 75; i++) {
if (i <= 15) {
b1.add(i);
} else if (i > 15 && i <= 30) {
b2.add(i);
} else if (i > 30 && i <= 45) {
b3.add(i);
} else if (i > 45 && i <= 60) {
b4.add(i);
} else if (i > 60 && i <= 75) {
b5.add(i);
}
bingo2.add(i);
}
// リストをシャッフルする
Collections.shuffle(b1);
Collections.shuffle(b2);
Collections.shuffle(b3);
Collections.shuffle(b4);
Collections.shuffle(b5);
Collections.shuffle(bingo2);
bingo = new int[5][5];
// 数字をリストから配列に入れ替える
for (int i = 0; i < 5; i++) {
bingo[i][0] = b1.get(i);
bingo[i][1] = b2.get(i);
bingo[i][2] = b3.get(i);
bingo[i][3] = b4.get(i);
bingo[i][4] = b5.get(i);
}
bingo[2][2] = 0;
// 配列をArrayListに戻す
for (int i = 0; i < 25; i++) {
if (i < 5) {
bingo1.add(bingo[0][i]);
} else if (i > 4 && i < 10) {
bingo1.add(bingo[1][i - 5]);
} else if (i > 9 && i < 15) {
bingo1.add(bingo[2][i - 10]);
} else if (i > 14 && i < 20) {
bingo1.add(bingo[3][i - 15]);
} else if (i > 19 && i < 25) {
bingo1.add(bingo[4][i - 20]);
}
}
// 数字をボタンに入れていく
for (int i = 0; i < 25; i++) {
if (i == 12) {
b[i] = new Button("FREE");
panel.add(b[i]);
} else {
b[i] = new Button(String.valueOf(bingo1.get(i)));
panel.add(b[i]);
}
}
// 当選パターンを配列に格納する
for (int i = 0; i < 5; i++) {
fin[i][0] = i;
fin[i][1] = 5 + i;
fin[i][2] = 10 + i;
fin[i][3] = 15 + i;
fin[i][4] = 20 + i;
fin[i][5] = 5 * i;
fin[i][6] = 1 + 5 * i;
fin[i][7] = 2 + 5 * i;
fin[i][8] = 3 + 5 * i;
fin[i][9] = 4 + 5 * i;
fin[i][10] = 6 * i;
fin[i][11] = 4 * i;
}
// 中央のFREEに穴を開けておく
fin2.add(12);
} // initメソッド終
public void getNum() {
num = bingo2.get(count);
System.out.println((count + 1) + "回目:抽選数字:" + num);
if (flag2 == true) {
label.setText((count + 1) + "回目:抽選数字:" + String.valueOf(num)
+ ":リーチ!");
} else {
label.setText((count + 1) + "回目:抽選数字:" + String.valueOf(num));
}
count++;
}
public int check(int i) {
if (bingo1.contains(i)) {
System.out.println("当選");
for (int t = 0; t < 25; t++) {
if (t == 12) {
continue;
}
if (i == Integer.valueOf(b[t].getActionCommand())) {
b[t].setBackground(Color.GRAY);
return t;
}
}
}
return 100;
}
public int bingo(int a) {
fin2.add(a);
for (int i = 0; i < 12; i++) {
c[i] = 0;
}
for (int i = 0; i < 5; i++) {
if (fin2.contains(fin[i][0])) {
c[0]++;
System.out.println("c[0]=" + c[0]);
if (c[0] == 5) {
b[0].setBackground(Color.yellow);
b[1].setBackground(Color.yellow);
b[2].setBackground(Color.yellow);
b[3].setBackground(Color.yellow);
b[4].setBackground(Color.yellow);
System.out.println("ビンゴ1");
return 2;
} else if (c[0] == 4 && flag2 == false) {
System.out.println("リーチ");
return 1;
}
}
if (fin2.contains(fin[i][1])) {
c[1]++;
if (c[1] == 5) {
b[5].setBackground(Color.yellow);
b[6].setBackground(Color.yellow);
b[7].setBackground(Color.yellow);
b[8].setBackground(Color.yellow);
b[9].setBackground(Color.yellow);
System.out.println("ビンゴ2");
return 2;
} else if (c[1] == 4 && flag2 == false) {
System.out.println("リーチ");
return 1;
}
}
if (fin2.contains(fin[i][2])) {
c[2]++;
if (c[2] == 5) {
b[10].setBackground(Color.yellow);
b[11].setBackground(Color.yellow);
b[12].setBackground(Color.yellow);
b[13].setBackground(Color.yellow);
b[14].setBackground(Color.yellow);
System.out.println("ビンゴ3");
return 2;
} else if (c[2] == 4 && flag2 == false) {
System.out.println("リーチ");
return 1;
}
}
if (fin2.contains(fin[i][3])) {
c[3]++;
if (c[3] == 5) {
b[15].setBackground(Color.yellow);
b[16].setBackground(Color.yellow);
b[17].setBackground(Color.yellow);
b[18].setBackground(Color.yellow);
b[19].setBackground(Color.yellow);
System.out.println("ビンゴ4");
return 2;
} else if (c[3] == 4 && flag2 == false) {
System.out.println("リーチ");
return 1;
}
}
if (fin2.contains(fin[i][4])) {
c[4]++;
if (c[4] == 5) {
b[20].setBackground(Color.yellow);
b[21].setBackground(Color.yellow);
b[22].setBackground(Color.yellow);
b[23].setBackground(Color.yellow);
b[24].setBackground(Color.yellow);
System.out.println("ビンゴ5");
return 2;
} else if (c[4] == 4 && flag2 == false) {
System.out.println("リーチ");
return 1;
}
}
if (fin2.contains(fin[i][5])) {
c[5]++;
if (c[5] == 5) {
b[0].setBackground(Color.yellow);
b[5].setBackground(Color.yellow);
b[10].setBackground(Color.yellow);
b[15].setBackground(Color.yellow);
b[20].setBackground(Color.yellow);
System.out.println("ビンゴ6");
return 2;
} else if (c[5] == 4 && flag2 == false) {
System.out.println("リーチ");
return 1;
}
}
if (fin2.contains(fin[i][6])) {
c[6]++;
if (c[6] == 5) {
b[1].setBackground(Color.yellow);
b[6].setBackground(Color.yellow);
b[11].setBackground(Color.yellow);
b[16].setBackground(Color.yellow);
b[21].setBackground(Color.yellow);
System.out.println("ビンゴ7");
return 2;
} else if (c[6] == 4 && flag2 == false) {
System.out.println("リーチ");
return 1;
}
}
if (fin2.contains(fin[i][7])) {
c[7]++;
if (c[7] == 5) {
b[2].setBackground(Color.yellow);
b[7].setBackground(Color.yellow);
b[12].setBackground(Color.yellow);
b[17].setBackground(Color.yellow);
b[22].setBackground(Color.yellow);
System.out.println("ビンゴ8");
return 2;
} else if (c[7] == 4 && flag2 == false) {
System.out.println("リーチ");
return 1;
}
}
if (fin2.contains(fin[i][8])) {
c[8]++;
if (c[8] == 5) {
b[3].setBackground(Color.yellow);
b[8].setBackground(Color.yellow);
b[13].setBackground(Color.yellow);
b[18].setBackground(Color.yellow);
b[23].setBackground(Color.yellow);
System.out.println("ビンゴ9");
return 2;
} else if (c[8] == 4 && flag2 == false) {
System.out.println("リーチ");
return 1;
}
}
if (fin2.contains(fin[i][9])) {
c[9]++;
if (c[9] == 5) {
b[4].setBackground(Color.yellow);
b[9].setBackground(Color.yellow);
b[14].setBackground(Color.yellow);
b[19].setBackground(Color.yellow);
b[24].setBackground(Color.yellow);
System.out.println("ビンゴ10");
return 2;
} else if (c[9] == 4 && flag2 == false) {
System.out.println("リーチ");
return 1;
}
}
if (fin2.contains(fin[i][10])) {
c[10]++;
if (c[10] == 5) {
b[0].setBackground(Color.yellow);
b[6].setBackground(Color.yellow);
b[12].setBackground(Color.yellow);
b[18].setBackground(Color.yellow);
b[24].setBackground(Color.yellow);
System.out.println("ビンゴ11");
return 2;
} else if (c[10] == 4 && flag2 == false) {
System.out.println("リーチ");
return 1;
}
}
if (fin2.contains(fin[i][11])) {
c[11]++;
if (c[11] == 5) {
b[4].setBackground(Color.yellow);
b[8].setBackground(Color.yellow);
b[12].setBackground(Color.yellow);
b[16].setBackground(Color.yellow);
b[20].setBackground(Color.yellow);
System.out.println("ビンゴ12");
return 2;
} else if (c[11] == 4 && flag2 == false) {
System.out.println("リーチ");
return 1;
}
}
}
return 0;
}
public void actionPerformed(ActionEvent a) {
String str = a.getActionCommand();
// if (count < 75) { // 取得できる配列要素数の最大値
if (flag != 2) { // ビンゴが出た時点で終了
if (str.equals("START")) {
getNum();
tosen = check(num);
System.out.println("当選箇所:" + tosen);
if (tosen != 100) {
flag = bingo(tosen);
}
if (flag == 1) {
label.setText("リーチ!");
flag = 0;
flag2 = true;
}
if (flag == 2) {
label.setText(count + "回目でビンゴ!");
return;
}
repaint();
}
} else {
}
if (str.equals("RESET")) {
reset();
}
}
}

プログラミング | trackback(0) | comment(0) |


<<鳶と烏のコントラスト | TOP | Javaでロト6シミュレーターを作る>>

comment











管理人のみ閲覧OK


trackback

trackback_url
http://kononushi.blog46.fc2.com/tb.php/528-05e1a0bb

| TOP |

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。