06
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<< >>


--.--.-- *--*

スポンサーサイト

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

2011.06.07 *Tue*

パネルゲーム作成

http://www.megaupload.com/?d=8DC3ZRB6

ZIPファイルはここに。テキストドキュメントでソースも入ってます。

ボタンを正方形に並べ、クリックして色を変えて色をそろえる結構有名なゲーム。
そのままじゃちょっとつまらないのでSEつけてみました。

初めてゲーム作ったならこんなもんかなー。

以下ソース
//ゲーム自体のソース、クリアーダイヤログのソース

package gamesorse;

import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class GameSt extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;

Random rdm = new Random();
int x = SetDlg.x;
int y = 0;
JButton[][] button = new JButton[x][x];
boolean[][] bool = new boolean[x][x];
JButton cpb = Clear.next;
ClassLoader load = getClass().getClassLoader();
AudioClip btnse = Applet.newAudioClip(load.getResource("se/b_001.wav"));

void buttonset(int i, int j) {
y = 0;
for (i = 0; i < x; i++) {
for (j = 0; j < x; j++) {
button[i][j] = new JButton();
int n = rdm.nextInt(2);
if (n == 0) {
button[i][j].setBackground(Color.blue);
bool[i][j] = true;
} else {
button[i][j].setBackground(Color.red);
bool[i][j] = false;
}
if (bool[i][j] == true) {
y++;
}
}
}
}

void dfltbtn(int i, int j) {
if (bool[i][j]) {
button[i][j].setBackground(Color.red);
bool[i][j] = false;
} else {
button[i][j].setBackground(Color.blue);
bool[i][j] = true;
}
}

void Lbtn(int i, int j) {
if (j != 0) {
j--;
dfltbtn(i, j);
}
}

void Rbtn(int i, int j) {
if (j != x - 1) {
j++;
dfltbtn(i, j);
}
}

void Upbtn(int i, int j) {
if (i != 0) {
i--;
dfltbtn(i, j);
}
}

void Downbtn(int i, int j) {
if (i != x - 1) {
i++;
dfltbtn(i, j);
}
}

void Clear() {
int check = 0;
for (int i = 0; i < x; i++) {
for (int j = 0; j < x; j++) {
if (bool[i][j]) {
check++;
}
}
}
if (check == x * x) {
new Clear();
}
}

GameSt() {
setTitle("ボタンゲーム");
setSize(new Dimension(x * 100, x * 100));
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new GridLayout(x, x));

buttonset(0, 0);
if (y == x * x) {
do {
buttonset(0, 0);
} while (y == x * x);
}
for (int i = 0; i < x; i++) {
for (int j = 0; j < x; j++) {
add(button[i][j]);
button[i][j].addActionListener(this);
}
}
cpb.addActionListener(this);

setVisible(true);
}

public void actionPerformed(ActionEvent arg0) {
for (int i = 0; i < x; i++) {
for (int j = 0; j < x; j++) {
if (arg0.getSource() == button[i][j]) {
dfltbtn(i, j);
Lbtn(i, j);
Rbtn(i, j);
Upbtn(i, j);
Downbtn(i, j);
Clear();
btnse.play();
}
}
}
if (arg0.getSource() == cpb) {
this.dispose();
}
}
}

class Clear extends JDialog implements ActionListener {
private static final long serialVersionUID = 1L;

JLabel label = new JLabel();
static JButton next = new JButton();
JButton finish = new JButton();
ClassLoader load = getClass().getClassLoader();
AudioClip clearse = Applet.newAudioClip(load.getResource("se/b_016.wav"));

Clear() {
setTitle("CLEAR!");
setSize(new Dimension(200, 100));
setLayout(new FlowLayout());

label.setText("おめでとう!クリアーです!");
next.setText("もう一回");
finish.setText("終わる");
next.addActionListener(this);
finish.addActionListener(this);

add(label);
add(next);
add(finish);

setVisible(true);
clearse.play();
}

public void actionPerformed(ActionEvent arg0) {
if (arg0.getSource() == next) {
new StWin();
this.dispose();
}
if (arg0.getSource() == finish) {
System.exit(0);
}
}
}




//スタート時のセット画面ソース

package gamesorse;

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class StWin extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;

JLabel label = new JLabel();
JButton stbutton = new JButton();
JButton setbutton = new JButton();

StWin() {
setTitle("ボタンゲーム");
setSize(new Dimension(400, 160));
setLayout(new FlowLayout());
setDefaultCloseOperation(EXIT_ON_CLOSE);

label.setText("---このゲームの説明---"
+ "このゲームはボタンの色をすべてそろえたらクリアです"
+ "クリックしたボタンとその上下左右のボタンの色が反転します"
+ "ボタン数を設定しなかった場合、3*3の配置になります
");
stbutton.setText("ゲームスタート");
setbutton.setText("設定");
stbutton.addActionListener(this);
setbutton.addActionListener(this);

add(label);
add(setbutton);
add(stbutton);

setVisible(true);
}

public static void main(String[] args) {
new StWin();
}

public void actionPerformed(ActionEvent arg0) {
if (arg0.getSource() == setbutton) {
new SetDlg();
} else if (arg0.getSource() == stbutton) {
new GameSt();
this.dispose();
}
}
}

class SetDlg extends JDialog implements ActionListener {
private static final long serialVersionUID = 1L;

JLabel label = new JLabel();
static JButton button = new JButton();
static JTextField field = new JTextField();
static int x = 3;

SetDlg() {
setTitle("設定");
setSize(new Dimension(400, 70));
setLayout(new FlowLayout());

label.setText("希望の一辺のボタン数を入力");
button.setText("確定");
button.addActionListener(this);
field.setPreferredSize(new Dimension(30, 30));

add(label);
add(field);
add(button);

setVisible(true);
}

public void actionPerformed(ActionEvent e) {
String fld = field.getText();
try {
x = Integer.parseInt(fld);
setVisible(false);
} catch (Exception err) {
new ErrDlg();
}
}
}

class ErrDlg extends JDialog implements ActionListener {
private static final long serialVersionUID = 1L;

JLabel label = new JLabel();
JButton button = new JButton();

ErrDlg() {
setTitle("エラー!!");
setSize(new Dimension(200, 100));
setLayout(new FlowLayout());

label.setText("半角数字で入力してください");
button.setText("OK");
button.addActionListener(this);

add(label);
add(button);

setVisible(true);
}

public void actionPerformed(ActionEvent arg0) {
setVisible(false);
}
}



P.S.
なんかタブスペースが反映されない模様。まあいいかどうせコンだけだ
Permalink *  CM(0) *  TB(2) *  EDIT * ▲TOP

COMMENT

Comment Form


秘密にする
 


TRACKBACK

TrackBack List

管理人の承認後に表示されます
2012/10/26(金) 19:15:54 | [Del
管理人の承認後に表示されます
2012/10/26(金) 19:15:54 | [Del

Twitter



プロフィール

垂水杉

Author:垂水杉
J-POPは90年代だって!
どうしてみんなわかってくれない!



FC2カウンター



最新記事



最新コメント



カテゴリ

未登録 (2)
日記・趣味 (47)
DM (67)
大会レポート (3)
バトン (2)
MHF (2)



リンク



カレンダー

05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -



RSSリンクの表示



QRコード

QRコード



Copyright © 怠惰な人間のアレなブログ All Rights Reserved.

テンプレート配布者: サリイ   素材: Bee  ・・・   
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。