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);
}
}