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

アバター
みどり ◆UuFOYlGswjhS
2019/12/7 11:23
質問
(3号)メインループを通らない!?
プチコン3号で制作している作品「グッドトラップ」の話です。
主人公が埋まるバグは修正できましたが、今度は弾を打とうとするとメインループを通らなくなるという事態になりました。何が悪いか教えて頂けると幸いです。問題の公開キー「DKENVXGX」ファイル名:GOODTRAP

コメント

アバター
シロ 2019/12/7 12:24 ◆g0oUAxBiWqcj
今日は環境が無いから投稿内容から予想、TMMOVEの後にメインループに戻る処理があるか確認してください、もしあるなら戻る処理の前に適当に目立つプリント文を追記して、実行した際そのプリント文が画面に表示されるか確認してください。もし出ないならTMMOVEの後から戻る処理中でプリント文を追記して、何処まで進んでいるか確認して処理が繋がるように修正してください。これをプリント文デバッグと呼ぶ。
アバター
Na 2019/12/7 13:06 ◆QoELVrBXBQCI
変数TC,TU,TMSがごっちゃになってます。
@TMHSの中では管理番号がTU、SPUSEDの結果がTC
@TMMOVEの中では管理番号がTMS、SPUSEDの結果がTUですよね。
610〜620行あたりでTCとTUを間違えて書いてます。
場所によって変数名を変えるとややこしくなるので、統一したほうがいいと思います。
アバター
みどり 2019/12/9 19:29 ◆UuFOYlGswjhS
シロさん>プリント文でメインループを通らないのを発見しました。
Naさん>変数の統一ですか…確かにぐちゃぐちゃになりかねないので流用できるものなら流用するのも手ということですか…

ご意見ありがとうございました。デバッグ作業を行います。
アバター
みどり 2019/12/9 20:11 ◆UuFOYlGswjhS
デバッグしました。…が、弾が打てないという問題が発生しました。
同じプロジェクトの新ver「73AN43NF」
また何が悪いか教えて頂けると幸いです。
アバター
シロ 2019/12/10 18:50 ◆g0oUAxBiWqcj
『弾が打てない』が何を意味しているか理解する必要があります、今回予想として『球が画面に表示されない』とします。まず球を打つボタン判定に入っているかプリント文を入れます。それが出来ているなら球のSP表示させている処理らへんにプリント文を出します。それも出来ているならSP座標設定処理らへんに『表示させようとしている座標』も表示出来る様にプリント文を出します。
アバター
シロ 2019/12/10 19:19 ◆g0oUAxBiWqcj
ちょっと余談

基本ゲームは『適切なタイミング』に『適切な位置に』で『適切な物を表示』させれば作れます(ただ適切を算出するために三角関数等を必要になったり設計資料が必要になったりします)。オメガフラウィー風ボスも適切なタイミング(適切で無く無駄が多ければ処理が重くなる)で適切な位置に適切な物を表示すれば作れます。複雑なフラグ管理も結局はその適切を洗い出すために必要な物です。
アバター
でんぺん 2019/12/11 12:30 ◆HfSy5ayxtyTa
極端にはゲームのプログラムは毎フレーム1枚の絵を作ってるので、その流れを理解するのが大事ですね。
なのでどうしてもバグがある時は大変でもその流れを全て追う感じに自分がインタプリタになった気持ちで1行1行を読みながら構成される画面や変数の変化をチェックして確認していくといいんじゃないかと。

そうすれば通らないプログラムがあるなら、それがなぜ通らないかもわかってくると思いますし、変数のミスなどがあった時にも気づけると思います。

なかなか地味な作業で大変だと思いますが千里の道も一歩から、ということでコツコツと頑張ってください!
アバター
みどり 2019/12/11 19:27 ◆UuFOYlGswjhS
ツララさん>プログラムが長すぎて意味が分からずしばらく考えても分からないという事態がちょくちょく発生…という状況です。
スプライト、BGに不慣れなのでそこら辺ご容赦下さい。一応何とか頑張りますが…
後、言い方にはご注意下さい。
これでは煽りに聞こえる方も居ますので…(私はあまり気にしませんけど…)
アバター
高原のな 2019/12/11 22:10 ◆bY8RViwvoODw
変数一つ一つに目的を持たせてその目的を遂行するというのが重要で、単なる流用ではないというのはそういうことですね。
同じような値を入れる変数であれば、同じものを使ったほうがよいということでもあります。(大幅修正)

