トップページへ

マウスでゲーム

復習

今回はクリックをする時間を計測するというゲームを作ってみましょう。最初に画面をクリックした時間から、 もう一度クリックするまでの時間を計ります。

これには、クリックしたときの時間を調べ、後でクリックした時間から最初にクリックした時間を引くとクリックするのに掛かった時間が分かります。

まずは、マウスが使えるプログラムを作ります。

01 import java.awt.*;
02 import java.applet.*;
03 import java.awt.event.*;
04 
05 public class clickclick extends Applet implements MouseListener{
06 
07   public void init() { addMouseListener(this); }
08 
09     public void mouseClicked(MouseEvent e){}
10     public void mousePressed(MouseEvent e){}
11     public void mouseReleased(MouseEvent e){}
12     public void mouseEntered(MouseEvent e){}
13     public void mouseExited(MouseEvent e){}
14 }

変数を作る

次に必要な変数を作りましょう。上のソースの 6 行目に追加します。

int count = 0;
long start, stop, time;

「 count 」はマウスをクリックした回数を数えるために使います。次に「 long 型 」の変数 3 つを作っています。 「 , 」で区切ることで複数の変数を一気に作ることが出来ます。 「 long 型 」も「 int 型 」と同じように整数の型ですが「 int 型 」よりも広い範囲の表現が出来ます。

クリックした時の処理

マウスをクリックした時に反応するようにするため「 mouseClicked() 」に処理を書いていきましょう。

01 public void mouseClicked(MouseEvent e){
02   count++;
03 
04   if(count==1){ start = System.currentTimeMillis(); }
05   if(count==2){
06     stop = System.currentTimeMillis();
07     time = stop - start;
08     repaint();
09   }
10 }

2 行目の「 count++ 」は元の値に 1 を加えています。このように 1 を足すということは次のように書くことも出来ます。

count = count + 1
count += 1

4 行目では、「 count 」の値が 1 かどうかを調べて、「 count 」の値が 1 であれば(つまりクリック数が 1 であるとき) 「 currentTimeMillis() 」を使って「 start 」の中に現在の時刻を格納しています。

6 行目も同じように時間を格納しています。そして 7 行目では 2 回目にクリックした時間から 1 回目にクリックした時間を 引いたものを「 time 」に格納しています。

ここで少し話が逸れますが、Java では四則演算が使えます。足す( + )、引く( - )、掛ける( * )は数学で使うのと同じです。 他に割り算がありますが、これには商( / )余り( % )があり、 商では割り切れない部分は切り捨てられます

8 行目では画面を再描画するように指示しています。続いて描画処理について書いて行きます。

public void paint(Graphics g){ g.drawString(time+" ミリ秒",100,150); }

この「 g.drawString() 」は文字列を表示するのに使います。「 " 」で囲んだ文字列を表示することが出来ます。 つまり、ここでは「 ミリ秒 」という文字列を表示します。最初の「 time 」は変数の値を表示します。 変数と文字列の間は「 + 」で繋ぎます。後ろの 2 つの数字は左から x 座標、y 座標の値で、ここで指定した座標に文字を表示します。

インポート

最後に、「 currentTimeMillis() 」を使うためのパッケージをインポートします。

import java.util.*;

これでプログラムは完成です。

クリックゲーム

最終更新日:2007/08/25
←[前のページ] [Javaトップページ] [次のページ]→

Copylight (c) ガメラボ 2006 - All Rights Reserved

inserted by FC2 system