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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0103
min初歩ですが。。。5解決


min

リンク

2011/1/3(Mon) 15:26:42|NO.36515

スコアが10、20、30・・と10ずつ上がるときに
ball_zを一つ足したいのですが、これだとスコアが10になるとball_zはどんどん増えてしまって><
(当たり前といえばそうなのですが)
どうしたらスコアが10ずつ上がるときにball__zは一つ足されていくでしょうか?

if sc=10:ball_z+1

初歩的内容で聞くのも申し訳ないのですが、プログラムやりたてなのでよければ教えてください。



この記事に返信する


test

リンク

2011/1/3(Mon) 15:42:54|NO.36516

sc=0	;スコア
ball_z=0 *main stick key if key&256{ //クリックされた瞬間 sc++ } if sc=10:ball_z+1 redraw 0 color 255,255,255:boxf:color:pos 0,0 mes "クリックするとスコアが1増えます" mes "スコア:"+sc mes "ball_z:"+ball_z redraw 1 await 30 goto *main
おそらくプログラムはこんな感じになっているのだろうと推測します。 スコアを増やしていくと、スコアが10である間ずっとball_zが増え続けます。

ゲームなどではこのようにループを使用しますが、このような判定の仕方だと、ループが1回行われるたびに
if sc=10:ball_z+1
の行を通るので結果的にスコアが10である間ball_zが増え続けます。
> どうしたらスコアが10ずつ上がるときにball__zは一つ足されていくでしょうか? とありますが、minさんがおっしゃった通り、「スコアが上がるとき」にball_zを足すかどうかの判定を行えばよいのです。即ち、この例の場合
if key&256{
	//クリックされた瞬間
	sc++
	if sc=10:ball_z+1
}
というようにします。



てれてれ

リンク

2011/1/3(Mon) 15:43:01|NO.36517


if sc\10=0 and flg=0 : ball_z+1 :flg=1;scを10で割った余りが0ならball_zを+1 if sc\10!0 : flg=0;何度もカウントされるのを防ぐ
雑ですみません。



hexa.hemi

リンク

2011/1/3(Mon) 15:43:58|NO.36518

scが10になったときにball_zを加算するのではなく、scを10で割った時の余りが
0でscが0ではない場合にball_zを加算するようにしないとscが10になった時だけしか
ball_zが加算されません。
また、scが10のときにどんどん増えないようにするためには、
ball_zを加算したか否かの変数を作りその変数で判定するとball_zがたくさん増えてしまう
ようにはなりません。
以下スクリプト

if sc \ 10 = 0 & sc > 0 { if counted = 0 : ball_z++ : counted = 1 }else : counted = 0



ganma

リンク

2011/1/3(Mon) 15:47:30|NO.36519

もう一つ変数を作って…
 sc =スコア
 max=前回のスコア記録
 ball_z=増やしたい変数
とします。


if sc>=max{ max+10 ball_z+1 }
これで大丈夫なはずです。



min

リンク

2011/1/3(Mon) 15:52:49|NO.36520

うまくできました!
皆様アドバイスありがとうございます♪

原因はtestさんのおっしゃる通りでループだったようです。
助かりました┏○ペコ



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