GetX()関数について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
wing
記事: 18
登録日時: 8年前

GetX()関数について

#1

投稿記事 by wing » 7年前

いつもお世話になっています。
メンバにアクセスできないというエラーが出たので、GetX()を使いました。

コード:

//== gameStage.h =============
class CGameStage{
	...........
	CFish_naka fish_naka[10];
public:
	void game_main();
	...........
};
//== fish.h ==================
class CFish_naka{
	float x, y;
	...........
public:
	...........
	float GetX(){return x;}
};
//== gameStage.cpp ===========
void CGameStage::game_main(){
	...........
	if(fish_naka[ue_number-1].GetX() >= 170.0f && fish_naka[ue_number-1].GetX() <= 185.0f){
//	if(fish_naka[ue_number-1].x >= 170.0f && fish_naka[ue_number-1].x <= 185.0f){
		naka_speed = 0.0f;
		fish_naka[ue_number-1].SetX(170.0f);
		............
	}
}
しかし、うまく動きません。
原因は、GetX() >= 170.0f のように比較しているせいかと思うのですが、
まったく分かりません。
コメントアウトしたコードは構造体を使っていたころのコードです。
これは、ちゃんと動きました。

*naka_speed = 16.0fで左へ進んでいるのを170.0と185.0のどこかにきたときに
ue_number-1と同じ番号の画像を止めて170.0の座標にする、というものです。

エラーはでないのですが、止まらずにいつまでも回っています。
どなたか分かる方がいたら、教えていただけないでしょうか。

アバター
SAI
記事: 115
登録日時: 8年前
住所: はひほーひ

Re: GetX()関数について

#2

投稿記事 by SAI » 7年前

私はプログラミングに詳しいわけではありませんが、ふと思ったことを言わせていただきます。
毎フレーム16.0fだけ左に進んでいる場合、前フレームでX座標が185.5fだった時、次のフレームで169.5fになってしまい、条件に引っかからないのではないでしょうか?
Alea jacta est !

wing
記事: 18
登録日時: 8年前

Re: GetX()関数について

#3

投稿記事 by wing » 7年前

SAIさん、ご指摘ありがとうございます。
たしかにそうですね。スピードは15.0fに変更しました。
しかし、念のため14.0fにもしてみましたが、やはり止まりません。

アバター
SAI
記事: 115
登録日時: 8年前
住所: はひほーひ

Re: GetX()関数について

#4

投稿記事 by SAI » 7年前

うーん、そうですか。
ue_numberが何を示していてどのように値が変化するかわかりませんが配列オーバーなんてことはありませんよね。
VC++ならブレークポイントなどを使用してxの値の変化を調べてみてはいかがでしょうか?
Alea jacta est !

wing
記事: 18
登録日時: 8年前

Re: GetX()関数について

#5

投稿記事 by wing » 7年前

SAIさん、止まりました。
GetX()の使い方は間違っていなかったみたいです。
ご指摘ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る