ClickClick!

計算機プログラミングI 最終課題
氏名 太田恒平
クラス 理科1類9組
学籍番号 340258J

アプレット実行の様子


プログラムの説明

画面上に出てくる的をクリックする速度を競うゲームです。
時間の都合上、お手軽なプログラムです。

操作説明

・右クリックするとゲーム開始です(常時リスタート可能)
・画面上の点をできるだけ早くクリックしてください
・クリックするたびに点は移動します
・10回黒点をクリックする時間を競います
・クリックしそこねると、必要なクリック回数が増えます
・ハイスコアを記録しています

感想

最終課題なのに、今までの課題よりもてきとープログラムで情けないです。

ソース

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class ClickClick extends Applet {
  static final int times = 10; //クリック必要回数
  static final int size = 10; //的のサイズ
  static long fastest = -1; //トップタイム(初期値はとりあえず-1)
  int count = 0;
  long time;
  int x, y;
  public void init() {
    addMouseListener(new CCMouseAdapter(this));
  }
  public void mousePressed(MouseEvent me) {
    if (count > 0) {
      if ((me.getModifiers() & me.BUTTON1_MASK) != 0) {
        int xc = me.getX();
        int yc = me.getY();
        if ((x < xc) && (xc < (x+size)) && (y < yc) && (yc < (y+size))) {
          count--;
          setForeground(Color.black);
        }
        else {
          count++;
          setForeground(Color.red);
        }
        if (count > 0) {
          showStatus("" + count + " more!!");
          repaint();
        }
        else {
          time += System.currentTimeMillis();
          if ((fastest < 0) || (fastest > time))  fastest = time;
          showStatus("Finished in " + (time/1000.0) + " secs.  " + 
                     "Fastest time: " + (fastest/1000.0) + " secs.");
          repaint();
        }
      }
    }
    else {
      if (fastest < 0)
        showStatus("Click right button to start.");
      else
        showStatus("Click right button to start. Fastest time: "
                   + (fastest/1000.0) + " secs.");
    }
  }
  public void mouseReleased(MouseEvent me) {
    if ((me.getModifiers() & MouseEvent.BUTTON3_MASK) != 0) {
      count = times;
      showStatus("Start clicking ... " + times + " more!!");
      setForeground(Color.black);
      time = -System.currentTimeMillis();
      repaint();
    }
  }
  public void paint(Graphics g) {
    if (count > 0) {
      Dimension d = getSize();
      x = (int)((d.width - size) * Math.random());
      y = (int)((d.height - size) * Math.random());
      g.fillRect(x, y, size, size);
    }
  }
}
class CCMouseAdapter extends MouseAdapter {
  private ClickClick cc;
  public CCMouseAdapter(ClickClick cc) {
    this.cc = cc;
  }
  public void mousePressed(MouseEvent me) {
    cc.mousePressed(me);
  }
  public void mouseReleased(MouseEvent me) {
    cc.mouseReleased(me);
  }
}