投稿
Daisuke 0909daiki09
プチコン初心者です。この@SHOTでラケットを振りたい(ラケットを前に移動させたい)のですが動きません…何処の行数のプログラムが悪いですか?親切な方教えてください…
3そうだね
プレイ済み
返信[1]
親投稿
ようすけ youslzh
IF (BUTTON(2) AND 16) && SG==0 THEN とかかな?
0そうだね
プレイ済み
返信[2]
親投稿
say sayer.exe
if ((button(2) and 16)==16) and (sg==0) then かな? 優先順位的なエラー?
0そうだね
プレイ済み
返信[3]
親投稿
MIKI ifconfig
「P かつ Q」の意味で「P and Q」使うとバグるよ。 必ず P && Q を使いましょう。 64行目もね。 P または Q の場合も必ず P || Q を使いましょう。 普通のプログラムではまず and とか or とか使いません。 プチコンでほぼ唯一の使い道がボタンの判定。
0そうだね
プレイ済み
返信[4]
親投稿
Daisuke 0909daiki09
論理演算子はANDではなく&&の方がいいという事ですね!ありがとうございます!
1そうだね
プレイ済み
返信[5]
親投稿
Daisuke 0909daiki09
早速試してみます!
0そうだね
プレイ済み
返信[6]
親投稿
MIKI ifconfig
「&&の方がいい」ってレベルじゃなくて、「&&じゃなきゃダメ」ってレベル。 なんとなれば、P かつ Q の意味で P * Q を使うことができます。P または Q の意味で P + Q を使うこともできます。 でも * とか + とかそういう演算子じゃないよね。 それと全く同じことで、 and や or は「かつ」「または」に使うべきではないってことです。 かつ、またはの意味で and or 使う人が多いのは、プチコン以外の basic ではそうなってるからですね。でもそれはプチコンの流儀ではない。
1そうだね
プレイ済み
返信[7]
親投稿
Daisuke 0909daiki09
&&にしたら反応するようになりましたが、 TYPE MISMATCH:60 というエラーが出てしまいました… 60行目のSPANIMが間違っている事は分かっているのですが、どう直せばいいのか分かりません…教えてください…
0そうだね
プレイ済み
返信[8]
親投稿
say sayer.exe
古い人間なので使ってしまう悲しさ 時代は変わったのう…orz
0そうだね
プレイ済み
返信[9]
親投稿
MIKI ifconfig
SPANIM の文法はよくわかりませんが、"XY"-60 はありえないです。文字列と数値の演算なんで、エラーになるよね。
0そうだね
プレイ済み
返信[10]
親投稿
Daisuke 0909daiki09
sayさんすみません…
0そうだね
プレイ済み
返信[11]
親投稿
say sayer.exe
時代が変わったのにこっちが対応できてないことの自虐よ ウソ教えてしまいました
0そうだね
プレイ済み
返信[12]
親投稿
Daisuke 0909daiki09
みきさん»SPANIMは"XY"などで動作の指定をするので間違っていないと思います…
0そうだね
プレイ済み
返信[13]
親投稿
Daisuke 0909daiki09
sayさん»間違える事だってあるんですから落ち込まないで下さい…
0そうだね
プレイ済み
返信[14]
親投稿
あんど AND1GOUKI
単純に"XY"と-60の間の「,」が抜けているだけのように見えます。
0そうだね
プレイ済み
返信[15]
親投稿
イカ ikasan1830
"XY",-60 コロンが抜けてる
0そうだね
プレイ済み
返信[16]
親投稿
ΖΕΧ ZEX256
そうじゃなくて、カンマがないのは
0そうだね
プレイ済み
返信[17]
親投稿
イカ ikasan1830
間違えた!コンマが抜けてる、でした。
0そうだね
プレイ済み
返信[18]
親投稿
おちゃめ ochame_nako
プチコン3号には「かつ」「または」を示す論理演算子である「&&」と「||」が用意されているためそれを使うのがベターですが、比較演算子を省略せずに記述すれば「AND」「OR」を「かつ」「または」として使用することは間違いであるとは私は思いません。
0そうだね
プレイ済み
返信[19]
親投稿
Daisuke 0909daiki09
コロンが抜けてただけでした…ありがとうございます!でも動いたはいいですが、ラケットがボタンを押すと消えてしまいました…何でそうなったのか教えて下さい
0そうだね
プレイ済み
返信[20]
親投稿
Daisuke 0909daiki09
↑カンマでした。
0そうだね
プレイ済み
返信[21]
親投稿
MIKI ifconfig
いえ、say さんのコードでも完全に意図どおりに動くでしょう。決してウソではないのでご安心を。 say さんのコードは工夫によって and を「かつ」の意味で使うことに成功してます。同じ工夫によって * を「かつ」の意味で使うことも可能です。 その工夫を定型句化して常に and と * を「かつ」の意味で使い続けるというアプローチもあるでしょう。 私のアプローチは、&& を使えばその工夫自体不要になるから、そっちの方がよくね? ってことです。
1そうだね
プレイ済み
返信[22]
親投稿
僕もおちゃめさんの言うようにANDとORを「かつ」「または」で使うことは間違えだとは思いません。 ただみき★さんの言うように&&と||が用意されているんだから、それを使う方がよりベターというのは同意ですし、僕自身も条件判断としては&&と||を使うことを推奨しています。せっかくちゃんとしたものが用意されているんですしね。
1そうだね
プレイ済み
返信[23]
親投稿
MIKI ifconfig
RFC 1122 によれば Robustness principle とは "Be liberal in what you accept, and conservative in what you send" です。 日本語に訳しますと「送る側は慎重に、受け取る側は寛大に」 この場合sendされるはソースコードでacceptするのは SmileBASICです。その出力が実行結果。 工夫が必要な、ともすれば綱渡りのようなコードをsendするよりもSmileBASICの意図どおりに && || を使うのがより Robustness principle にかなっていませんか? and or * + を「かつ」「または」の意味で使うのはRFCで言えばMAY相当でしょう。 && || を使うことがSHOULD相当ですね。無論MUSTではない。
0そうだね
プレイ済み
返信[24]
親投稿
あきと SideBurnsM
どういうラケットの動きをさせたいのかこのコードだけではわからないのですが、とりあえず SPANIM 4,"XY", 1,X,Y, -30,X,Y-5 とすると主人公の近くにラケットが表示されたあと上にちょっと移動すると思います。
0そうだね
プレイ済み
返信[25]
親投稿
れい rei-nntnd
こうして、miiverseの一部で始まったANDOR容認派と&&||原理主義派の小競り合いはプチコン界を震撼させる大戦争へと発展していったのであった…
2そうだね
プレイ済み
返信[26]
親投稿
Daisuke 0909daiki09
あきとさん»少し書き換えたらラケットを振っているっぽい感じになりました!でも振ったラケットが戻りません…SPCHKの所が間違っているのでしょうか?教えて下さい…
0そうだね
プレイ済み
返信[27]
親投稿
れい rei-nntnd
いまちょっとウソ書き込んでしまった SPCHKは動作しているときにビット立つから、 @SHOTすぐあとのIFで動作開始したら、 SPCHKは16で、Aは16になる。 A AND 1は0になるので次のIFは実行されないよね。
0そうだね
プレイ済み
返信[28]
親投稿
MIKI ifconfig
ん? 上記の通り私は AND OR どころか * + でも容認しますし、&& || 原理主義でもありませんよ? Robustness principle = 堅牢性の原理 MAY = してもよい SHOULD = すべきである MUST = しなければならない ああ、私は RFC 原理主義者かもしれませんね。
0そうだね
プレイ済み
返信[29]
親投稿
Daisuke 0909daiki09
れいさん»上手く動作しました!ありがとうございます!
0そうだね
プレイ済み
返信[30]
親投稿
MIKI ifconfig
とりゅふさん、置き去りにしてごめんね。 うえこうさん、孤立無援四面楚歌絶体絶命の中救援ありがとう。 実は && || には and or よりも平均的に速いという特性もあるんですよ。 この仕様は C 言語からの借用なんですけど、そもそも C 言語は筋金入りのハッカーが自分達が使うために設計して実装した言語なんで、とびきり使いやすくできてるんです。
2そうだね
プレイ済み
返信[31]
親投稿
れい rei-nntnd
RFCってRequest For Commentだよね。日本語訳すると「コメントください」 超訳するなら「ツッコミ募集中」 「聖書」とか「経典」とかだとなんかかっこいいしスゴク大切でためになること書いてありそうだけど。 「コメントください」っていう文章を教典としてあがめる宗教って矛盾してて皮肉っぽくてちょっと面白くない? 「いやそこはそれじゃダメだ。理由は知らないがRFCにこう書いてある。 「でもそれだと~で問題おこすからこうしたほうが… 「RFC通りに実装しろ!RFCは絶対!一字一句正確に! 「RFCは偉いんだな…。どういう意味なんだろ。Request For Comment…コメント募集中?!
1そうだね
プレイ済み
返信[32]
親投稿
あきと SideBurnsM
数値の&と論理積の&&の意味がわかってる人だったらどっちでもいいんじゃないかな。 困るのは IF (BUTTON(2) AND 16) AND FLAG==0 THEN で動きませんと言われた時ですね。 それなら「&&を使いましょう」と言いたくなるかも。16と1をANDしても0ですが、16と1の&&なら成立するんですよというのをうまく説明できません。
1そうだね
プレイ済み
返信[33]
親投稿
おちゃめ ochame_nako
あきとさんへ 「&&」を勧めるのがベターですが、個人的には「(BUTTON(2) AND 16)」に比較演算子を加えて「(BUTTON(2) AND 16)==16」とします。 「0以外の値だとtrueになる」「『BUTTON(2) AND 16』は0か16のいずれかの値になる」というのが分からない状態で「&&」を勧めても結局正しい理解はできないままになりますので。
0そうだね
プレイ済み
返信[34]
親投稿
MIKI ifconfig
そういう文化を含めて愛していますね。 (MSからRFC出してきた時は心底びっくりした) まあデファクトスタンダードって言葉もあるように、The Internetの世界では RFC が聖典そのものですから。 あと RFC には status というランクシステムもありますよ。
0そうだね
プレイ済み
返信[35]
親投稿
MIKI ifconfig
ん? 最初から && を教えて and はボタン判定専用の特例と教えれば、余計な苦労を背負い込まずに済むと思いますが??
0そうだね
プレイ済み
返信[36]
親投稿
おちゃめ ochame_nako
「BUTTON(2) AND 16」の値が16、かつ、「変数SG」の値が0 というのをそのままコーディングするだけなのでこれが余計な苦労に感じるレベルだと今は良くても今後は苦労が必至です。(この場合は「かつ」の部分はANDでも動作するけど&&がベター) ANDはビット演算以外の何物でもないのでボタン判定専用と言わない方が良いと個人的には思います。 でないと、「SPCHK()で何でANDを使うの?」という疑問が出たら答えられません。
0そうだね
プレイ済み
返信[37]
親投稿
イカ ikasan1830
そもそも&&とANDの違いをしりたいなー、なんて。
0そうだね
プレイ済み
返信[38]
親投稿
けい kei0baisoku
ちなみに今回の戦争は第一次でなく、第四、五次目くらいだったりします。 そして多分一回目は私の投稿(`・ω・´) (自慢になるのかならないのか)
1そうだね
プレイ済み
返信[39]
親投稿
おちゃめ ochame_nako
イカさんへ 「&&は論理演算子」「ANDはビット演算子」という違いがあります。 条件式における「かつ」を意味するのは「&&」の方だけですが、比較演算子を省略せずに書けばANDでも「かつ」の役割をすることができます。 &&とANDは速度面で&&の方が速いというだけではなく複数の条件式を「かつ」を使って判定している場合に最初の条件式でfalseになってもANDはすべての条件式を評価するのに対して&&はそれ以降の条件式は評価しないという違いがあります。 これは速度面の違いだけではなく動作面の違いが生じる場合があります。
0そうだね
プレイ済み
返信[40]
親投稿
MIKI ifconfig
おちゃめさん BUTTON(2) AND 16」の値が16、かつ、「変数SG」の値が0 その「かつ」はおちゃめさんの脳内で and ですか? && ですか? * ですか? spchk も button 同様単なる特例でしょうね。一般的な「かつ」に比べたら。
0そうだね
プレイ済み
返信[41]
親投稿
れい rei-nntnd
>(MSからRFC出してきた時は心底びっくりした) あ、年齢が… いやいや。 みき氏は妙齢の素敵な女性だし、おちゃめ氏はかわいい女の子。 ここ大事。試験に出るからみんなスラスラ言えるまで復唱すること。 > ちなみに今回の戦争は第一次でなく、第四、五次目くらいだったりします。 しかし今回はANDOR容認派への攻撃と言うよりも&&||派の内部抗争の様相。 ビット演算を教えるか否かが議論の中心。 だれかイカ氏に真実を教えてあげて。
3そうだね
プレイ済み
返信[42]
親投稿
けい kei0baisoku
>イカさん おちゃめさんの説明に加えて挙動面の補足です。 ・A && B ⇒ AとBが両方とも0でない時は1に、それ以外の時は0にする演算子。また、Aが0の時はBは処理されない(関数なら呼ばれない) ・A AND B ⇒ AとBの、各ビットの論理積の結果を返す演算子(&B1010 AND &B1001==&B1011) プチコン三号ではこのように動きます。 C言語も全く同じです。(記号は違いますが)
0そうだね
プレイ済み
返信[43]
親投稿
イカ ikasan1830
皆さんどうもです。 一つの条件式に複数のANDとORが混在しているのが 感覚的に良く分からなかったんですよね。 なので複数の条件が固まるときはいつもIFを重ねてたという。 ビット演算のほうは多分大丈夫です。
0そうだね
プレイ済み
返信[44]
親投稿
MIKI ifconfig
dim v[4] という整数の配列から x という値を探すとして i = 0 while i < 4 && v%[i] != x i = i + 1 wend と書けば期待通りに動くんですけど、これを and にしちゃうとバグるのね。こういういちいちプログラマ好みな仕様が C 言語やめられまへんな~な理由です。 >みき氏は妙齢の素敵な女性だし 違いますね。そういやめぐりー先生には「動けばいい」と言ってたれいさんが、Newあっきーさんには方法論を語ってるあたりも、なるほどと思いましたね。 イカさん、 if P then if Q then ~ if P && Q then ~ は完全に一致します。
0そうだね
プレイ済み
返信[45]
親投稿
Daisuke 0909daiki09
いつの間にか大変な事に…
2そうだね
プレイ済み
返信[46]
親投稿
けい kei0baisoku
>とりゅふさん 関係の無い人同士で勝手に盛り上がっててごめんなさいです(^^; 興味のあるところや気になるところがあれば、読んだり質問したりして、後は気にせずスルーしておいてよいと思います。 うえこうさん、完全に誤解を招く言い方やめてーw(>Д<) アブナさのスケールがでか過ぎるw
0そうだね
プレイ済み
返信[47]
親投稿
理解して使ってればどっちでもいいと思います〜。 ただANDが「かつ」になると言っている人も(おそらく)実際は&&を使ってると思うし、「かつ」でANDを使う人は理解出来てない初心者に多いような気もするんで、だったら&&使った方がいいですよ〜って教えてあげたい感じだったりします。
2そうだね
プレイ済み
返信[48]
親投稿
おちゃめ ochame_nako
うえこうさんへ A=2、かつ、B=4を判定したい場合にA==2 && B==4 と記述するのがベターでA==2 AND B==4 でも問題ないというのが私の考えです。 A=2、かつ、B=4を判定したい場合にA AND B と記述すると明らかに間違いですが、A && B としても正しくはありません。 A && Bが正しく動作するのはAが0もしくは2という値を取り、Bが0もしくは4という値を取るときのみだからです。 したがって、IF文が正しく動作しないという場合はANDを&&に変えれば解決できるという単純なものではなく比較演算子を省略しないのがベストということです。 そして、みき★さんも書かれていますがANDで正常に動作しない場合もあるので比較演算子を省略しない場合でも&&を使うのがベターです。
0そうだね
プレイ済み
返信[49]
親投稿
れい rei-nntnd
動けば何でもいいと思うよ。 動くのが一番大事。 まぁ人時場合によってはべき論が必要なときもあるけども。 覚えやすかったり、指針になったりするからどうしたらいいか悩む人には方法論もいい。 でも一番大切なのは動くこと。 Andでも&&でもどっちでもいい
1そうだね
プレイ済み
返信[50]
親投稿
nobu divine-creator
ラケットを振るプログラムの質問からプチコン戦争まで、スクープ的な出来事が起こり過ぎている…! 流石、スマ学の元ネタですなw♪
1そうだね
プレイ済み
返信[51]
親投稿
MIKI ifconfig
れいさん いや~将来有望な若手ですから、ぜひじっくりと育ててください。abs かましたのは反省している。 親切な人多いのはいいんだけど、時として船頭が多すぎるきらいもありますね。 >Andでも&&でもどっちでもいい むー、これほど力説しても * は候補にすら上らないのか・・・
1そうだね
プレイ済み
返信[52]
親投稿
けい kei0baisoku
>みき先生 コードゴルフだと自然に使ってますね。 他の人も近い用途で使ってた気が。
0そうだね
プレイ済み