Report#8

じゃんけんゲーム


プログラム
import java.applet.*;
import java.awt.*;
import java.util.*;

public class JanKen extends Applet{
Image JanKenImg[] = new Image[3];
String Hand[] = {"グー","チョキ","パー"};
Label lbel;
int i;
public void init(){
setLayout(new BorderLayout());
Panel pnl = new Panel();
for(int i = 0;i < JanKenImg.length; i++){
JanKenImg[i] = getImage(getDocumentBase(),Hand[i] + ".gif");
pnl.add(new Button(Hand[i]));
}
add("South",pnl); //オブジェクトを下の方に配置
lbel = new Label("私と、じゃんけんしましょ");
add("North",lbel); //オブジェクトを上の方に配置
}

//画像を表示する
//画像の大きさを画面の大きさによって変化させる
public void paint(Graphics g){
g.drawImage(JanKenImg[i] ,
(getSize().width - JanKenImg[i].getWidth(this)) / 2,
(getSize().height - JanKenImg[i].getHeight(this)) / 2, this);
}

public boolean action(Event e, Object o){
int iYou = 0;
Random R = new Random(); // 乱数
i = Math.abs(R.nextInt() % 3); //nextInt()%3で-2~2までの乱数を発生させMath.abs
               //で正の数だけにする(正の数0~2の範囲の数になる)
for(int j = 0; j < Hand.length; j++){
if(Hand[j].equals(o)) iYou = j;
}

//変数iがコンピュータの手、変数iYouが自分の手
if(i == iYou){
lbel.setText("私は" + Hand[i] + "、引き分けです");
}
else if((iYou == 0 && i == 1)||(iYou == 1 && i == 2)||(iYou == 2 && i == 0)){
lbel.setText("私は" + Hand[i] + "、貴方の勝ちです");
}
else {
lbel.setText("私は" + Hand[i] + "、私の勝ちです");
}
repaint();
return true;
}
}


実行結果



考察・感想


このプログラムは"ゲーム作りで学ぶjavaプログラミング"参考にさせていただきました。
プログラム自体は短いので、どういう動きをしているのか理解するのは早めにできたのですが、初めて見る命令文が多かったので命令文の意味を理解するのが大変でした。


参考資料
ゲーム作りで学ぶjavaプログラミング