なんかいろいろ

ドゥーン

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

タイマー




http://www.geocities.jp/hirugofu/Download.html



ここに来ている方ならエメタイマーは知っているとは思いますが、
http://pokem.client.jp/emloop.htm
これ、初期seed合わせには相当良いタイマーツールだと思います。使いやすいですしね。

でもわがままな自分は、もっといいものが欲しいと思ってしまいました。
何がマイナスかってコレ、パソコン開いてないと使えないんですよね。
初期seedのタイミングとか乱数消費とかの情報さえメモっておけば、こんなでっかい箱に電気通して無くともやれることはやれるのに、
タイマーのためにパソコン起動するのも、なんだかなーと思いまして。

んで、1/100単位で時間計れるもの(ストップウォッチでも腕時計でも専用のタイマーでも)を探したのですが、
これがまーったく売ってないんですよ!1秒単位ならたくさんあるんですけれど、1/100秒となるとどーも。。。
でも、そりゃあそうだって話ですね。日常生活において、1/100秒単位で時間を計るタイマーなんてあったって、何に使うのか分かりゃしませんもん。


じゃあどうしようかと思ったのですが、
自分で作ればいいじゃんかと思ったので、実際に自分で作っちゃいました。
いやー、バカだなぁ、自分。

できればあと数秒のカウントの時に音を鳴らしたかったのですが、
フリーのmldファイルの効果音素材でいいものが全くなかったので、文字色変更で代替しました。


とりあえずiアプリなので、キャリアがドコモじゃないと使えません。ご了承下さい。
ドコモでも使っている機種によって動かなかったりするかもしれないので、こちらもご了承ください。
携帯電話にアドレス直打ちしてどうぞ。


続きからにソース貼っておきます。
import com.nttdocomo.ui.*;
import com.nttdocomo.io.*;
import java.util.*;

public class MyTimer extends IApplication {
public final static int w_timerID=0;
private ShortTimer timer;
public void start() {
MyCanvas w_canvas = new MyCanvas();
w_canvas.setSoftLabel(w_canvas.SOFT_KEY_1,"終了");
w_canvas.setSoftLabel(w_canvas.SOFT_KEY_2,"実行");
Display.setCurrent(w_canvas);
}

class MyCanvas extends Canvas {
int time[] = {0,0,0};
int tmptime[] = {0,0,0};
int changetime = 2;
boolean counting = false;
AudioPresenter audio = null;

public MyCanvas() {
Font.setDefaultFont(Font.getFont(Font.SIZE_LARGE | Font.STYLE_BOLD));
/*
MediaSound sound = getResourceSound("1.mid");
audio = AudioPresenter.getAudioPresenter();
audio.setSound(sound);
*/

timer=ShortTimer.getShortTimer(this,w_timerID,10,true);
}

public void paint(Graphics g) {
g.lock();
g.clearRect(0,0,210,180);
for(int i=0; i<3; i++){
if(changetime == i)
g.setColor(g.getColorOfName(Graphics.RED));
else
g.setColor(g.getColorOfName(Graphics.BLACK));
if(time[i]>9){
g.drawString(Integer.toString(time[i]), (i+1)*60-15, 120);
}
else{
g.drawString("0" + Integer.toString(time[i]), (i+1)*60-15, 120);
}
}
g.unlock(true);
}
/*
MediaSound getResourceSound(String resource){
MediaSound sound = null;
try{
sound = MediaManager.getSound("resource:///"+resource);
sound.use();
}catch(ConnectionException ce){
sound = null;
}catch(UIException e){
sound = null;
}
return sound;
}
*/

public void timerEnd(){
changetime = 1;
for(int i=0;i<3;i++){
time[i] = tmptime[i];
}
repaint();
timer.stop();
counting = false;
setSoftLabel(SOFT_KEY_2,"実行");
}

public void timerStart(){
if(time[0]<60 && time[1]<60 && !counting){
counting = true;
changetime = -1;
for(int i=0;i<3;i++){
tmptime[i] = time[i];
}

setSoftLabel(SOFT_KEY_2,"中断");
timer.start();
}
else if(counting){
timerEnd();
}
}

public void processEvent(int type,int param) {
if ((type==Display.TIMER_EXPIRED_EVENT) && (param==w_timerID)) {
time[2]--;
if(time[2]%9==0){
changetime = -1;
repaint(105,90,30,30);
}
repaint(165,90,30,30);
if(time[2]<0){
changetime = 1;
time[2] = 99;
time[1]--;
repaint(105,90,30,30);
if(time[1]<0){
time[1] = 59;
time[0]--;
repaint(45,90,30,30);
if(time[0]<0){
timerEnd();
}
}
}
}
if (type==Display.KEY_PRESSED_EVENT) {
switch(param){
case Display.KEY_SOFT1:
terminate();
break;
case Display.KEY_SOFT2:
timerStart();
break;
case Display.KEY_SELECT:
timerStart();
break;
}
if(!counting){
switch(param){
case Display.KEY_LEFT:
changetime--;
if(changetime < 0)
changetime = 2;
break;

case Display.KEY_RIGHT:
changetime++;
if(changetime > 2)
changetime = 0;
break;
case Display.KEY_UP:
time[changetime]++;
if(time[changetime]>59 && changetime !=2)
time[changetime] = 0;
else if(time[changetime] > 99)
time[changetime] = 0;
break;
case Display.KEY_DOWN:
time[changetime]--;
if(time[changetime]<0){
if(changetime != 2)
time[changetime] = 59;
else
time[changetime] = 99;
}
else if(time[changetime]>59 && changetime !=2)
time[changetime] = 59;
break;
case Display.KEY_1:
time[changetime] = time[changetime]%10*10+1;
break;
case Display.KEY_2:
time[changetime] = time[changetime]%10*10+2;
break;
case Display.KEY_3:
time[changetime] = time[changetime]%10*10+3;
break;
case Display.KEY_4:
time[changetime] = time[changetime]%10*10+4;
break;
case Display.KEY_5:
time[changetime] = time[changetime]%10*10+5;
break;
case Display.KEY_6:
time[changetime] = time[changetime]%10*10+6;
break;
case Display.KEY_7:
time[changetime] = time[changetime]%10*10+7;
break;
case Display.KEY_8:
time[changetime] = time[changetime]%10*10+8;
break;
case Display.KEY_9:
time[changetime] = time[changetime]%10*10+9;
break;
case Display.KEY_0:
time[changetime] = time[changetime]%10*10+0;
break;

}
repaint();
}
}
}
}
}
スポンサーサイト

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。