HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
1006
(´・ω・`)タイマーを作りたいのですが・・・2解決


(´・ω・`)

リンク

2012/10/6(Sat) 08:20:37|NO.49799

時間を図るタイマーを作りたいのですが、
どうしても時間を表示させるところで、タイマーが0になってしまいます。

	pos 275,235
color 255,0,0 font "MS ゴジック",50 mes "!!" mmplay 1 stick DOTI,48 if DOTI=32:goto *WANKATI if DOTI=16:goto *NIKATI if DOTI&48:goto *HIKIWAKE wait 1 TI=TI+0.01 goto *KIME<pre/> で、たして
   mmplay 2
	color 255,255,255
	boxf
	color 0,0,0
	pos 250,50
	font "MS ゴジック",70
	color 255,0,0
	mes"●"
	font "MS ゴジック",20
	color 0,0,0
	pos 350,260
	mes "(^o^)>>/(ToT)"	
	pos 25,50
	font "MS ゴジック",35
	mes "1\nP\nの\n勝\nち\n!"
	pos 50,440
	mes "タイム"+TI
	IKATI=IKATI+1
	NOKORI=NOKORI-1
	wait 200
	if NOKORI=0:goto *KEKKA
	goto *ZI<pre/>
で表示します




この記事に返信する


てん

リンク

2012/10/6(Sat) 10:48:18|NO.49801

この計算がポイントです
TI = TI + 0.01

おそらく、最初はTI=0から計算をスタートしていませんか? TI = 0 の場合、上記の計算はPC内部で以下の様に解釈されます。
①右辺に注目
②右辺の第1項はTI
③TIは整数
④つまり、この式は整数の計算
⑤よって全て整数として扱う。
⑥0.01を0として扱う
で、結局この足し算が
TI = TI + 0

として扱われてしまったために、TI=0となってしまったのでした。 回避法としては、以下の様な方法があります。
//失敗:初期値 a=0 により、全て整数の計算とみなされてしまう。
a = a + 0.1
mes "a:" + a

//回避法①:はじめに初期化しておく
b = 0.0 //そもそも、bを実数として初期化しておく
b = b + 0.1
mes "b:" + b

//回避法②:計算時に実数に型を変えておく
c = 1.0 * c + 0.1 //最初に1.0を計算するので、この式は実数の計算とみなされる。
mes "c:" + c



(´・ω・`)

リンク

2012/10/6(Sat) 12:25:14|NO.49802

ありがとうございました!
しっかり測れてます!



ONION software Copyright 1997-2025(c) All rights reserved.