getTimeの引き算(質問掲示板

投稿:    mini rdjk5242 投稿:2012/02/04 12:21:04(最新:2012/02/05 15:19:05)
引き算はsupeak("123 - 30")
みたいな感じでできると思いますが
supeak("50 - getTime")という風にはできないんですか?

コメントする

コメントするには、ログインする必要があります。

コメント一覧

Cdv30200 aoi icon mini aoihikawa(投稿日:2012/02/05 15:19, 履歴)
setText(createText(400, 1, 200, 200) 
, "残り",10-floor(getTime()/10)/100,"秒") 


記載されたスクリプトを同様の方法でたどってみると、

・createText関数
・getTime関数による時間の取得
・/ 10
・floor関数による端数処理
・/ 100 ←ここで再び端数が発生してしまっている
・10 - 上記までの計算結果
・setText関数による文字列の連結と表示

という流れとなるため、
端数が表示されてしまっているわけです。
Cdv30200 aoi icon mini aoihikawa(投稿日:2012/02/05 15:15, 履歴)
floor関数は
引数:端数をきりたい数値
戻り値:端数をきった数値

となっています。

#floor関数単体の処理
a = floor(3.14) # a = 3

#floor関数を他の関数に組み込んだ処理
speak("あと" + (30 - floor(getTime()/1000)) + "秒だよ")

上記の場合、

・getTime関数による時間の取得
・/ 1000
・floor関数による端数処理
・30 - 端数処理した値との計算結果
・+ による文字連結
・speak関数による文章表示

といった順にスクリプトの処理が行われます。
   mini rdjk5242(投稿日:2012/02/05 06:48, 履歴)
すいません、一個下のコメント見間違えていました。
floor(getTime()/10)/100
          ↑ここに括弧ありますね。

違う質問なのですが、

floorの使い方ってどういう風なんですか?
setText(createText(400, 1, 200, 200)
, "残り",10-floor(getTime()/10)/100,"秒")

こう書いてみても1/3は0.33333333・・・ってなります。

できれば例文があるとありがたいです。

よろしくおねがいします。
   mini rdjk5242(投稿日:2012/02/05 06:03, 履歴)
aoihikawaさん
ikosamiさん
回答ありがとうございます。

なんかノベルゲームなどですごいゲームを作ってる人に
教えてもらえるのはとてもありがたいです!

ところでikosamiさんのコメントにあった

floor(getTime()/10)/100


これって
floor(getTime()/10)/100)
             ↑ここの右側の括弧はいらないんですか?
Cdv30200 aoi icon mini aoihikawa(投稿日:2012/02/04 17:58, 履歴)
speak関数内で直接計算を行う場合、
文字の連結処理との混同を防ぐため、
以下のように書きます。

#方法1 speak関数の「,」連結を利用する
speak("あと",30-getTime()/1000,"秒だよ") 

#方法2 関数内で計算処理を優先で実行する
speak("あと" + (30-getTime()/1000) + "秒だよ") 
Material 7186 1 mini ikosami(投稿日:2012/02/04 17:37, 履歴)
時間は、妙に小さい数字まであるので、
(1.000000001みたいなの)

小数点第2位以下を切捨てした方が良いですよ。

手順(1234.56789とすると)
1.10で割る(123.456789)
2.切り捨て(123)
3.100で割る(1.23)

つまり
floor(getTime()/10)/100


こうすれば、むちゃくちゃ長くなるのを防ぐことができます。



あと、NoNでなくNaN(Not a Number)です(^^;)
   mini rdjk5242(投稿日:2012/02/04 17:08, 履歴)
ikosamiさん
回答ありがとうございます。

実は最初に書いたのは書き間違えていました・・・
それで今までやろうとしていたのがこれです↓
speak("あと"+30-getTime()/1000+"秒だよ")

でも+ってアクティビティフィードだけなんですね。
こうするとテストプレーで「あとNoN秒だよ」って表示されてました

speak("あと",30-getTime()/1000,"秒だよ")
ってやったらちゃんとできました!

作ったのでやってみてください。
実験5(カウントダウン成功) - 【2DRPG】
Material 7186 1 mini ikosami(投稿日:2012/02/04 12:42, 履歴)
supeakではなく
speakですよ(^^;)

あと、""は文字列をあらわすので、計算はできません。
数字を文字として表示する場合は""に入れます。

speak("永遠に17歳です。")

speak("ステージ1-2")

ステージを表示しようとして speak("1-2") と書いて計算されたら困りますよね。

計算の場合は""を書かずに speak(123 - 30) と書きます。

そうすれば、speak(50 - getTime)でも
ちゃんと計算されますよ(^^)

文字列と同時に表示する場合は、
a = 10
speak("現在",a,"ポイントです。")