5年前STG制作での質問です。自機(Player)の座標が正確に取得できず困っています。自分で色々と調べてみたところ以下のコードのPLAYER::GetPositionが自機の初期位置(x=180,y=420)を代入してしまっている事が分かりました。これが原因だと思うのですが、解決方法が分かりませんでした。私のイメージではPLAYER::GetPositionは自機の今現在の座標を*x,*yに代入するものだと思っていたのですが、上記のように意図した座標とは違う値が代入されていました。どのようにすれば正確な自機の座標が取得できるのでしょうか?。稚拙な文章で申し訳ありませんがどなたかアドバイスをお願いします。私はこの構成http://bituse.info/game/shot/2を参考にして作っています。質問の件なのですが、DrawFormatStringで今現在の座標を表示するなどしてみたところGetPosition以外の関数(MoveやShot,Draw)の中ではちゃんと座標が表示されるのですが、やはりGetPositionの中だけで初期座標が表示されてしまいます。なにか初歩的な勘違いをしてしまっているのでしょうか?。不正な値を検出する、GetPositionを呼び出すコードを見せて下さい。呼び出しているコードはこれです。control.cppという場所にあります。controlクラスでplayerなどのインスタンスを生成する仕組みにしています。rad;}このGetAtanを呼び出しているコードはこれです。switch内のcase1,case2で呼び出しています。controlクラスはシングルトンにしています。controlがプレイヤーも保持しているのですね。初期座標が得られてしまうというのは、まずplayerが生成されたのちに座標が変更されていない可能性を疑います。座標の変数は正しそうです。なると、GetPositionされた時点でまだ自機が動いていない可能性があります。生成されたPlayerにちゃんとアクセスできているか、本当に正しく移動しているかを確認したいところです。playerの生成部分を見せて下さい。5年前うえで投稿したコードはcsvファイルの読み込みも行っていてそれを元にenemyを生成していますが、長すぎたので省略しました。関係があるのか分かりませんが下のコードはplayerの実行部です。5年前はい、その状態になっています。DrawFormatStringでも確認しましたが、初期位置のままでした。自分で試してみないと原因がわからないですね。ソースコード一式もらうことは出来ませんか?zipなどにしてどこかに上げてもらえればこちらでデバッグしてみますが。5年前すいません遅くなりました。http://filescase.biz/src/COMP100MB1394.zip.htmlここにあります。パスワードはkarです。35別物を指していますね。原因はPlayerが別物だということ。Playerを生成しているのはControlだけなので、COんtろlが複数存在しているという事。CONTROL;もうシングルトンじゃないですね。&CONTROL::GetInstance();にしたところ正常に動きました。この方法でシングルトンにするならコンストラクタはprivateするなりする必要があります。今回のように新しく作ってしまうかもしれないからです。プログラム中で唯一であることを保証できなければいけません。動きました!!ありがとうございます。コンストラクタはprivateにしなければいけないんですね。シングルトンがどのようなものなのかあまり知らずに使ってしまっていました。ご迷惑をおかけしました。勉強していきたいと思います。長い間お付き合いいただきありがとうございました。困っていたもので、本当に助かりました。ミクプラは自由にリンクできます。