コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
ジドオブ ◆C5SvT64/Rtme
2023/11/29 8:41
質問
関数でプログラミングする利点を教えてください
今までラベルでゲームの場面の切り替えしていたんですが、最近の高クオリティゲームは大半が関数で切り替えみたいなことをしています。
何故皆さんが関数でやってるのか教えて欲しいです。

コメント

アバター
あきと 2023/11/29 16:01 ◆Bz8zeG7wRHNQ
場面の切替を関数でやるとは?
タイトルやゲーム本編・ハイスコア画面のようなシーケンス切替ならラベルでもいいような気がします。

関数の利点は
・呼び出し時にパラメータを渡せる
・ローカル変数が作れる
・呼び出した結果をリターンできる
なので処理自体が丸ごと替わる場面切替には関数使用の必要はないのでは。

もしかして場面切替の呼び出しが関数で行われてるという事ですか?
アバター
ジドオブ 2023/11/29 18:26 ◆C5SvT64/Rtme
>>あきとさん
実際に見たプログラムリストがごちゃごちゃしてて
シーケンス切り替えも関数でやってると勘違いしたのかもしれません。

でも関数の利点を知れてよかったです。
アバター
あまさとしおん 2023/11/29 21:11 ◆mzDKTVUAtwqE
他の作者さんで見かけるのですが全部DEFにしちゃう作り方もあるようです

私の場合はもともとmkII(DEFがない)経験して3号以降も続けてるので「サブルーチンが基本、DEFはサブルーチンより小さい部品」というイメージで使ってますが

・ローカル変数はDEFにあるけどサブルーチンにはない
・DEFからDEFは呼べるけどDEF内から外のサブルーチンには行けない
と機能は全面的にDEFの勝ちで、サブルーチン有利な点があるとすればDEFを呼ぶと処理時間がわずかにかかる(らしい)というぐらい、3号以降からプチコンを始めた人には両方を使い分ける意味がほぼないので全部DEFにする、ということみたいです
アバター
こういち 2023/11/29 21:12 ◆ou0jbJnEJ0Kb
関数の使い方も人それぞれですからね。
少なくとも僕は
DEF MAIN 'メインルーチン
 WHILE STATE!=6 '状態6がプログラム終了
  IF 0==STATE THEN
   STATE=TITLE() 'タイトル画面
  ELSEIF 1==STATE THEN
   STATE=STAGESELECT() 'すてせれ
  ELSEIF 2==STATE THEN
   STATE=OPTION() 'オプション
  ELSEIF …
  ENDIF
 WEND
END
みたいに書いてた時期はありました。
アバター
こういち 2023/11/29 21:15 ◆ou0jbJnEJ0Kb
で、メリットですが、

・行って戻って来るのが一連の流れなので、プログラムがごちゃごちゃしづらい
・ラベルじゃないので、うっかり飛んでしまうことがない
・他のサブルーチンで同じ名前の変数を使っていても別変数として扱われるので干渉しない
などなど色々ありますが、
デメリットらしいデメリットが無いのが最大のメリットでしょうね。つまり使い得。
アバター
おちゃめ 2024/1/2 0:08 ◆jH1opV6FnGyx
あまさとしおんさんへ

ラベルは変数と同様にローカルラベルとグローバルラベルがあります。
自作関数外からローカルラベルへジャンプすることはできませんが、自作関数内からグローバルラベルへジャンプすることは可能です。(RETURNで自作関数に戻ることは可能なのでDEF内から外部のサブルーチンを利用できる)
詳細は私が発行した同人誌「プチコン3号自作関数完全マニュアル」に記述していますが、現行の動作スロット+ラベルでジャンプが可能です。
動作スロットは私の自作関数SLOTで取得可能です。
http://ochameclub.web.fc2.com/petitcom3/lecture/var.htm#SLOT

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -