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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
こーもり

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

#1

投稿記事 by こーもり » 10年前

こんばんは、こーもりと申します。

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

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

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

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


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


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

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

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

顔芸

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

#2

投稿記事 by 顔芸 » 10年前

コード:

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

コード:

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

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

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

#3

投稿記事 by softya(ソフト屋) » 10年前

サイトを訪れた所、アダルト系アップローダだったのでリンクを閉鎖させていただきました。
なお、上限に達していたためダウンロードも不能だったので私はソースコードも確認できおりません。御了承下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

こーもりー

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

#4

投稿記事 by こーもりー » 10年前

こんばんは、こーもりです。
この板で質問した後に登録してしまったので、名前を変えさせていただいています、ご了承ください。

顔芸様。

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

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



softya(ソフト屋)様。

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

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



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

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

閉鎖

“C言語何でも質問掲示板” へ戻る