トピック
harumaki macd29

New3DS(LL)じゃない人に質問

画像のプログラムはNew3DSならNew3DSですね。無印3DS(2DS)なら無印3DSですね。と表示をしたいんですけど、画像のプログラムで無印3DSだと正しく無印3DSですね。と表示されますか?教えてください!
2そうだね
プレイ済み
返信[1]
親投稿
Hanzo rzsense
プログラムを実際に試していませんが、それだと常に@2の方、つまりNew3DSと判定されます。 IF HARDWARE<=0 THEN ・・・ とすべきかと。
6そうだね
プレイ済み
返信[2]
親投稿
なぜ IF 0>1 THEN で判定ができると思ったのかが知りたい…。いや、どう勘違いしたのか知ることで、なにかわかるかもしれないという純粋な興味です。
4そうだね
プレイ済み
返信[3]
親投稿
みむ*mim hidemimtp
?と変数が、ごっちゃになってるのかな? 例えば H=HARDWARE IF H==0 THEN @1 ELSE @2 @1 M$=”むじるし3DSです。” DIALOG M$ END @2~ としたいのかな? (元のプログラムだと、仮に@1に飛べても続けて@2も実行されちゃうので、ENDをつけるとか、GOSUB~RETURNにするかなどしないとダメですね)
2そうだね
プレイ済み
返信[4]
親投稿
比較式がぶっ飛んでたorz
1そうだね
プレイ済み
返信[5]
親投稿
harumaki macd29
なるほど……まだよくわかってなかったので、もう一度初心者口座を見てきます……
0そうだね
プレイ済み
返信[6]
親投稿
ΖΕΧ ZEX256
解ってなかったのかよ 0>1 こんな事には成らない訳で、THENが実行されることは無い
0そうだね
プレイ済み
返信[7]
親投稿
DIALOG””はおそらくボタンウエイト代わりに使ってるのかなと思いますが、ちょっと違和感はありますね。 ただそれはいいとしても、やっぱりIFは誰が見ても問題があるというかおかしいと思われるので、その辺はちゃんと理解した方が良さそうですね。 IFはIF 式 THENという形式で、式の結果によって分岐する命令です。なので、式の部分が0>1というのは普通じゃ考えられないというかIF(もし)0>1(0が1より大きい)THEN(ならば)という明らかに矛盾した判定をしているので絶対に成立しないのです。(絶対に成立しない式として書いている意図なら正しいですが) と言うことで、色々と大変だとは思いますが、頑張ってください!
1そうだね
プレイ済み
返信[8]
親投稿
Hanzo rzsense
「1+1」「3*4」「10/5」・・・これらはみんな数式です。数式と言うのは、答えが数で得られる式のことです。 でんぺんさんが「IF 式 THEN」と書かれている中の「式」とは数式のことであり、IF文は「IF 数式 THEN 処理A ELSE 処理B」と表されます。そして、この数式の答えが0のとき、ELSEの後ろの処理Bを実行し、0でないときは、THENの後ろの処理Aを実行します。 さて、1+1などは数式であると申しましたが、その答えを表示させるのに、PRINT(?)を使って、「PRINT 1+1」とか「?3*4」とか入力しますよね? 実は「0>1」と言うのも立派な数式です、数式である証拠に「?0>1」と入力すると、数で答えが得られます。試しにやってみてください。何て表示されましたか? もしこれはIFの数式の中にあれば、処理Aと処理B、どちらが実行されますか?
0そうだね
プレイ済み
返信[9]
親投稿
そのプログラムだとIF文等がちょっとおかしいことになっていますので画像のようにに変えた方が良いと思います。(上から目線のようにになってしまってすみません)
0そうだね
プレイ済み
返信[10]
親投稿
Hanzo rzsense
0>1のように、不等号を使った数式のことを、不等式といいます。それに対し、1+1=2のような式は、等式といいます。ただし、プチコンでは、等式を表す場合、1+1==2のように、=を2つ書きます。 さて、不等式にせよ等式にせよ、数式ですから、数で答えが得られます。ただし、得られる答えはたった2通り、その不等式(等式)が正しければ1、間違っていれば0になります。 次のように、正しい(間違っている)不等式(等式)をPRINTして、得られる答えを確かめてみてください。 ?0>1 ?0<1 ?1+1==2 ?1+1==3
1そうだね
プレイ済み
返信[11]
親投稿
Ϊċăņ ďо įт hikahikaru3
tip 文字列を左辺にして定数を右辺にして比較演算をすると3になる(使い道が分からないとか言ったら負け)
1そうだね
未プレイ
返信[12]
親投稿
harumaki macd29
質問です。 自作の数字当てゲームのプログラムを少し流用して作ったのですが、これであってますか?
0そうだね
プレイ済み
返信[13]
親投稿
ツッコむと現時点ではラベルの意義が薄い
0そうだね
プレイ済み
返信[14]
親投稿
動作的にはあってると思いますよ〜。 ただあまさとさんも言われているように分岐(ラベル)が多くもあるので、外れた(当たった)時だけ飛ばすとか、むしろこの内容なら飛ばさずにIFの中で処理した方がすっきりするかもしれません。 僕ならとりあえず、 IF HARDWARE==1 THEN ?"あなたはNew3DS!ですね。" ELSE ?"あなたは無印の3DSですね。" ENDIF REPEAT:WAIT:UNTIL BUTTON(1)==#A みたいな感じにするかな。これだとラベルも不要ですしELSEの意味もあります。 あとDIALOGはボタンを押すまでのウエイト的に使ってるんだと思いますが、その辺りも普通にAボタンを押すまで待機する命令にしてみました。
0そうだね
プレイ済み
返信[15]
親投稿
みむ*mim hidemimtp
これだけなら、でんぺんさんのが一般的ですし私もそう書きますが、はるきさんの書いたソースも正しいですよ。プログラムが複雑になってくれば、はるきさんが書いたような処理もよく出てきます。まぁでもGOTOで飛ぶよりはGOSUBを使うと思いますが。。。 IF HARDWARE==1 THEN  GOSUB @HW1 ELSE  GOSUB @HW0 ENDIF REPEAT:WAIT:UNTIL BUTTON(1)==#A END ’---↑これがメインのプログラム。↓はサブルーチン(部品) @HW1 ?"あなたはNew3DS!ですね。" RETURN @HW0 ?"あなたは無印の3DSですね。" RETURN
1そうだね
プレイ済み
返信[16]
親投稿
みむ*mim hidemimtp
「ON~GOSUB」という便利な命令もあります。 ON HARDWARE GOSUB @HW0,@HW1 REPEAT:WAIT:UNTIL BUTTON(1)==#A END @HW0:?"あなたは無印の3DSですね。":RETURN @HW1:?"あなたはNew3DS!ですね。":RETURN
2そうだね
プレイ済み