投稿
かかし takamaru-514
【質問】「設定」というスプライトをタッチしたときに反応を起こさせたいです。(「ボタン」みたいにしたい)「IF~THEN」命令だと「50<=TX<=100」や「20<=TY<=30」という指定はできないので、どのように命令をしてあげれば、「ボタン」っぽくなりますか??初心者なので、できる限りわかりやすく教えてください…。お願いします
3そうだね
プレイ済み
返信[1]
親投稿
yu!+0 yuyutoyo
IF TX>=50 && TX<=100 && TY>=20 && TY<=30 THEN ~~ といったように、X座標やY座標の範囲の最小値と最大値を分けて書けば良いのではないでしょうか。
2そうだね
プレイ済み
返信[2]
親投稿
********** itd12d
自分も未熟なのでよく分からないのですが、TOUCHで下画面のタッチされた座標を受け取り、その場所に別のスプライトをSPOFSで移動、SPHITSPでぶつかっていると判定されたら設定画面へ移動、的な
0そうだね
プレイ済み
返信[3]
親投稿
☆Tatsukin★ tatu_kin1192
50<=TX AND TX<=100 でいけます。 TYの方も同様にANDで分けます。
0そうだね
プレイ済み
返信[4]
親投稿
ゆうたん yu-tan-sama
このケースでANDを使うのは間違いですのよ 条件を結合するときは論理演算の && を使うのが正解です やってることと処理結果が異なるので間違えた使い方をしてるとバグります
2そうだね
プレイ済み
返信[5]
親投稿
☆Tatsukin★ tatu_kin1192
いや、ANDであっています。ANDでやっていけましたので。 僕は、いつもANDでやっています。 一回ANDでやってみてください。 いけますので。 そもそも、ANDと&&は同じ意味なので、 どっちを使っても同じです。
0そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
個人的には初心者ならば「条件式の比較演算子(==や!=や>や<など)を省略しない」というのがベターだと思います。 比較演算子さえ記述していればtrueとfalseが1と0になるためANDで条件式の「かつ」を正しく処理することが可能です。 ||や&&も正しく使うためには論理演算の知識が必要になります。 もちろん論理演算の正しい知識がある人ならば||や&&を使うのがベターです。
1そうだね
プレイ済み
返信[7]
親投稿
ゆうたん yu-tan-sama
>☆Tatsukin★さん イケたこととあってることはイコールではないのですよ IF文がTRUEと判断する材料はプチコンの場合0か0以外かです 1も128もみんなまとめて等しくTRUEです でもANDはビット演算なのでそこを等しく扱いません 1は1ですし、128は128です では1(TRUE)と128(TRUE)でANDをとるとどうなるでしょう? ビット演算なので0(FALSE)になってしまいます 1(TRUE)と128(TRUE)で&&なら当然TRUEです (この場合のTRUEの厳密な値は未定義、今はおおよそ1になってるだろうとは思いますが、あくまで現バージョンの挙動にすぎないので…)
3そうだね
プレイ済み
返信[8]
親投稿
かかし takamaru-514
返信遅くなりました… 皆さん、僕のためにいろいろ議論をしてくださって、ありがとうございます。 "AND"や"&&"が使えるなんて知りませんでした。未熟者で申し訳ありません。試してみようと思います。ありがとうございました。
0そうだね
プレイ済み
返信[9]
親投稿
かかし takamaru-514
"&&"を使ったところ、うまくいきました! お騒がせしました。ありがとうございました。
1そうだね
プレイ済み
返信[10]
親投稿
reji Satoshi.1103
自分の場合は SPHIDE命令で見えないスプライトを 始めに用意しておき、タッチしたい場所に置いてあります。それに、タッチで動く見えないスプライトを用意しておき、それと「衝突」したら「押した」という感じになってます。
0そうだね
プレイ済み
返信[11]
親投稿
☆Tatsukin★ tatu_kin1192
見える丸くて小さいスプライトの方がかっこいいですけどね。 タッチされたところが見えるというやつです。 1と128をANDや&&でやる意味がわかりません。 説明書見てください。 ANDと&&は同じ意味で、 ORと¦は同じ意味と書いてあります。
0そうだね
プレイ済み
返信[12]
親投稿
ゆうたん yu-tan-sama
取説30 BASIC基本仕様か、公式HPのスペックのところをしっかり読もう bit演算と論理演算でバッチリ分かれてる上に、演算子の優先順位もべつもんよ てか、ほんとに全く同じだったらビット演算か論理演算どっちかができないことになっちゃうし、ありえないよ
1そうだね
プレイ済み
返信[13]
親投稿
おちゃめ ochame_nako
☆Tatsukin★さんへ 1と128はBUTTON関数では上とYボタンになります。 上とYボタンの両方を押したかどうかを判定する場合には変数BにBUTTON関数の戻り値が入っている場合次のようになります。(&&の方は演算優先順位の関係でカッコは不要だけど便宜上カッコを付けている) IF (B AND 1) && (B AND 128) THEN ~ IF (B AND 1) AND (B AND 128) THEN ~ &&の方は正常に動作しますが、ANDの方は正常に動作しません。 IF ((B AND 1)==1) && ((B AND 128)==128) THEN ~ IF ((B AND 1)==1) AND ((B AND 128)==128) THEN ~ このように比較演算を省略せずに書いた場合には&&もANDもほぼ同じ動作になります。
1そうだね
プレイ済み
返信[14]
親投稿
なお naosus
みなさん言っているように、プチコン3号のANDと&&は意味が違います。 結果が合ってるから同じというTatsukin氏の論理は、例えるなら0*0も0+0も答えは0だからといって、*と+の意味が同じだと言ってるくらい間違ってる。 それはたまたま0だから合ってるだけ。 ビット演算を理解していないと1とか128とかの意味がわからないでしょうが、これを勘違いしているといずれ必ずバグの元になります。 あなたが間違って覚えているだけなら誰も困りませんが、間違ったことを教えているのはちょっと見過ごせない。
2そうだね
プレイ済み
返信[15]
親投稿
かかし takamaru-514
先日は、僕のために質問に答えていただきありがとうございます。(こちらは解決しています) 見ている限りでは、現在"AND"と"&&"の違いについて議論していただいていますが、とても参考になっています。 なお、一部の発言にトラブルを起こしかねない方が見受けられます。もし間違ったことを発信しても、トラブルにならない、優しい注意をするなど、心がけのほどをよろしくおねがいします。
2そうだね
プレイ済み
返信[16]
親投稿
☆Tatsukin★ tatu_kin1192
なおs»+と*が同じ位間違えていると言う例えは言い過ぎです! ヘルプ(?の虫眼鏡)にANDと&&は違うと書いてないんですよ。 もっと詳しくANDと&&の違いをヘルプに書いてくれるとありがたいんですけどね。 というか、タッチの方はANDずっとANDでやってるので、&&に変える必要はないと思います。 スマイルブームさんにヘルプを修正するように依頼してみます。
0そうだね
プレイ済み
返信[17]
親投稿
☆Tatsukin★ tatu_kin1192
ボタンなら IF BUTTON()==1 AND BUTTON()==128 でいけますよ。
0そうだね
プレイ済み
返信[18]
親投稿
☆Tatsukin★ tatu_kin1192
ビット演算?論理演算?何それ美味しいn(殴 というかbit1とかbit2とかの 意味がわからないので、 bitの方は使ったことがありません。
0そうだね
プレイ済み
返信[19]
親投稿
☆Tatsukin★ tatu_kin1192
ゆうたんs»いけたら、それで実行すれば いけると思いますけど。 例え間違えていてもいけるんですから。
0そうだね
プレイ済み
返信[20]
親投稿
☆Tatsukin★ tatu_kin1192
すみません。理解しました。 bit演算は&&を使います。 というかbit演算って何ですの? (ラッスンゴレライ風)
0そうだね
プレイ済み
返信[21]
親投稿
KU kerorinU
間違えていてもいけたらそれで良い、ってそんな危険な考えを持って今までプログラミングやってきたんですか!? バグの温床ですよ!
1そうだね
プレイ済み
返信[22]
親投稿
☆Tatsukin★ tatu_kin1192
訂正。bit演算ではなく論理演算でした。
1そうだね
プレイ済み
返信[23]
親投稿
なお naosus
いやー、誇張でも何でもなく同じ間違いなんですよこれ。 A AND B が A && B と同じに見えたのは、たまたまAもBも0(FALSE)か1(TRUE)のどちらか以外ないパターンだったからです。 ビット演算は少し難しいかも知れませんが、これを使うと例えば、ボタンの複雑な同時押しをひとつの条件だけで判定できたり等、マスターすればなかなか便利なものなので、ぜひ挑戦してみてください。
1そうだね
プレイ済み
返信[24]
親投稿
ゆうたん yu-tan-sama
ビット演算を理解するには二進数の理解からかなー 普段目にしてる1とか10って数字は、コンピュータの中で二進数で管理されてるものを、人間が読みやすいようにしたものにすぎません 普段はそれを32bitなり64bitなりでひとまとめにして一つの数字として扱ってます ビット演算ってのはそれらの0と1の塊に対してそれぞれの桁で論理演算をするのね 桁数多いとめんどくさいから8bitで説明するけど たとえば、0b10101010 AND 0b00001111 の場合だと 結果は 0b00001010 ってな感じになんのね では、0b10101010 AND 0b01010101ではどうなるでしょう? この場合は、0b00000000、つまり0って数字 元の値はそのままIF文が扱うと両方とも0じゃないからTRUEだけど、ANDしちゃうと0でFALSEになっちゃうのよね
2そうだね
プレイ済み