/*----------------- rep13ans.java 解答例:宝さがし ------------------*/ import java.applet.*; import java.awt.*; import java.awt.event.*; import java.util.Random; /* */ public class rep13ans extends Applet implements MouseListener { int x, y; // 宝箱位置(左上)座標用変数 String msg; // メッセージ用変数 boolean flg; // 宝箱発見フラグ用変数 Random rnd; // 宝箱位置決め乱数用変数 public void init() { // 初期化処理 msg = ""; flg = false; // 宝箱発見フラグ(未発見状態で開始) rnd = new Random(); x = rnd.nextInt(351); // x座標 = 0,1,2,...,350(宝箱の位置) y = rnd.nextInt(351); // y座標 = 0,1,2,...,350(宝箱の位置) addMouseListener(this); // マウスイベントを自クラスで受け取る宣言 } public void paint(Graphics g) { // 描画処理 g.drawString(msg, 10, 10); if (flg == true) { // 宝箱が発見状態なら実行 g.setColor(Color.red); // 宝箱描画(1.赤箱) g.fillRect(x, y+10, 50, 40); g.setColor(Color.yellow); // 宝箱描画(2.黄色リボン:横&縦,結び目) g.fillRect(x, y+25, 50, 10); g.fillRect(x+20, y+10, 10, 40); g.fillOval(x+17, y, 15, 10); g.setColor(Color.black); // 宝箱描画(3.箱枠の黒線) g.drawRect(x, y+10, 50, 40); g.drawOval(x+17, y, 15, 10); flg = false; // 宝箱発見フラグをもどす(未発見状態に) } } public void mouseClicked(MouseEvent e) { // マウスクリック時の処理 Point pt = e.getPoint(); // マウスクリック位置取得 msg = "(x, y) = (" + pt.x + ", " + pt.y + ") をクリックしたよ."; if (pt.x < x) { msg += "残念,もっと右の方だよ"; } else if (pt.x > x+50) { msg += "残念,もっと左の方だよ"; } else if (pt.y < y) { msg += "残念,もっと下の方だよ"; } else if (pt.y > y+50) { msg += "残念,もっと上の方だよ"; } else if (x <= pt.x && pt.x <= x+50 && y <= pt.y && pt.y <= y+50) { msg += "あたり!"; flg = true; // 宝箱発見フラグをたてる(発見状態に) } repaint(); } public void mouseEntered(MouseEvent e) { // マウスがアプレット領域に入ったら実行 msg = "こんにちは.宝探しゲームをするよ.クリックして宝を探してね"; repaint(); } public void mouseExited(MouseEvent e) { // マウスがアプレット領域を出たら実行 msg = "さよなら.また来てね!"; x = rnd.nextInt(351); // 宝箱の位置を変更 y = rnd.nextInt(351); // 宝箱の位置を変更 repaint(); } public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} }