ページ 11

学校祭用ゲームのバグについて

Posted: 2014年10月16日(木) 23:18
by こーもり
こんばんは、こーもりと申します。

いきなりで申し訳ないですが本題に入らせていただきます。

今、学校祭に向けてゲームを作成しているのですが、ある状況でプログラムが動作停止してしまうバグで困っています。
もしよろしければ、なんのバグなのかと解決策を教えていただきたいです。

あと、申し訳ありませんがゲームはパッドでのみ操作可能になっています。

BCCを使用しプログラムを作成しています。


バグは、最初の読み込み画面(LoadingClass)からアクション画面(ActionClass)へ推移するときに、パッドの方向キーを押していると、推移した後のPlayer[0]->Update()が動かなくなり動作停止してしまいます。
推移時に押していない場合はちゃんと動くのですが……。


プログラムコードは[url]http://[/url]にアップロードしました。
 当掲示板は小学生なども訪れる関係上アダルトな内容を含むサイトへのリンクは禁止させて頂いております。 by ソフト屋

プログラムは起動時にLoading画面になっています。
そこから45フレーム後に推移するようになっているので、パッドの方向キーを押しっぱなしで起動するとそのバグがすぐに再発するようになっています

あまり時間がなく、申し訳ないのですが、よろしくお願いします。

Re: 学校祭用ゲームのバグについて

Posted: 2014年10月17日(金) 01:16
by 顔芸

コード:

class StageClass{
protected:
//	int *area;
	BlockBase **area;
...

コード:

StageClass::StageClass(){
	area = new BlockBase *[1];
	area[0] = new BlockBase();
...
なんかやばそうですねー2段に確保してるとこが.
よく追ってないけどそもそもポインタのポインタじゃないと本当にだめなんですかね・・?

c++で書くならリストやベクタもあるんでそれ使うとか,BlockBase(?)の最大数をあらかじめ決めておいて
ポインタの配列にしてみるとか,バグの入りにくい実装に変えられそうです.

Re: 学校祭用ゲームのバグについて

Posted: 2014年10月17日(金) 13:53
by softya(ソフト屋)
サイトを訪れた所、アダルト系アップローダだったのでリンクを閉鎖させていただきました。
なお、上限に達していたためダウンロードも不能だったので私はソースコードも確認できおりません。御了承下さい。

Re: 学校祭用ゲームのバグについて

Posted: 2014年10月17日(金) 21:13
by こーもりー
こんばんは、こーもりです。
この板で質問した後に登録してしまったので、名前を変えさせていただいています、ご了承ください。

顔芸様。

二重ポインタにしているのは、
  • ステージでのブロッククラスの派生後の消えたり現れたりするブロックなどをnewするのためのポインタ化
  • そのブロック数は固定でなく、ファイルから読み込むのでブロック個数分のメモリを確保するのにポインタ化
の2点で考えているからです。

書かれている "リスト" については、まだ勉強していないのでこれをきっかけに勉強しようと思います!
ご返信ありがとうございました。



softya(ソフト屋)様。

すみません、ファイルの期限が切れていました。
また、アップローダについてですが、他のもの知らないので、次回何かお願いすることがあれば、その際に調べて他のアップローダにアップする形で行います。

お手数かけまして、どうもスミマセン。また、何かあったときにはよろしくおねがいします!



最後にバグについてですが、友人と話しているときに答えを貰え、自己完結してしまいました。
ファイルがいつまで残っていたのか分からないので、何人に恥ずかしい質問を見られてしまったかわかりませんが……。
とりあえず、起こった事象と理由、解決策を書きます。
  • バグ
    キャラセレクトの状態から、ステージロードの状態まで方向キーを押しておくと動作停止してしまう。
  • 理由
    キャラセレクトでは後で追加使用と思っていたが、時間がなくて作成するのを諦めたので、その今まで作ったクラスをそのまま使用していた。
    そのせいで、1フレームだけキャラセレクトが行われ、作成していないキャラを選んでしまい、newされていないキャラの関数を呼んでしまっていたので動作停止した。
  • 解決策
    キャラセレクトでのキーの入力をさせないようにした。
くだらないバグで騒いでしまって申し訳ありません。
閲覧してくださった皆様、返信していただいた顔芸様、softya(ソフト屋)様。
本当にありがとうございました。

勝手ですが、これで解決とさせていただきます。