プレイ日記
今連打で戦うゲーム作ってるんですけど相手を1ループで1連打でやったら強すぎてWAITしたら自分も遅くなってしまったんですけど相手だけ遅くする方法はありますか?
2そうだね
プレイ済み
返信[1]
親投稿
RND命令で、特定の数の時だけ一香さん
1そうだね
プレイ済み
返信[2]
親投稿
スー thanks_0u0
例えば、カウント用の変数を用意して、1ループに1回+1します。 相手はその変数を見て、カウント用の変数が5で割り切れたら1連打、ってすると秒間12連打くらいになりますよ(・u・) 割り切れるかどうかは、カウント用の変数を5で割ったときの余りが0なら、って感じでIF文を使います。
1そうだね
プレイ済み
返信[3]
親投稿
ループ用のカウンタとしてはプチコンではMAINCNTというのが用意されていて、これは垂直同期(VSYNC)毎に自動的に+1されるので、これを使うのも便利ですよ。 使い方はスーさんの回答のように、このMAINCNTを値で割ってあまりが0の時に処理するとかすると、タイミングを変えられます。 IF MAINCNT MOD 5 == 0 THEN みたいな感じですね。
1そうだね
プレイ済み
返信[4]
親投稿
みむ*mim hidemimtp
オワたずさん、スーさんに続く第3のやり方として、 コンピュータの押した数をCとして、 毎ループC=C+1するんじゃなくて、+0.2とかにして、 表示上は、 PRINT C DIV 1 にするのもいいかも。 やり方は色々~
1そうだね
プレイ済み
返信[5]
親投稿
おちゃめ ochame_nako
コンピュータの強さを常に全く同じにしたいならば小数値を加算もしくは一定ループに1回加算という方法がベターだし、1回プレイするごとに強さを少し変えたいならば乱数を使うのがベターです。 乱数の使い方も様々な方法があり、1秒間に10連射くらいの強さのコンピュータを作りたい場合にはA=A+!RND(6)だと平均6フレームに1回加算されますが、3フレームに1回A=A+!RND(2)という加算処理をするという方法もあります。(後者は理不尽な増え方をしにくくできる) 強さの微調整をするならばRNDF()を使うのも1つの手です。 様々な方法があるためいろいろ試してみて自分に合ったものを見つけ出すというのも楽しいですよ。 ちなみにA=A+!RND(6)において!RND(6)というのはRND(6)の値が0の時は1(A=A+1)になり、RND(6)の値が0以外の時は0(A=A+0)になります。
1そうだね
プレイ済み