SFMLをテストするためにこのプロジェクトを以前にセットアップしていたので、そのコードを削除し、私が作った別のプロジェクトのコードをコピー&ペーストしました(新しいソースファイルと2つの新しいヘッダ)。 コンパイルと起動後の古い動作の取得
しかし、私は私の新しいコードでそれを構築したら、私に気づかない何らかの理由で、それはまだSFMLテストを出力
...また:もし私クリック・ビルド - >クリーンソリューション、それは完全に私のプロジェクト全体を台無しにし、ビルドが成功したにもかかわらず何らかの理由で.exeファイルの生成を停止します。
物事は私がを試してみました:
- すべてのファイルを削除し、それらを交換します。
- ビジュアルスタジオを再起動します。
- 他のコードを入力しても、同じ結果が得られます。
そのおそらく小さな問題..
EDIT:
int main() {
sf::RenderWindow window;
sf::Vector2i centerWindow((sf::VideoMode::getDesktopMode().width/2), (sf::VideoMode::getDesktopMode().height/2));
window.create(sf::VideoMode(900, 900), "JUMP TEST", sf::Style::Titlebar | sf::Style::Close);
window.setPosition(centerWindow);
window.setKeyRepeatEnabled(false);
//Player Object:
Player player({ 40, 40 });
player.setPos({ 50, 500 });
//Coin Objects:
std::vector<Coin*> coinVec;
Coin coin1({ 20, 20 });
Coin coin2({ 20, 20 });
coinVec.push_back(&coin1);
coinVec.push_back(&coin2);
coin1.setPos({ 150, 300 });
coin2.setPos({ 300, 300 });
//Score Objects:
int score = 0;
int wSize;
sf::Font arial;
arial.loadFromFile("arial.ttf");
std::ostringstream ssScore;
ssScore << "Score: " << score;
sf::Text lblScore;
lblScore.setCharacterSize(30);
lblScore.setPosition({ 10, 300 });
lblScore.setFont(arial);
lblScore.setString(ssScore.str());
//Gravity Variables:
const int groundHeight = 720;
const float gravitySpeed = 1.0;
bool isJumping = false;
bool buttonPressed = false;
//Main Loop:
while (window.isOpen()) {
sf::Event Event;
const float jumpSpeed = 100.0f;
const float moveSpeed = 1.0f;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) {
player.move({ moveSpeed, 0 });
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) {
player.move({ -moveSpeed, 0 });
}
//Event Loop:
while (window.pollEvent(Event)) {
switch (Event.type) {
case sf::Event::Closed:
window.close();
case sf::Event::EventType::KeyPressed:
if (Event.key.code == sf::Keyboard::Key::Space)
{
isJumping = true;
buttonPressed = true;
player.move({ 0, -jumpSpeed });
}
break;
case sf::Event::EventType::KeyReleased:
if (Event.key.code == sf::Keyboard::Key::Space)
isJumping = false;
break;
default:
break;
}
}
//Gravity Logic:
if (player.getY() < groundHeight && isJumping == false && buttonPressed == true) {
player.move({ 0, gravitySpeed });
}
//Player Collision
if (player.getY() >= 500)
{
player.setPos({ player.getX(), 500 });
isJumping = false;
}
//Coin Logic:
for (int i = 0; i < coinVec.size(); i++) {
if (player.isCollidingWithCoin(coinVec[i])) {
coinVec[i]->setPos({ 422234, 423432 });
score++;
ssScore.str("");
ssScore << "Score " << score;
lblScore.setString(ssScore.str());
}
}
window.clear();
coin1.drawTo(window);
window.draw(lblScore);
coin2.drawTo(window);
player.drawTo(window);
window.display();
}
}
私たちにスクリーンショットを表示するのではなく、メインループの実際のコードとして表示する必要があります。ビルドされたデバッグをコンパイルすることによって0に設定された初期化されていない値を使用している可能性があります。 – Mario
実際にビルドすると思うものを実際に構築していますか?清潔で完全な再構築を試みてください。 –
私はコードを追加しましたが、私は全く別のコードを入れようとしていましたが、それでも私は同じ結果を得ています。私がクリーンで完全な再構築を行うと、それは.exeを見つけることができず、私はプロジェクト全体を再び開始しなければならないと言います。 – Keano