現在、ゲームもどきをDxlibで作っていて、そのコードのリファクタリング中です。
キー入力を受け付ける関数などのあるファイルをクラスにし、文法的なエラーを0にして実行したところ、
写真のような状態で実行されてしまいました(縦に並んだ数字はデバッグ時に使用したDxPrintf命令によるものです)。
正直、なぜこうなるのか分かりません。
中途半端な知識でクラス化したことは原因の一つだと思いますが...
ちなみに通常はこうなります。
キーを押してもいないのに画面が切り替わる
キーを押してもいないのに画面が切り替わる
- 添付ファイル
-
- TestApp.zip
- (389.62 KiB) ダウンロード数: 110 回
[hr]
Is it true?
Function = a==b;
Is it true?
Function = a==b;
Re: キーを押してもいないのに画面が切り替わる
game.cppのscが持っているkが持っているkeyが未初期化のため不定の値が入っており、
それがたまたま0ではなかったのでScenes::Menuの中のchangeSceneByKeyにより画面が切り替わったものと思われます。
それがたまたま0ではなかったのでScenes::Menuの中のchangeSceneByKeyにより画面が切り替わったものと思われます。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: キーを押してもいないのに画面が切り替わる
>みけCATさん
返信ありがとうございます。
keyを初期化するよう変更してみます。
返信ありがとうございます。
keyを初期化するよう変更してみます。
[hr]
Is it true?
Function = a==b;
Is it true?
Function = a==b;
Re: キーを押してもいないのに画面が切り替わる
以下のようにコードを変更したのですが、起動してもタイトル・メニュー画面になりませんでした。
[hr]
Is it true?
Function = a==b;
Is it true?
Function = a==b;
Re: キーを押してもいないのに画面が切り替わる
起動するとタイトル画面になり、1キーを押すとStage1が始まるところまで改造しました。
1階層上からコマンドプロンプトでTestApp.exeを起動することにより、画像も表示されました。
1階層上からコマンドプロンプトでTestApp.exeを起動することにより、画像も表示されました。
- 添付ファイル
-
- TestApp_modified.zip
- 改造済みTestApp
- (1.97 MiB) ダウンロード数: 107 回
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: キーを押してもいないのに画面が切り替わる
ソースコードありがとうございます。
今までは単純に変数に別名を付けるだけだと思っていたレファレンス(参照)を使えば
オブジェクトをコピーせずに渡すことに驚きました。
もしかして、オブジェクトを値渡しで渡していたからあのようなことが起きてしまったのでしょうか?
今までは単純に変数に別名を付けるだけだと思っていたレファレンス(参照)を使えば
オブジェクトをコピーせずに渡すことに驚きました。
もしかして、オブジェクトを値渡しで渡していたからあのようなことが起きてしまったのでしょうか?
[hr]
Is it true?
Function = a==b;
Is it true?
Function = a==b;
Re: キーを押してもいないのに画面が切り替わる
「オブジェクトを値渡しで渡していたから」ではありません。
そもそもWinMain関数からscにオブジェクトを渡さずに、独立したKeyクラスのオブジェクトを使用していた問題を修正しました。
そもそもWinMain関数からscにオブジェクトを渡さずに、独立したKeyクラスのオブジェクトを使用していた問題を修正しました。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: キーを押してもいないのに画面が切り替わる
そうだったんですか。みけCAT さんが書きました:「オブジェクトを値渡しで渡していたから」ではありません。
そもそもWinMain関数からscにオブジェクトを渡さずに、独立したKeyクラスのオブジェクトを使用していた問題を修正しました。
とりあえず、当初の問題は解決しましたので「解決」としておきます。
「独立したオブジェクトを使用するのがまずい理由」はググって理解しておきます。
[hr]
Is it true?
Function = a==b;
Is it true?
Function = a==b;