ブログにはblogの良さがある

パソコン、その他、気になったことをまとめていくブログです。低更新。Existence Feat.はるかっか

javaのAWTとSwingを使って神経衰弱を作ってみた2

2014年01月31日 21時57分35秒 | プログラミング

これが実際に私が書いたプログラムです。
荒削りになりますが、一応行けます。
次の章で解説していきますね。


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


class WTest extends JFrame implements ActionListener{
//ボタン
JButton[] bt = new JButton[60]; //カード
Button start = new Button(); //スタート
boolean flg = false, nok =false; //スタート

//ダイアログボックス
Dialog dialog= new Dialog(this);
JRadioButton c1 = new JRadioButton("2",false);
JRadioButton c2 = new JRadioButton("3",false);
JRadioButton c3 = new JRadioButton("4",false);
Button ok;

//カード画像

ImageIcon icon0 = new ImageIcon("shime0.png");
ImageIcon icon1 = new ImageIcon("shime1.png");
ImageIcon icon2 = new ImageIcon("shime2.png");
ImageIcon icon3 = new ImageIcon("shime3.png");
ImageIcon icon4 = new ImageIcon("shime4.png");
ImageIcon icon5 = new ImageIcon("shime5.png");
ImageIcon icon6 = new ImageIcon("shime6.png");
ImageIcon icon7 = new ImageIcon("shime7.png");
ImageIcon icon8 = new ImageIcon("shime8.png");
ImageIcon icon9 = new ImageIcon("shime9.png");
ImageIcon icon10 = new ImageIcon("shime10.png");
ImageIcon icon11 = new ImageIcon("shime11.png");
ImageIcon icon12 = new ImageIcon("shime12.png");
ImageIcon icon13 = new ImageIcon("shime13.png");
ImageIcon icon14 = new ImageIcon("shime14.png");
ImageIcon icon15 = new ImageIcon("shime15.png");

int[] Array = {0,0,0,0,0,0,0,0,0,0, //ランダムに配置する前に初期化
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0};

int[] Array2 = {0,0,0,0,0,0,0,0,0,0, //オープンしているカード 0は裏 1は表
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0};

//2次元配列を一次元に割り当て
int[][] Array3 = {{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},
{31,32,33,34,35,36,37,38,39,40},
{41,42,43,44,45,46,47,48,49,50},
{51,52,53,54,55,56,57,58,59,60}};

int tarn=1,zan=30,nin=0,ptarn=0,hosi=230,f=0; //ゲーム情報
int[] player = {0,0,0,0}; //プレイヤー得点
int tate=0,yoko=0,o=0,cnt=0,trnp=15,c=0; //ランダム配置
int k = 0, open = 0; //カード開く処理
int o1=61, o2=61; //開いてるカード

public static void main(String[] args){
WTest wtest = new WTest();
}

public WTest(){
int x=8,y=30,yc=9;

//メインウィンドウ定義
setTitle("神経衰弱");
setSize(800,650);
setVisible(true);

//カード(ボタン)を宣言・配置
setLayout(null);
for(int i=0; i<60; i++){
bt[i] = new JButton();
bt[i].setSize(60,80);
bt[i].setLocation(x,y);
if(i == yc){
y += 85;
x = 8;
yc +=10;
}else{
x+=60;
}
bt[i].setIcon(icon0);
bt[i].addActionListener(this);
add(bt[i]);
}

repaint();

//スタートボタンを宣言・配置
start = new Button("start");
start.setSize(100,60);
start.setLocation(650,530);
start.addActionListener(this);
add(start);

//ダイアログボックス
dialog.setTitle("人数選択");
dialog.setBounds(280,250,200,100);
dialog.setLayout(new FlowLayout());
Label lab = new Label("プレイ人数を選んでください");
dialog.add(lab);

ButtonGroup bg = new ButtonGroup();
bg.add(c1);
bg.add(c2);
bg.add(c3);

c1.addActionListener(this);
c2.addActionListener(this);
c3.addActionListener(this);

dialog.add(c1);
dialog.add(c2);
dialog.add(c3);

ok = new Button("ok");
ok.addActionListener(this);
dialog.add(ok);

//閉じるボタンを押したときの閉じる処理
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}

//ボタンが押されたときの処理
public void actionPerformed(ActionEvent ae){
//スタートボタンを押したときの処理
if(flg == false && ae.getSource() == start){
//リスタート時初期化
if(tarn > 1){
tarn = 1;
zan = 30;
ptarn = 0;
hosi = 230;
for(f=0; f<4; f++){
player[f] = 0;
}
for(f=0; f<60; f++){
Array[f] = 0;
Array2[f] = 0;
}
for(int h=0; h<60; h++){
if(Array2[h] == 0){
bt[h].setIcon(icon0);
bt[h].setEnabled(true);

}
}
tate = 0;
yoko = 0;
o = 0;
cnt = 0;
c = 0;
k = 0;
open = 0;
o1 = 61;
o2 = 62;
}

//数字をランダムに配置
while(cnt<4){
while(o<trnp){
tate = (int)(Math.random() * (double)6);
yoko = (int)(Math.random() * (double)10);
if(Array[(Array3[tate][yoko]-1)] == 0){
Array[(Array3[tate][yoko]-1)] = ++o;
}
}
o=0;
cnt++;
}

for(int p: Array){
System.out.print(p+",");
c++;
if(c>9){
System.out.print("\n");
c=0;
}
}
dialog.setVisible(true);
flg = true;
start.setLabel("カードを伏せる");
repaint();

//カードを伏せる処理
}else if(o2 != 61 && o1 != o2 && flg == true && ae.getSource() == start){
for(int h=0; h<60; h++){
if(Array2[h] == 0){
bt[h].setIcon(icon0);
}
}
o1 = 61;
o2 = 61;
open = 0;
tarn++;
repaint();

}else if(open < 2 && flg == true && nok == true){
//どのボタンが押されたのかを確認・アイコンを変更する
for(int j=0; j<60; j++){

//当たり判定確認
if(ae.getSource() == bt[j]){

if(open == 0){
o1 = j;
open++;
}else if(open == 1){
open++;
o2 = j;
if(o1 != o2 && Array[o1] == Array[o2]){ //あたりの処理
bt[o1].setEnabled(false);
bt[o2].setEnabled(false);
Array2[o1] = 1;
Array2[o2] = 1;
o1 = 61;
o2 = 61;
open=0;
tarn++;
player[ptarn]++;
zan--;

//ゲームが終了した場合
if(zan == 0){
flg = false;
start.setLabel("スタート");
}

repaint();
}
if(o1 != o2 && Array[o1] != Array[o2]){ //はずれの処理
if(nin-1 > ptarn){
ptarn++;
hosi += 50;
}else{
ptarn = 0;
hosi = 230;
}
}
}
//同じカードを選らんだ場合
if(o1 == o2 && o1 != 61){
open--;
break;
}

//カードを表にする
switch(Array[j]){
case 1:
bt[j].setIcon(icon1);
break;
case 2:
bt[j].setIcon(icon2);
break;
case 3:
bt[j].setIcon(icon3);
break;
case 4:
bt[j].setIcon(icon4);
break;
case 5:
bt[j].setIcon(icon5);
break;
case 6:
bt[j].setIcon(icon6);
break;
case 7:
bt[j].setIcon(icon7);
break;
case 8:
bt[j].setIcon(icon8);
break;
case 9:
bt[j].setIcon(icon9);
break;
case 10:
bt[j].setIcon(icon10);
break;
case 11:
bt[j].setIcon(icon11);
break;
case 12:
bt[j].setIcon(icon12);
break;
case 13:
bt[j].setIcon(icon13);
break;
case 14:
bt[j].setIcon(icon14);
break;
case 15:
bt[j].setIcon(icon15);
break;
default:
}
}
}
}
//ダイアログボックスのOK処理
if(ae.getSource() == c1){
nin = 2;
}else if(ae.getSource() == c2){
nin = 3;
}else if(ae.getSource() == c3){
nin = 4;
}
else if(ae.getSource() == ok){
nok = true;
dialog.setVisible(false);
}
}

public void paint(Graphics g){

super.paint(g);
//ターン表示s
String t1 = String.valueOf(tarn);
g.drawString(t1,680,100);

g.drawString("回目の挑戦",700,100);
g.drawString("点数",750,180);
g.drawString("★",630,hosi);
g.drawString("プレイヤーA:",650,230);
g.drawString("プレイヤーB:",650,280);
g.drawString("プレイヤーC:",650,330);
g.drawString("プレイヤーD:",650,380);
String p1 = String.valueOf(player[0]);
//点数表示
g.drawString(p1,750,230);
String p2 = String.valueOf(player[1]);
g.drawString(p2,750,280);
String p3 = String.valueOf(player[2]);
g.drawString(p3,750,330);
String p4 = String.valueOf(player[3]);
g.drawString(p4,750,380);

g.drawString("残り:",650,500);
String z1 = String.valueOf(zan);
g.drawString(z1,700,500);
g.drawString("組",750,500);
}

}


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« javaのAWTとSwingを使って神... | トップ | javaのAWTとSwingを使って神... »
最新の画像もっと見る

コメントを投稿

プログラミング」カテゴリの最新記事