投稿
ゆず#あつあく miyu-03-12-22
一秒経ったらプリントした数値が一増える、という事をしたいのですが、どのようにすればいいですか?
2そうだね
プレイ済み
返信[1]
親投稿
ぴくと kanau1203
TIMEとIFで出来そう
1そうだね
プレイ済み
返信[2]
親投稿
使用目的にもよりますが、システム変数MAINCNTが60増えたら約1秒になることを利用することも出来ます。 また、MMLの演奏時間を利用する方法もあります。 それぞれ、長所短所があるので、使用目的に合った方法を試してください。
1そうだね
プレイ済み
返信[3]
親投稿
MAINCNTを使った例) CLS:N=0 NT=MAINCNT+60 PR REPEAT IF NT<=MAINCNT THEN PR 0,0,N INC NT,60 INC N ENDIF UNTIL BUTTON(2)==#X END DEF PR X,Y,N LOCATE X,Y:? FORMAT$("%4D",N) END
1そうだね
プレイ済み
返信[4]
親投稿
訂正)3行目のPRはPR 0,0,Nの間違いです。
1そうだね
プレイ済み
返信[5]
親投稿
say sayer.exe
while 1 if time$!=otm$ then cnt=cnt+1:?cnt otm$=time$ wend たぶん動くはず
1そうだね
プレイ済み
返信[6]
親投稿
say sayer.exe
理屈的には動くはずなのになぜか動かない…orz ループん中にvsync入れたら動いたけど
1そうだね
プレイ済み
返信[7]
親投稿
ヨッシー okkun2002
他の処理はできないけど CLS:I=0:WHILE 1 LOCATE 0,0:?I WAIT 60:I=I+1 WEND でできる。他の処理するなら、皆さんがいっているようにどうぞ。
1そうだね
プレイ済み
返信[8]
親投稿
ゆず#あつあく miyu-03-12-22
ちなみに今、数増やしゲームをつくってます! 皆さんのコメを参考に作ってみます!
1そうだね
プレイ済み
返信[9]
親投稿
sayさん»よく思いついたなぁ。そういえばそうだ。ループが1秒たつより速く回っているからtime$との違いが出来ずに代入だけで後は何も起きないことに今更気づいた。
1そうだね
プレイ済み
返信[10]
親投稿
れい rei-nntnd
それやるならこうじゃね while 1 if time$!=otm$ then cnt=cnt+1:?cnt:otm$=time$ wend
3そうだね
プレイ済み
返信[11]
親投稿
say sayer.exe
うえこうさん> それたぶん正解 「「ループと秒の同期が合った」時にはcntが増えることはない」て事でしょう みょんさん> 発案はぴくとさんであって、ぼくじゃない ただぼくはぴくとさん案をパクっただけですたい 今度はコータさん案をパクって while 1 if !(maincnt mod 60) then cnt=cnt+1 ? cnt wend て書いてみたら 表示は約1秒毎に変わるんですが、数値が変な数値に… ↑理由はだいたい想像できる
2そうだね
プレイ済み
返信[12]
親投稿
おちゃめ ochame_nako
sayさんへ うえこうさんが書かれていることをより正しく言うならばプチコン3号はボタンやタッチやジャイロセンサーの情報だけではなくTIME$もフレーム単位で更新されているためです。 そのやり方だとIF TIME$!=OTM$ THEN~とOTM$=TIME$が同一フレーム内にある場合のみCNTがインクリメントされるため1秒ごと増えないのはプチコン3号の仕様通りの動作となります。 したがって、IF TIME$!=OTM$ THEN~とOTM$=TIME$の間にVSYNCを挟めばCNTは1から増えることはありません。 これは、BUTTON関数を使用時も同じことが言え、フレームをまたいでBUTTONを複数回呼び出して判定を行った場合には正常動作しないことがあります。
1そうだね
プレイ済み
返信[13]
親投稿
ナツキ natukin1978
出遅れましたが… CLS VAR ST%=MAINCNT WHILE TRUE LOCATE ,0 ? (MAINCNT-ST%) DIV 60 WEND コータさんのと似てますね… DIVの部分を/(スラッシュ)に変えても面白い。
1そうだね
プレイ済み
返信[14]
親投稿
おちゃめ ochame_nako
ゆずさんが、どういう用途で使うのかが分かりませんが WHILE 1  INC CNT  ?CNT DIV 60  VSYNC 1 WEND とするのが一番簡単なような気がします。 TIME$やMAINCNTを使ったやり方だと最初の1秒がちゃんと1秒になるように作る必要があります。単純にMAINCNTの値を60で割ったり剰余を求めた場合には最初の1秒目が正しく出ないので注意が必要です。
2そうだね
プレイ済み
返信[15]
親投稿
ゆず#あつあく miyu-03-12-22
カクノチガウハナシヲシテイル…ツイテイケナイ… 何となくわかったような気がします… よし、頑張ろう! そしてまた質問なのですが、数値が自動的に増えつつ、Aボタンを押したら数値が増える…と言うのはどうすればいいですか? ボタン難しい…>< {余談}明日公式ガイドおねだりして買ってもらおうかな…
0そうだね
プレイ済み
返信[16]
親投稿
ナツキ natukin1978
Aボタンを押したら数値が増える… CLS VAR CNTA=0 WHILE TRUE VSYNC VAR BTN=BUTTON(2) IF BTN AND #A THEN INC CNTA LOCATE ,0 ? CNTA WEND 「数値が自動的に増えつつ」というのは最初の質問の時間で増える? そうだとすれば、上手く混ぜればできると思います。
1そうだね
プレイ済み
返信[17]
親投稿
MIKI ifconfig
クッキークリッカー的なものなのかな?? cls while 1 ' このループは 1/60 に一回実行されます vsync locate 0,0: ? format$("%13.2f", c) 'スコア表示 b=button(2) if b and #A then c=c+2 ' A押されたら2増やす c=c+1/60 '1/60秒ごとに 1/60 ふやす wend
1そうだね
プレイ済み
返信[18]
親投稿
ゆずさんのしたい事と少し違う点があるかもしれません。
1そうだね
プレイ済み