龍神録レーザー部でのエラーについて
龍神録レーザー部でのエラーについて
お久しぶりです
龍神録の館のレーザーを実装するところでなんとかコンパイルは通ったんですけど、レーザーが太くなる時に
atan2:DOMAIN error
というメッセージが出てきてプログラムが止まってしまいます
OKボタンを押すと問題無く進むんですけど、このままだとゲームとして論外なんで、どなたか解決策を教えて下さい
環境はBCCでソースは館の物をほとんどいじっていません
(5/4 9:20 管理人により題名が変更されました)
龍神録の館のレーザーを実装するところでなんとかコンパイルは通ったんですけど、レーザーが太くなる時に
atan2:DOMAIN error
というメッセージが出てきてプログラムが止まってしまいます
OKボタンを押すと問題無く進むんですけど、このままだとゲームとして論外なんで、どなたか解決策を教えて下さい
環境はBCCでソースは館の物をほとんどいじっていません
(5/4 9:20 管理人により題名が変更されました)
Re:エラーについて
レーザーと当たり判定を求める式の中の、get_sita関数の中の変数thetaに使われてるatanが0の時に「エラー」と表示されるようにしたら、「エラー」が2個表示されました(その後一回弾幕がループ(もう一度レーザーが描画)するごとに2個ずつ表示されました)
これはどうすればいいのでしょうか?
これはどうすればいいのでしょうか?
Re:エラーについて
> 変数thetaに使われてるatanが0以下の時に「エラー」と表示されるようにしたら
ソースコードを見せてください。
atanが0以下のとき、の意味がわかりません。
ソースコードを見せてください。
atanが0以下のとき、の意味がわかりません。
Re:エラーについて
atan2に渡されている引数sとtが0の時、それぞれ別の表示をするようにしたら1回弾幕がループする毎にそれぞれ2回ずつ表示されました
ソースは龍神録のをコピペしたので間違いは無いと思うのですが、どこか足りてない部分があるかもしれません
ソースは龍神録のをコピペしたので間違いは無いと思うのですが、どこか足りてない部分があるかもしれません
Re:エラーについて
コピー・ペーストしたというなら、
どこかをコピー・ペーストし忘れているのかもしれませんし、
ソースコードの中で、自分の独自の処理を行っていると、
たとえコピー・ペーストしたコードがあっていたとしても、
食い違う点が出てきてしまうかもしれません。
しっかりと理屈を理解しておかないと、こういう不測の状況で困りますので、
コードを提示できなというのなら、理屈を1から理解して、書き直すしかないと思います。
こういう場合は、コードを提示しないと、解決は難しいと思いますので。
(私が回答できるかは別として、ですが)
私はレーザーをゲームとして実装したことがないので、
的確な回答はできないですが、34章を読んだ限りでは、
内積・外積を求める関数で何かを間違えていることしか考えられません
どこかをコピー・ペーストし忘れているのかもしれませんし、
ソースコードの中で、自分の独自の処理を行っていると、
たとえコピー・ペーストしたコードがあっていたとしても、
食い違う点が出てきてしまうかもしれません。
しっかりと理屈を理解しておかないと、こういう不測の状況で困りますので、
コードを提示できなというのなら、理屈を1から理解して、書き直すしかないと思います。
こういう場合は、コードを提示しないと、解決は難しいと思いますので。
(私が回答できるかは別として、ですが)
私はレーザーをゲームとして実装したことがないので、
的確な回答はできないですが、34章を読んだ限りでは、
内積・外積を求める関数で何かを間違えていることしか考えられません
Re:エラーについて
>ソースは龍神録のをコピペした
館の方はすべて VisualC++を前提としており、その場合は atan2のそれぞれの引数に 0を
入れてもそのまま実行を続けますが、BCCの場合はエラーになります。
なので、両方の引数が 0だった場合は atan2を実行しないようにしてください。
どうしても 0でもかまわず実行したいのでれば、
int _matherr(struct _exception *__e) { return 1; }
をソースのどこかに入れてください。
これで数学系のエラーは(それが良いことなのかどうかは別にして)出なくなります。
ttp://d.hatena.ne.jp/wata_d/20061017/1161052576
Re:エラーについて
皆さんありがとうございました!
atanの前に
if(s!=0&&t!=0)
を入れたら無事動くようになりました
BCCでは駄目だったんですね…知りませんでした…
どうもありがとうございました!
atanの前に
if(s!=0&&t!=0)
を入れたら無事動くようになりました
BCCでは駄目だったんですね…知りませんでした…
どうもありがとうございました!
Re:エラーについて
× ソースは龍神録のをコピペしたので間違いは無いと思うのですが
○ ソースは龍神録のをコピペしたので間違いがあると思うのですが
でお願いします(汗
VC++を前提にしているので,他が考慮出来ていませんでした。ごめんなさい。
修正したいのですが,龍神録のこのコードは前の章の内容を直すと後のコードも全て直さないといけないのがやっかいなんですよね・・;
○ ソースは龍神録のをコピペしたので間違いがあると思うのですが
でお願いします(汗
VC++を前提にしているので,他が考慮出来ていませんでした。ごめんなさい。
修正したいのですが,龍神録のこのコードは前の章の内容を直すと後のコードも全て直さないといけないのがやっかいなんですよね・・;
Re:龍神録レーザー部でのエラーについて
わかりました、以後気をつけます(笑)
元はといえばVC用だって分かっておきながらBCでやってる僕がいけないので…(-.-;)
そしてもう一個質問が出来てしまいました…
レーザーはちゃんと描画出来るようになったのですが(微妙に当たり判定にミスがありましたが…)ボスのHPを0にしてもレーザーが描画されたままになってしまいました…
これもどこかでVCと違いが出ているのでしょうか?
どなたか理由が分かる方がいらっしゃいましたら教えて下さい
元はといえばVC用だって分かっておきながらBCでやってる僕がいけないので…(-.-;)
そしてもう一個質問が出来てしまいました…
レーザーはちゃんと描画出来るようになったのですが(微妙に当たり判定にミスがありましたが…)ボスのHPを0にしてもレーザーが描画されたままになってしまいました…
これもどこかでVCと違いが出ているのでしょうか?
どなたか理由が分かる方がいらっしゃいましたら教えて下さい
Re:龍神録レーザー部でのエラーについて
むむむ・・きっとボスのHPが0になった時にレーザーに関わる構造体がリセットされていないんだと思います。
ボスのHPが0になった時
memset(レーザーの先頭アドレス, 0, レーザーの領域分);
が書いてなければ初期化漏れだと思います・・。
ボスのHPが0になった時
memset(レーザーの先頭アドレス, 0, レーザーの領域分);
が書いてなければ初期化漏れだと思います・・。
Re:龍神録レーザー部でのエラーについて
ありがとうございます!
どこに入れれば良いのかわかんなかったんですけど、とりあえずenter_boss関数の中に書いたら上手くいったんですけど、あってましたかね?(プロジェクトの中を探しても発見出来なかったので…)
つまらないミスでお手を煩わせてすいませんでした…
ありがとうございました!!
どこに入れれば良いのかわかんなかったんですけど、とりあえずenter_boss関数の中に書いたら上手くいったんですけど、あってましたかね?(プロジェクトの中を探しても発見出来なかったので…)
つまらないミスでお手を煩わせてすいませんでした…
ありがとうございました!!