トピック
AM2.5 megoka

このような場合どうすれば

上画面に0を表示させて Aを押すと+1されていく シンプルなプログラムを 作りたいんですけど、 +1したりするプログラムが わかりません。 教えて下さい。
1そうだね
プレイ済み
返信[1]
親投稿
SUJI=0 '数字を保つのに使う「変数」に0を入れます @KURIKAESU '目印。後で使うよ VSYNC 'タイミングを整える呪文。ないと次の行がうまく動きません。 IF BUTTON(2)==#A THEN SUJI=SUJI+1 'ボタンがA なら SUJIをSUJIより1大きい数に変える(=1増やす) GOTO @KURIKAESU 'この名前の目印に戻ります
2そうだね
プレイ済み
返信[2]
親投稿
打ち込むときは説明抜きのほうがいいかも SUJI=0 @KURIKAESU VSYNC IF BUTTON(2)==#A THEN SUJI=SUJI+1 GOTO @KURIKAESU
2そうだね
プレイ済み
返信[3]
親投稿
【いじって遊ぶ例題】 #Aは「Aボタン」という意味なので #Bは「Bボタン」です。X,Y,L,Rも同じ約束になっています。
2そうだね
プレイ済み
返信[4]
親投稿
間違えを発見しました。 なので直します。 SUJI=0 @KURIKAESU VSYNC IF BUTTON(2)==#A THEN SUJI=SUJI+1 CLS 'がめんけします PRINT SUJI 'SUJIをみせます GOTO @KURIKAESU
1そうだね
プレイ済み
返信[5]
親投稿
☆Tatsukin★ tatu_kin1192
While 1 B=button(2) If (B==16)==16 then A=A+1 ?A Wend
1そうだね
プレイ済み
返信[6]
親投稿
☆Tatsukin★ tatu_kin1192
自分、プチコンはmkIIからやっていますが、"vsync"なんか使ったことありません。5年くらいプログラムやってて初めて"vsync"を知りました。
0そうだね
プレイ済み
返信[7]
親投稿
☆Tatsukin★ tatu_kin1192
2つ上の投稿ですが、訂正。 ?A→Locate 0,0?A
0そうだね
プレイ済み
返信[8]
親投稿
+1なら『INC』が見やすいですよ、これは例えば A=3 INC A と、するとAに入っている数は4になります。 他にも使い方はありますが
2そうだね
プレイ済み
返信[9]
親投稿
あらら、たつきんさんのミス見覚えがある… 何か==何か の答えは0か1と決まっていて、16になることはないのでそれでは動きません。
0そうだね
プレイ済み
返信[10]
親投稿
もうひとつ「3」という答えが出る場合(文字==数 と書いたとき)もありますが、0,1,3以外出ません。
0そうだね
プレイ済み
返信[11]
親投稿
ループ中にボタン入力をする時はVSYNCを入れておくのが望ましいですね。 また突発的なボタン判定があるときも前行にWAITを入れると確実度が増すと思います。
2そうだね
プレイ済み
返信[12]
親投稿
というか仕様上BUTTON(1~3)はVSYNC必須のはず
1そうだね
プレイ済み
返信[13]
親投稿
SquidSky ugomemo_gorohati
IFは、条件式が1か0かで分岐するので ABC=123 IF ABC==123 THEN BEEP 3 としなくても IF 1 THEN BEEP 3 だけで条件が揃うことになります。 ベテランの皆さんもご存知でしょう。 変数でも条件式が使えます。 B=2 A=(B==2) IF A==1 THEN BEEP 3
1そうだね
プレイ済み
返信[14]
親投稿
IF 0 THEN BEEP 7'ぜったいに ならないよ
0そうだね
プレイ済み
返信[15]
親投稿
AM2.5 megoka
ありがとうございます。 できたのですけど、 その数字をSAVEする命令は どうすれば
1そうだね
プレイ済み
返信[16]
親投稿
ΖΕΧ ZEX256
GravityNitさん >IFは、条件式が1か0かで分岐するので   ちがいます IF文を含む評価式は、0 か 0以外か です。
3そうだね
プレイ済み
返信[17]
親投稿
TERA(LL) tera0413
BASICなんで方法は、いくらでも有りますが、一例。
0そうだね
プレイ済み
返信[18]
親投稿
SquidSky ugomemo_gorohati
そうだった;; IFは1以上で真と判定するんだった…
0そうだね
プレイ済み
返信[19]
親投稿
Oskar oskar_liebig
「0以外」だから0.1でも-1でも真と判定するよ
0そうだね
プレイ済み
返信[20]
親投稿
☆Tatsukin★ tatu_kin1192
0→false 0以外→true ということですね。 vncysがなくても、button条件式は動きますよ? B=button(2) If B==16 then A=A+1 でも一応動きますが、 B=button(2) If (B==16)==16 then A=A+1 の方が正しいと他の方から聞きました。 Inc A よりも、 A=A+1 の方が、処理の速度が速いです。
0そうだね
プレイ済み
返信[21]
親投稿
☆Tatsukin★ tatu_kin1192
あと、16も0以外なので、真と判定されるはずです。 B=button(2) If (B==16)==1 then A=A+1 でも、 B=button(2) If (B==16)==16 then A=A+1 でも、 B=button(2) If (B==16)==true then A=A+1 と同じことになるはずです。
0そうだね
プレイ済み
返信[22]
親投稿
☆Tatsukin★ tatu_kin1192
すみません、やっぱりvsnycいりました。というわけでプログラム例です。
0そうだね
プレイ済み
返信[23]
親投稿
TERA(LL) tera0413
> Tatsukinさん やって見れば、すぐ分かることですが それ、== でなく、ANDで16を、抽出して、判定する「正しい」方法です。
0そうだね
プレイ済み
返信[24]
親投稿
Tatsukinさんの説明で、 B=button(2) If (B==16)==16 then A=A+1 は間違っていますね。これは、 B=button(2) If (B AND 16)==16 then A=A+1 が正しいです。 あと、 If B==16 then A=A+1 は正しいです。
0そうだね
プレイ済み
返信[25]
親投稿
おそらく、 IF B AND 16 THEN よりは、 IF (B AND 16) == 16 THEN の方が正しいと聞いたのだと思いますが、処理的には両方とも同様ですので、処理に対して正しいという意味では両方正しいです。 ただ、IF B AND 16 THENの方は0以外が真(TRUE)になるという特性を利用した判定でもあるので、そういう処理系以外では正しくないことにはなります。また1つのボタンでなく2つ以上のボタンの同時押しをひとつのANDで判定しようとした際は、きちんと==の右側を書かないといけないですね。 まあただどの書き方にしても正しく理解して使って正しい動作をしているのであれば間違えではないと思います。
0そうだね
プレイ済み
返信[26]
親投稿
タツキンさんはなんか 勘違いしているみたいですが、 BUTTON(1~3)はVSYNCが無いと、 「正しく」動きません。
0そうだね
プレイ済み