まず、答えが明らかな場合は、事前にお詫び申し上げます。私はC++を初めて使用し、母国語はJavaです。Stack Overflowも初めてです。質問に問題がある場合や、他に何か必要な場合は、教えてください。
それで。私はここにこのコードを持っています:(私はベクトルとCircleShapeにSFMLを使用しています)
Ball::Ball() {
// This ugly thing calls the full constructor with a random x and y position
// in such a way the the entire ball is inside the screen.
Ball::Ball((rand() % (WINDOW_X - (2 * BALL_RADIUS))) + BALL_RADIUS, (rand() % (WINDOW_Y - (2 * BALL_RADIUS))) + BALL_RADIUS);
}
Ball::Ball(float x, float y) {
loc.x = x;
loc.y = y;
ball.setPosition(loc.x - BALL_RADIUS, loc.y - BALL_RADIUS);
ball.setRadius(BALL_RADIUS);
ball.setFillColor(sf::Color::Red);
ball.setOutlineColor(sf::Color::Black);
ball.setOutlineThickness(1);
}
そして、ここにヘッダーがあります(上記のファイルに#含まれています):
class Ball {
private:
sf::CircleShape ball;
sf::Vector2f loc;
sf::Vector2f vel;
sf::Vector2f acc;
void update();
void bounce();
void draw();
public:
Ball();
Ball(float x, float y);
void run();
};
でボールを作るとき
Ball ball;
(そして、はい、SFMLレンダリングのものはすべて機能します)、それは決して表示されません。少し調べてみると、そのloc.x変数とloc.y変数は設定されておらず、おそらく、ボールオブジェクトの半径や塗りつぶし色なども設定されていません。これらの値をコンストラクター内のstd::coutで出力すると、loc.xとloc.y、およびその他すべてが設定されているため、コンストラクターの後のどこかで設定が解除されていると思います。不思議なのは、私がボールを作成すると
Ball ball((rand() % (WINDOW_X - (2 * BALL_RADIUS))) + BALL_RADIUS, (rand() % (WINDOW_Y - (2 * BALL_RADIUS))) + BALL_RADIUS);
あるいは
Ball ball(400, 300);
すべてが完璧に機能し、ボールが画面に表示されます。私は本当に困惑している人です。誰かが私を助けることができれば、それは素晴らしいことです。
ところで、私はXcode4.5.2でOSX 10.8を実行していて、違いがあればSFMLRC2.0を使用しています。
ありがとう、
マット