- ベストアンサー
ゲーム中にエラー
C++でのゲームプログラミングについての本を読んでいるんですが記載されているソースを打ち込みコンパイルし実行するとゲーム途中で「Abnormal program termination」というエラーが出てしまいます。何が原因なんでしょうか?またどうしたら解決できるのでしょうか? 本は「C++わくわくゲームプログラミング教室」という本です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Borland C++は詳しくないのですが、デバッガで「メモリ保護」等が起きた時点でトラップできれば関数のコールトレースで、どこの関数で問題が起きたかを調べることができたりします。 これ↓とか使えないんでしょうか?無料みたいですが。 http://www.codegear.com/jp/downloads/free/cppbuilder プログラム全体がわからないので勘で言えることは、「違う移動パターンの敵を一種類増やしただけ」との事なので、 ・敵の種類別の何らかの作業ワークが足らない。 ・ピーク時の敵の数分の作業ワークが足らない。 ・移動パターンの定義に間違いがあって移動パターンがちゃんとを再生できない。 ・登場する瞬間の初期化に失敗している。 ぐらいかな? 今思いつくのは。 それと高度なテクニックですが「Abnormal program termination」で一緒にアドレスとかの情報が出ていると思いますので、リンク時にマップ情報を取ればおよそどの関数で異常終了したか分かります。さらにアセンブルリストも取れば、どの命令実行中かも調べることは可能です。 そういえば「Abnormal program termination」の詳細は、どのような異常なのでしょうか?聞けば何かのヒントを出せるかもしれません。 出せないかも知れませんが(^^ゞ
その他の回答 (2)
- zwi
- ベストアンサー率56% (730/1282)
「Abnormal program termination」だけだと単にプログラムが異常終了しました。と言うことを表しているだけですね。 メモリ関係かファイル関係か、それだけでは何も予想ができないです。 (1)開発環境は何でしょうか? (2)開発環境はデバッガとかを搭載していて、トレース可能でしょうか? (3)プログラムのどの辺りで異常が発生したか予想がつくようなタイミングでしたか? この手のバグを追っかけるとデバッグの良い勉強にはなるので、がんばってデバッグしてみましょう!
補足
解答ありがとうございます。開発環境はBCC Developer1.2.21でコンパイラがBorland C++、ライブラリがDXライブラリというものです。まったく予想してなかった所でエラーが発生しました。横型のシューティングゲームで違う移動パターンの敵を一種類増やしただけでエラーがでてしまいました。ソースコードも間違ってないと思いますし自分なりにprintfDxという出力関数を使って処理を追っていろいろ原因を調べましたが原因がわかりません。PCが古いんでメモリ関係などが原因かなぁーと思っています(OSはMeです)。もう少しデバック頑張ってみます。
- amazontester
- ベストアンサー率22% (11/48)
アマゾンのリンクを見ると誤植がかなりある本のようですね。 書籍の出版元のHPを見ても正誤表すら掲載されていません。 ラトルズHP http://www.rutles.net/red/support.html この本の著者の書籍は何冊か持っていて中々良書が多いと思っていますが、 その本に関しては初心者に薦められないと思います。 Amazon http://www.amazon.co.jp/14%E6%AD%B3%E3%81%8B%E3%82%89%E3%81%AF%E3%81%98%E3%82%81%E3%82%8BC-%E3%82%8F%E3%81%8F%E3%82%8F%E3%81%8F%E3%82%B2%E3%83%BC%E3%83%A0%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E6%95%99%E5%AE%A4%E2%80%95Windows98-2000-Me-XP%E5%AF%BE%E5%BF%9C/dp/4899771657 原因を考えたり解決できるレベルならともかく、初心者向けの書籍にしては 間違いが多すぎるので・・。一番いいのはCDーROMのファイルをそのままコンパイルして それを元に自分の作品にしていってはどうでしょう? 私は著者の本のJavaのゲームプログラミングやDirectXの方はかなりの良書だと思っているだけに、C++の方はちょっと残念です。
お礼
解答ありがとうございます。確かにエラーの出たページまでにも間違いが結構ありました。簡単な間違いならすぐわかるのですが「Abnormal program termination」というエラーは初めてなんで困ってしまいます。 Javaのゲームプログラミングも読みましたがそちらはいい本だったのにC++は・・・残念です。
お礼
何度も解答ありがとうございます。問題解決しました(^o^)敵キャラの描画を行う関数の引数(敵画像リストのインデックス)が間違っていました。本のソースが誤ってました。こんな単純な間違いにすぐ気づかず質問してしまいすいません。解答してくださった皆さんありがとうございました、おかげで途中で挫折せずに続けられます。速く読んでしまってオリジナルのゲーム創りをしたいと思います。