TU、TC、TMSが話題に上っていましたが、それぞれ目的を設定して紙に書くとかコメントに残しておくのが良いかと思います。ただこれも、全部全部書けというわけではなく、その変数の目的が自分で分かる変数名を付けると手間が減るかもしれません。
プログラマが、そのプログラムで使うものをきちんと管理することを心掛けると少しずつバグが出にくいプログラムが書けるようになると思いますよ〜
アバター
でんぺん 2019/12/12 1:37 ◆HfSy5ayxtyTa
ちょっと気になったんですが、もしかしてプログラムをゼロから書かずに何処かからコピペ流用をたくさんしてたりするんですか?

流用は流用しやすいように作られているものや流用元のプログラムへの理解が深ければ問題ないですが、そうじゃないとかえって原因不明に感じるミスをしやすいと思います。

なんとなく発言を見て自分のプログラムなのに分からないことが多いのかな? という気もしたのでちょっとコメントでした…。

ちなみにゲーム見ましたが当たり判定が厳しいので、もう少し緩くしてあげるとゲームとして良いと思いますよ。
アバター
みどり 2019/12/13 19:25 ◆UuFOYlGswjhS
変数の目的 TC=SPUSED専用変数
TU=弾発生処理用
TMS=弾移動処理用
です。
そもそもプログラムが長すぎるんですよね…
何せ仕掛けを1つ1つSPSETとSPOFSでセットしているので…(しかも1つ針を置くだけで4行使う)
アバター
でんぺん 2019/12/13 20:36 ◆HfSy5ayxtyTa
欠点(プログラムが長くて一つ針を置くにも4行使う)に気づいているなら、それをなんとか解消してみようとするのも良いと思いますよ。
アバター
みどり 2019/12/13 20:40 ◆UuFOYlGswjhS
↑1 解消といっても、DATA文等だとまたそれはそれで長くなる…
今日公開した早期版2では少し無駄を減らしました。
アバター
でんぺん 2019/12/14 4:20 ◆HfSy5ayxtyTa
まあプログラムの長さもそうですが見やすさを工夫するとかやれることはたくさんあると思いますよ。IFなどの字下げ(インデント)もしてないようですし、そういった工夫もやることでプログラムが見やすくなると思います。

とりあえず字下げ(インデント)や空行によるレイアウト調整はした方がみやすくなると思います。
コメントはプチコン3号だと入力しづらいので僕も少なめなのでなんとも言えませんが、通常は適度に入れる感じがいいです。ただ逆にコメント過剰だとそれはそれで見にくくなることもあるかも…。

マルチステートメント(:)は多用すると見にくくなりますが、読みやすさを意識して効果的に使うと生きる場合もあります。この辺は慣れやケースバイケースで…。
アバター
でんぺん 2019/12/14 14:19 ◆HfSy5ayxtyTa
プログラムの見やすさについて、言葉だけではイメージがわかりにくいところもあるかなと思ったので始めの方だけ実例してみました。
まあこれが正解というわけではないのですがレイアウト調整すると見やすくなるという例です。今のプログラムと比較してみてください。まあそれで今のプログラムも十分見やすいという判断ならこれ以上はいいませんが…。

ちょっとプログラムの移動などもしています。SPDEFが浮いているのでこの位置じゃなくて別のところにまとめたほうがいいかなとも思いましたが、とりあえず元のプログラムの位置に残しています。

またDIMの定義は複数の場合は全てにDIMをつけずに,(カンマ)で繋げられるのでその方がいいと思います。それでも3つに分けているのは、できるだけ1行の1ライン内に収めたほうが見やすいので、それ以上になりそうな場合は分けています。

IFのインデントも適切に入れています。またCHKFILE()のところで元は一時変数に結果を入れてからIFで比較していましたが、今回の場合は直接でも問題なくその方がすっきりしそうなのでそうしました。結果がTRUEかFLASEになる場合は==などは省略出来てその方が見やすいのでそうしています。

改行だけの行は適度に入れてグループとしてのまとまりを見やすくしています。

とりあえずはまあそんなイメージで調整しただけですが元のプログラムよりもパット見でわかりやすくなっているのではないかと思います。
同じように他の部分も調整するともっと全体が見やすくなると思います。
とりあえず改行やインデントは実践しやすいのでやってみるといいと思いますよ。

コメントを書く

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

- WEB PATIO -