投稿
ネタバレ
KU kerorinU
【K28XEV8E】なんちゃってSWITCH構文を実装。もっと良いやり方があれば教えて下さい。
1そうだね
プレイ済み
返信[1]
親投稿
この方法は、DEF-END内からGOTOでの脱出を禁止している仕様に違反しているので、そのうち出来なくなる可能性が高いです。また、スタック領域を無駄に消費する問題があります。 ラベルを計算で求める方法は良い方法だと思います。 以前、でんぺんさんが、GOTO ”ラベル文字列の計算式と”REPEAT-UNTIL TRUEを使う方法を提示していました。その場合、BREAKを使えるようになっています。参考になると思います。
1そうだね
プレイ済み
返信[2]
親投稿
KU kerorinU
コータさん>情報有難う御座います! そんなやり方があったとは。参考になります。
0そうだね
プレイ済み
返信[3]
親投稿
けい kei0baisoku
ほとんどの場合、ELSE IFで事足りるのでそれで済ませてます。(3.1.0以前でもOK) 大きなゲーム作った時に一回だけSWITCH-CASEが欲しくなってこうやりました。↓ 多分でんぺんさんのは、これ全体をREPEATで囲ってたと思います。
1そうだね
プレイ済み
返信[4]
親投稿
けい kei0baisoku
G_SUB_SEQには整数が入ってます。 ゲーム進行を一時止めておこなう演出の種類です。
1そうだね
プレイ済み
返信[5]
親投稿
個人的な好みであれば、IF-THEN-ELSEIF[繰り返し]-ENDIF でやります。ELSE IFはENDIFの借金をしているみたいな気がして好きではありません。CASEの中が名前を付けられるぐらいまとまったものなら、CALL命令の関数名に文字列配列を使います。プチコンで、SWICHに近いのは、ON GOTOとON SOSUBだと思います。
1そうだね
プレイ済み
返信[6]
親投稿
KU kerorinU
成る程、、、基本的にIF~ELSEIFで済ませ、フォールスルーが欲しくなったらでんぺんさんやけいさんのやり方がベターという訳ですね。有難う御座います。
1そうだね
プレイ済み
返信[7]
親投稿
いつのまにか名前が!? 僕が提示したやり方はSWITCHっぽい感じで出しましたが実践ではあまり使ってないというかとくにSWITCHの形にはこだわらずに流れがスムーズになればと思ってますね。なので僕も基本的にはELSE IF(最新版ならELSE IF)を多用する事が多いですが、ケースによってはけいさんみたいなやり方も考えます。 そういえばON GOSUBって前からありましたっけ? 前に命令表を見たときにはなかったように記憶してたんですが、気のせいだったかな…。
1そうだね
プレイ済み
返信[8]
親投稿
初版はわかりませんが、ON GOSUBは、mkIIのときからあります。
1そうだね
プレイ済み
返信[9]
親投稿
KU kerorinU
ON GOSUBは初代からありますね。
1そうだね
プレイ済み
返信[10]
親投稿
情報ありがとうございます。それじゃ気のせいか、それとも命令表から一時的に抜けていたか勘違いかってところかな〜。なんでGOTOはあってGOSUBはないんだろう?って思った記憶があるんですよね。違う命令だったかなぁ? ちなみに僕は3号からの人なので初代やmkIIの事はよくわからないです…。
0そうだね
プレイ済み
返信[11]
親投稿
けい kei0baisoku
ON GOTO/GOSUBの話が出たのでついでに……… 私もマニュアル見て「おっ、これswitch-caseポジションの機能だな」と思ったのですが、まだ使える場面に出会った事が無いです。 少ないとそもそもELSEIFがシンプルというのもありますが、処理が大きいからからまとめようとしてもコータさんの言うようにまず関数化になります。 分岐はたくさんあるが処理は小さい場合は適してると思うのですが、連番じゃないとダメという制約があるため、写真貼った私が作った物も使えずほかの方法に行きました。 という感じで、個人的には帯に短したすきに長しなので、いい活用場面があったら覚えておきたいです(´з`)
1そうだね
プレイ済み
返信[12]
親投稿
ちーたけ hello.world256
3号はDEF ~ END内からGOTOとかで抜け出すと自動でスタックが滅されると思ったんだけどなあ~(^~^;
1そうだね
プレイ済み