パソコン作法

情報系の紹介をします

Javaでミニゲームを作ろう 4:じゃんけんゲームを作ろう 前編

 f:id:PCDiary:20180721180624p:plain

カイ:ジョンさん、今回は、じゃんけんゲームを作るんでしたよね?どんな設定で作るんですか?

f:id:PCDiary:20180721180655p:plain

ジョン:そうだね、「グー、チョキ、パー」のボタンを選択して、それで勝敗を決める設定で作ってみよう。前編、中編、後編に分けて説明するよ。

 

 

1.じゃんけんゲームの見本

まず始めに、完成の見本を見てください。これを参考にしてソースコードを書いていきます。

1.タイトル画面

タイトル
プログラムを実行したときに、この画面が出るようにします。スタートボタンを押すと「2.手の選択画面」に画面が変わります。

2.手の選択画面

手の選択
画面に出てる「グー、チョキ、パー」 の画像のボタンを押すと、自分の手が決まり、「3.勝敗画面」に移ります。

3.勝敗画面

勝敗
「2.手の選択画面」で選択した自分の手と、ランダムに決めた相手の手を比べて勝敗を決めます。そして、押すと「1.タイトル画面」に移る「もう一度遊ぶ」ボタンを表示します。

 

2.じゃんけんゲームの作り方

それではまず、「1.タイトル画面」を作ってみます。以下のソースコードをコピペして実行してください。

package janken;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Janken extends JFrame implements ActionListener {
JPanel p=new JPanel();
JLabel label=new JLabel[5];
JButton button=new JButton[4];

public static void main(String args) {
Janken frame=new Janken("じゃんけんゲーム");
frame.setVisible(true);
}

Janken(String title){
int x;
setTitle(title);
setBounds(100,100,300,250);
setSize(1000,800);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
p.setLayout(null);

for(x=0; x<label.length; x++){//1
label[x] = new JLabel();
label[x].setFont(new Font("MS ゴシック", Font.BOLD, 60));
p.add(label[x]);
if (x > 0) {
label[x].setFont(new Font("MS ゴシック", Font.BOLD, 30));
}
}

for(x=0; x<button.length; x++){//2
button[x] = new JButton();
button[x].setFont(new Font("MS ゴシック", Font.BOLD, 32));
button[x].addActionListener(this);
p.add(button[x]);
}

button[0].setText("スタート");//3
label[0].setText("じゃんけんゲーム");
button[0].setBounds(340, 470, 300, 100);
label[0].setBounds(250, 10, 700, 400);

getContentPane().add(p);
}

@Override
public void actionPerformed(ActionEvent e) {//4

}
}

おそらく、以下の画面が出てくるはずです。

タイトル

前の章で解説しているメソッドだけを使っているので、簡単に説明します。

//1があるところを見てください。for構文を使って、配列 labelの要素の分だけループさせています。配列 labelは、クラス名の下のあたりで作っています。青色の部分です。要素が、4つとか5つになっていますが、今は1つずつしか使いません。

JlabelやJButtonの配列を作るときは一つ注意点があります。それは、配列の要素を一つひとつインスタンス化することです。//1では、label[x] = new JLabel();と書いて、すべてインスタンス化しています。

今までは、Jlabel  lab = new  Jlable()というように書いて、変数 labをインスタンス化していたので問題なかったのですが、JLabel  lab = new JLabel[5];というように配列を使うと、インスタンス化されません。くれぐれも配列を使うときは、インスタンス化することを忘れないようにしましょう。

ほかに、//1では、フォントを変えたり、パネルに登録しているだけなので、説明は省きます。if (x > 0) { ~ }の部分は、まだ使わないので気にしなくてOKです。

//2//1とほとんど一緒なので省略します。

つぎに、//3を見てください。このあたりでは、ラベルやボタンの名前を付けたり、座標を決めています。

最後に、//4を見てください。このメソッドは、ボタンの機能をつけるものでしたね。機能は後からつけるので、メソッド内は空欄のままで大丈夫です。

 

一通り説明しましたが、ほかにもわからないことがあったら、コメントをお願いします。

3.まとめ

中編では、今回作った「1.タイトル画面」のスタートボタンを押すと表示される
「2.手の選択画面」を作ります。少しゲームっぽくなるので、面白く感じるはずです。

 

前回

pcdiary.hateblo.jp