また行き詰まってしまいました。DXライブラリです。
-
Xoke
また行き詰まってしまいました。DXライブラリです。
こんにちは。
前回はありがとうございました。
またつまづいてしまったのでよろしければソースを見ていただいて、
その原因を教えていただきたいです。
以下のURLです。PWは「4110」です。
http://www1.axfc.net/uploader/so/2835132.zip
一応実行はできるのですがしばらくするとクリックしても応答しないようになってしまいます。
この原因を教えていただきたいです。
よろしくお願いいたします。
前回はありがとうございました。
またつまづいてしまったのでよろしければソースを見ていただいて、
その原因を教えていただきたいです。
以下のURLです。PWは「4110」です。
http://www1.axfc.net/uploader/so/2835132.zip
一応実行はできるのですがしばらくするとクリックしても応答しないようになってしまいます。
この原因を教えていただきたいです。
よろしくお願いいたします。
Re: また行き詰まってしまいました。DXライブラリです。
原因の究明を丸投げし過ぎている気がするので、もう少しご自分で頑張ってみて下さい。
Visual Studioをお使いなら、応答なしになったときにどのあたりを実行しているのか、などは分かるのではないでしょうか。
あとは、タスクマネージャでメモリ使用量を確認してメモリリークしてるかどうかを確認するとか。
Visual Studioをお使いなら、応答なしになったときにどのあたりを実行しているのか、などは分かるのではないでしょうか。
あとは、タスクマネージャでメモリ使用量を確認してメモリリークしてるかどうかを確認するとか。
-
Xoke
Re: また行き詰まってしまいました。DXライブラリです。
確かにそうですね、言葉が足りなくて申し訳ありません。
いろいろやってみたところ
最初1 Title画面表示
↓
2 Menu画面表示
↓
3 Stage画面表示
↓
4 End(×)ボタンを押して2まで戻る
ここらへんで止まるのでそこらへんの関数を昨日一日チェックしてみたのですが、
原因がわからなかったのでどなたかに教えていただきたくトピックを立てさせていただきました。
ここら辺で呼び出してる関数は
Stage_Draw,Menu_Draw,Stage_Initialize,Stage_Click,Menu_Click
等です。
改めてよろしくお願いしたいです。
いろいろやってみたところ
最初1 Title画面表示
↓
2 Menu画面表示
↓
3 Stage画面表示
↓
4 End(×)ボタンを押して2まで戻る
ここらへんで止まるのでそこらへんの関数を昨日一日チェックしてみたのですが、
原因がわからなかったのでどなたかに教えていただきたくトピックを立てさせていただきました。
ここら辺で呼び出してる関数は
Stage_Draw,Menu_Draw,Stage_Initialize,Stage_Click,Menu_Click
等です。
改めてよろしくお願いしたいです。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: また行き詰まってしまいました。DXライブラリです。
デバッガは使われていますか?
ブレークポイントで停止させて、F10でステップ実行する事で何処でループしているか確認することができます。
ブレークポイントで停止させて、F10でステップ実行する事で何処でループしているか確認することができます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
Xoke
Re: また行き詰まってしまいました。DXライブラリです。
以前見て下さった方でしょうか?
その節はありがとうございました。
デバッガですが一応以前使おうとしてみたのですが、
クリックされたらというのをどのように認識させたらいいのかわからなくてその時から使っていません。
クリックされてFaseの値が変わるというのをどのように認識させたらいいのですか?
その節はありがとうございました。
デバッガですが一応以前使おうとしてみたのですが、
クリックされたらというのをどのように認識させたらいいのかわからなくてその時から使っていません。
クリックされてFaseの値が変わるというのをどのように認識させたらいいのですか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: また行き詰まってしまいました。DXライブラリです。
ブレークポイントの使い方はわかりますか?Xoke さんが書きました:以前見て下さった方でしょうか?
その節はありがとうございました。
デバッガですが一応以前使おうとしてみたのですが、
クリックされたらというのをどのように認識させたらいいのかわからなくてその時から使っていません。
クリックされてFaseの値が変わるというのをどのように認識させたらいいのですか?
クリックされた時の処理にブレークポイントを設定すればそこから追いかけられるはずです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
Xoke
Re: また行き詰まってしまいました。DXライブラリです。
ブレークポイントの使い方ですが、
今ちょっと使ってみたところ大体わかってきました。
便利ですねこれ。
そこで今いろいろ試していたところ
唐突に「利用可能なソースはありません」というような表示がでてきたのですが、
これはどういったときに出るものでしょうか?
今ちょっと使ってみたところ大体わかってきました。
便利ですねこれ。
そこで今いろいろ試していたところ
唐突に「利用可能なソースはありません」というような表示がでてきたのですが、
これはどういったときに出るものでしょうか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: また行き詰まってしまいました。DXライブラリです。
F11とかでステップインしているとソースコードがないプログラムまで入り込んで「利用可能なソースはありません」と表示される事があると思いますが違いますでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
Xoke
Re: また行き詰まってしまいました。DXライブラリです。
F11は今は押してないと思います。
どうやら「すべて中断」というのを行ったときになっていたようです。
これはそういうものなのでしょうか?
その後いろいろ見てみたところ、
最初1 Title画面表示
↓
2 Menu画面表示
↓
3 Stage画面表示
↓
4 End(×)ボタンを押して2まで戻る
のあと、
2 Menu画面表示
↓
3 Stage画面表示
またここへの過程でFaseは3のままなのにStage_Drawがうまく行われていませんでした。
この原因をいろいろ探して見たのですがよくわかりません。
教えていただけないでしょうか?
どうやら「すべて中断」というのを行ったときになっていたようです。
これはそういうものなのでしょうか?
その後いろいろ見てみたところ、
最初1 Title画面表示
↓
2 Menu画面表示
↓
3 Stage画面表示
↓
4 End(×)ボタンを押して2まで戻る
のあと、
2 Menu画面表示
↓
3 Stage画面表示
またここへの過程でFaseは3のままなのにStage_Drawがうまく行われていませんでした。
この原因をいろいろ探して見たのですがよくわかりません。
教えていただけないでしょうか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: また行き詰まってしまいました。DXライブラリです。
ここも頭の使いドコロです。
1)のcase 3:はちゃんと判定してStage_Draw(StageNum);の行に来てますか?ブレークポイントで止まりますか?
2)Stage_Draw内にブレークポイントを貼ったら、ちゃんとブレークポイントで止まりますか?
3)そして、StageNumの値は合っていますか?
を確認しないと確認したことには成らないですね。
テストの仕方に頭を振り絞ってください。
2)Stage_Draw内にブレークポイントを貼ったら、ちゃんとブレークポイントで止まりますか?
3)そして、StageNumの値は合っていますか?
を確認しないと確認したことには成らないですね。
テストの仕方に頭を振り絞ってください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
Xoke
Re: また行き詰まってしまいました。DXライブラリです。
何度も申し訳ないです。
1)のcase3の判定をしてブレークポイントでも止めて、
値の確認をしてFaseの値もあっていてStage_Drawに来ています。
2)Stage_Draw内のブレークポイントでもきちんと止まっています。
3)StageNumの値も1ステップごとに確認しましたがあっていると思います。
ですが、二回目のStage_Drawで裏画面にFase3の状態を描画しているはずなのですが、
なぜかScreenFlipのあとでWindowを見てもFase2の状態のままです。
これはどうしてなのでしょうか?
1)のcase3の判定をしてブレークポイントでも止めて、
値の確認をしてFaseの値もあっていてStage_Drawに来ています。
2)Stage_Draw内のブレークポイントでもきちんと止まっています。
3)StageNumの値も1ステップごとに確認しましたがあっていると思います。
ですが、二回目のStage_Drawで裏画面にFase3の状態を描画しているはずなのですが、
なぜかScreenFlipのあとでWindowを見てもFase2の状態のままです。
これはどうしてなのでしょうか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: また行き詰まってしまいました。DXライブラリです。
ScreenFlipした直後にそのフレームの実際の描画がGPUで始まりますので、実際に画面に反映されるのは次のScreenFlipです。
プログラム: Draw1 → ScreenFlip → Draw2 → ScreenFlip → Draw3 → ScreenFlip
GPU動作: 動作なし → Draw1の内容を描画 → Draw2の内容を描画
画面表示: 表示なし → 表示なし → Draw1が表示by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
Xoke
Re: また行き詰まってしまいました。DXライブラリです。
GPUとは裏画面のことでしょうか?
もしそうでしたらループ内での
裏画面から表画面へ描画
↓
画面を消す
↓
座標などの遷移等
↓
裏画面に描画
という流れは理解しているつもりです。
そして先程少し言葉が足りなかったかもしれません。
レスNo.11での「二回目のStage_Draw」というのは起動してから二回目という意味です。
起動してから一回目のStage_Draw
↓
ScreenFlip
↓
一度Menuに戻る
↓
起動してから二回目のStage_Draw
↓
ScreenFlip
このときのWindowが本来Stage画面のはずなのに、Menu画面のままでした。
この原因がどうしてもわからないです。
もしそうでしたらループ内での
裏画面から表画面へ描画
↓
画面を消す
↓
座標などの遷移等
↓
裏画面に描画
という流れは理解しているつもりです。
そして先程少し言葉が足りなかったかもしれません。
レスNo.11での「二回目のStage_Draw」というのは起動してから二回目という意味です。
起動してから一回目のStage_Draw
↓
ScreenFlip
↓
一度Menuに戻る
↓
起動してから二回目のStage_Draw
↓
ScreenFlip
このときのWindowが本来Stage画面のはずなのに、Menu画面のままでした。
この原因がどうしてもわからないです。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: また行き詰まってしまいました。DXライブラリです。
最後のScreenFlip()が行われて始めて最初のDrawが画面に反映されます。
1フレーム目:Draw1
2フレーム目:Draw2 裏画面にDraw1を描画
3フレーム目:Draw3 裏画面にDraw2を描画 表画面にDraw1が表示
ですよ。表示されるまでにDraw後に2回のScreenFlip()が必要です。
1フレーム目:Draw1
2フレーム目:Draw2 裏画面にDraw1を描画
3フレーム目:Draw3 裏画面にDraw2を描画 表画面にDraw1が表示
ですよ。表示されるまでにDraw後に2回のScreenFlip()が必要です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
Xoke
Re: また行き詰まってしまいました。DXライブラリです。
そうだったのですか。
ですがなんどScrennFlipしても反映されていないと思います。
なんだかわからなくなってきました。
ですがなんどScrennFlipしても反映されていないと思います。
なんだかわからなくなってきました。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: また行き詰まってしまいました。DXライブラリです。
じゃあ、原因を絞り込みましょう。
Stage_Drawで表示が反映されない原因として考えられる事は何でしょうか? 現状において考えられるパターンを全部あげてみてください。
Stage_Drawで表示が反映されない原因として考えられる事は何でしょうか? 現状において考えられるパターンを全部あげてみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
Xoke
Re: また行き詰まってしまいました。DXライブラリです。
丁寧にありがとうございます。
StageNumの値などはきちんと入っていることが確認できたと思うので、
自分が思いつくのはあとはメモリ関係の問題しか思いつかないです。
いろいろ勉強不足で申し訳ないです。
StageNumの値などはきちんと入っていることが確認できたと思うので、
自分が思いつくのはあとはメモリ関係の問題しか思いつかないです。
いろいろ勉強不足で申し訳ないです。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: また行き詰まってしまいました。DXライブラリです。
表示されな原因として考えられるのは、
1)座標が間違っている
2)StageNumが実は間違っている
3)画像ハンドルが正常ではない。
ちなみに、zipでもらったプログラムをVC++2008でコンパイル・実行した所、ちゃんと動いていて問題ないです。
文字の所をクリックしてステージの画像に切り替わればOKですよね?
1)座標が間違っている
2)StageNumが実は間違っている
3)画像ハンドルが正常ではない。
ちなみに、zipでもらったプログラムをVC++2008でコンパイル・実行した所、ちゃんと動いていて問題ないです。
文字の所をクリックしてステージの画像に切り替わればOKですよね?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
Xoke
Re: また行き詰まってしまいました。DXライブラリです。
すべて大丈夫だと思うんですけどね・・・
そちらでは動いているのですか!?
MenuとStage画面を何度もループさせることができてますでしょうか?
あとサムネイルどおりのステージが表示されていますでしょうか?
そちらでは動いているのですか!?
MenuとStage画面を何度もループさせることができてますでしょうか?
あとサムネイルどおりのステージが表示されていますでしょうか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: また行き詰まってしまいました。DXライブラリです。
今さっき試したのですが、ステージとメニューは交互にクリックで行き来できてますね。
念の為に、VC++のメニューからリビルドしてみてはどうでしょうか?それで直るかもしれません。
念の為に、VC++のメニューからリビルドしてみてはどうでしょうか?それで直るかもしれません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: また行き詰まってしまいました。DXライブラリです。
コンパイル中にソースを直したとか、ソースをどこからかコピーしてきて古いソースに戻した等が考えられますが何が起こったかはわかりません。Xoke さんが書きました:直りました!!!
本当にありがとうございます。
正直よくわからないのですが、結局は何故だったのでしょうか?
結果としてはコンパイルされるべき時に、コンパイルされていなかったものがあったと言うことです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
Xoke
Re: また行き詰まってしまいました。DXライブラリです。
わかりました。
こんなことで二日も悩んでしまいましたが、
おかげでデバッガを使えるようになりましたし良かったです。
本当にありがとうございました。
またお願いいたします。
あと、このゲームが完成しましたら
みなさんにお暇があれば遊んでいただくのと同時に、
プログラムのアドバイスなどをもらいにまた上げにくるというのも大丈夫でしょうか?
こんなことで二日も悩んでしまいましたが、
おかげでデバッガを使えるようになりましたし良かったです。
本当にありがとうございました。
またお願いいたします。
あと、このゲームが完成しましたら
みなさんにお暇があれば遊んでいただくのと同時に、
プログラムのアドバイスなどをもらいにまた上げにくるというのも大丈夫でしょうか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: また行き詰まってしまいました。DXライブラリです。
作品お披露目掲示板もあるので活用してください。
「作品お披露目掲示板 • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewforum.php?f=78
「作品お披露目掲示板 • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewforum.php?f=78
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
Xoke
Re: また行き詰まってしまいました。DXライブラリです。
分かりました。
完成したらそちらの方に行ってみたいと思います。
リファレンスを見たり調べてみてもそれっぽい関数が見つからなかったのでまた質問させてください。
画像を読み込んでその画像の指定のピクセルのRGBを取得することは可能ですか?
完成したらそちらの方に行ってみたいと思います。
リファレンスを見たり調べてみてもそれっぽい関数が見つからなかったのでまた質問させてください。
画像を読み込んでその画像の指定のピクセルのRGBを取得することは可能ですか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: また行き詰まってしまいました。DXライブラリです。
とんでもなく遅いのでやらないほうが良いと思います。Xoke さんが書きました: リファレンスを見たり調べてみてもそれっぽい関数が見つからなかったのでまた質問させてください。
画像を読み込んでその画像の指定のピクセルのRGBを取得することは可能ですか?
必要な理由を教えて下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
Xoke
Re: また行き詰まってしまいました。DXライブラリです。
そうなのですか。
タワーディフェンスゲームを作ろうと思っています。
最初にステージを読み込んだ時にマスごとにそこが道か道以外の場所か(タワーが設置出来る場所とできない場所)というのを、
そのマスの左上の色で判定しようと思っていました。
参考画像がさっき見ていただいたプログラムと一緒に入っていると思います。「Stage”X”.png」というファイルです。
画像から判定するなにかいい方法がないでしょうか?
タワーディフェンスゲームを作ろうと思っています。
最初にステージを読み込んだ時にマスごとにそこが道か道以外の場所か(タワーが設置出来る場所とできない場所)というのを、
そのマスの左上の色で判定しようと思っていました。
参考画像がさっき見ていただいたプログラムと一緒に入っていると思います。「Stage”X”.png」というファイルです。
画像から判定するなにかいい方法がないでしょうか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: また行き詰まってしまいました。DXライブラリです。
マスのサイズが大きくマスの数がさほどない場合限定なら、さすがに左上1ドット程度ならロード時に処理するだけぐらいの余裕はあると思います。
LoadSoftImageで最初に情報だけ拾って、あとはハンドルを捨てれば良いでしょう。
http://homepage2.nifty.com/natupaji/DxL ... html#R20N1
LoadSoftImageで最初に情報だけ拾って、あとはハンドルを捨てれば良いでしょう。
http://homepage2.nifty.com/natupaji/DxL ... html#R20N1
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。