投稿
DEF命令がよくわかりません(> <) ヘルプも読んだのですが、理解できませんでした… どなたか解説してもらえれば幸いです!
5そうだね
プレイ済み
返信[1]
親投稿
次のようなプログラムを書いて試してみてください 単純に引数の値を出力する関数です この書き方の場合、戻り値はありません DEF FUNC S$ PRINT S$ END FUNC "TEST FUNC!"
0そうだね
プレイ済み
返信[2]
親投稿
次に戻り値をもつ関数です この例では1つ目の引数と2つ目の引数を足した結果を返却します DEF FUNC2(A,B) RETURN A+B END PRINT FUNC2(5,7) PRINT FUNC2(8,3)
0そうだね
プレイ済み
返信[3]
親投稿
戻り値が2つ以上ある関数の書き方は DEF FUNC3 S$ OUT RET1$,RET2$ VAR IDX=INSTR(S$,",") IF IDX>-1 THEN RET1$=MID$(S$,0,IDX) RET2$=MID$(S$,IDX+1,LEN(S$)) ELSE RET1$=S$ RET2$="" ENDIF END FUNC3 "TEST,PRG" OUT S1$,S2$ PRINT S1$ PRINT S2$
0そうだね
プレイ済み
返信[4]
親投稿
上二つの例は関数にするまでもないようなテストプログラムですが 実際に関数にする内容は『繰り返し実行する処理』をまとめたり ややこしい条件をスッキリさせるのに使ったり出来ます
1そうだね
プレイ済み
返信[5]
親投稿
二回以上同じような処理を使いたい時に関数に出来ないかをまずは考えてみましょう どこの画面でもXボタンを押したらオプション画面が呼び出せるようなゲームを作るプ場合 オプションを表示して制御する関数を作っておけばタイトル画面でも プレイ中でもオプションを呼びたい所に関数を呼び出す記述を書くだけで済みます 何度も同じ記述をあちこちに書くとバグが有ったときには書いたところ全てを同じように直さないといけないし 修正漏れが発生する可能性も高くなります なので、まとめられそうな箇所はまとめて関数にしてしまうのがお勧めです 無理そうなら無理に関数化しなくて良いんです 出来そうなところから試してみてください
2そうだね
プレイ済み
返信[6]
親投稿
すみません、消し忘れがあるまま投稿してしまいましたorz 3つ目の関数は『,』で区切られた文字を2つに分解して取得する関数です この『,』を『-』に変えると 郵便番号の入力等「123-1234」の入力を前と後ろに分解出来ます そのあと、郵便番号で住所検索等させるとか データとしては『-』なしの1231234で保存する等の処理が可能です
0そうだね
プレイ済み
返信[7]
親投稿
この処理何回も書いてる気がする とか、この処理こっちでも使いたいな とか、思ったら関数にするチャンスですよ あまり、ゲームのプログラムは書いていないため いい例が書けなくてすみません 質問があれば答えますのでサンプル書いて試したりしてみてください
0そうだね
プレイ済み
返信[8]
親投稿
ゆうたん yu-tan-sama
まず前提として、DEF命令とは… 新しい命令教えてやるから覚えとけ という命令です 今度からこういう命令だすから、こう動けという指示です 細かい使い方はりゅうまごさんの例の通りですね~ 強いて付け加えておくなら DEFの中で定義した変数は外とは完全に独立して扱われます なので、中でVAR X,Yとか記述してあげればXとかYみたいなわかりやすい変数名を遠慮なく使えるのでサブルーチンよりも便利ですしバグも引き起こしにくいです
1そうだね
プレイ済み
返信[9]
親投稿
STiNGER STiNGER8901
例えばこんな使い方。 PRINTって、大抵LOCATEやCOLORと組み合わせて使うと思うんです。 だったら合体させちゃおう! すっきりコンパクトになりました。
2そうだね
プレイ済み
返信[10]
親投稿
みなさん本当にありがとうございました! なんとなくですけど理解できました! 大雑把に言うと、『命令を組み合わせて命令を作る』ということですね! かなり便利な命令ですね! 勉強になりました!ありがとうございました!!
1そうだね
プレイ済み