我只是玩C++ SFML的東西,我有點不明白爲什麼我的代碼不工作。我想要做的事情就是讓我們說5,在窗口中使用矢量隨機放置在窗口中的正方形,但我不明白爲什麼它不起作用。C++ SFML 2.2矢量
這是主要的遊戲類:
#include "main_game.h"
#include "main_menu.h"
void main_game::Initialize(sf::RenderWindow* window)
{
this->Player = new player();
this->Player->setOrigin(this->Player->getGlobalBounds().width/2, this->Player->getGlobalBounds().height/2);
this->TestObject = new testObject();
this->TestObject->Initialize();
this->TestObject->setOrigin(this->TestObject->getGlobalBounds().width/2, this->TestObject->getGlobalBounds().height/2);
}
void main_game::Update(sf::RenderWindow* window)
{
this->Player->setPosition(sf::Mouse::getPosition(*window).x, sf::Mouse::getPosition(*window).y);
this->Player->Update();
if (this->Player->CheckCollision(TestObject))
{
this->TestObject->setColor(sf::Color::Red);
}
else
{
this->TestObject->setColor(sf::Color::Cyan);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Escape))
{
coreState.SetState(new main_menu());
}
}
void main_game::Render(sf::RenderWindow* window, std::vector<sf::Sprite> sprites)
{
this->TestObject->Render(*window, sprites);
window->draw(*this->Player);
}
void main_game::Destroy(sf::RenderWindow* window)
{
delete this->Player;
delete this->TestObject;
}
這是testObject.h類
#pragma once
#include "entity.h"
class testObject : public Entity
{
public:
testObject();
void Initialize();
void Render(sf::RenderWindow window, std::vector<sf::Sprite> sprites);
void Update();
private:
sf::RenderWindow window;
};
這是testObject.cpp類
#include "testObject.h"
testObject::testObject()
{
this->Load("testObject.png");
}
void testObject::Initialize()
{
sf::Texture testObjectTexture;
sf::Sprite testObjectSprite;
testObjectTexture.loadFromFile("testObject.png");
testObjectSprite.setTexture(testObjectTexture);
std::vector<sf::Sprite> sprites(5, sf::Sprite(testObjectSprite));
srand(time(0));
for (unsigned int i = 0; i < sprites.size(); i++)
{
sprites[i].setPosition(1 + (rand() % 1024 - 32), rand() % 640 - 32);
}
}
void testObject::Render(sf::RenderWindow window, std::vector<sf::Sprite> sprites)
{
for (unsigned int i = 0; i < sprites.size(); i++)
{
window.draw(sprites[i]);
}
}
void testObject::Update()
{
Entity::Update();
}
該錯誤消息
1>------ Build started: Project: Blahblah, Configuration: Debug Win32 ------
1> testObject.cpp
1>d:\visual studio projects\blahblah\blahblah\testobject.cpp(18): warning C4244: 'argument' : conversion from 'time_t' to 'unsigned int', possible loss of data
1>d:\visual studio projects\blahblah\blahblah\testobject.cpp(22): warning C4244: 'argument' : conversion from 'int' to 'float', possible loss of data
1> main_game.cpp
1>d:\visual studio projects\blahblah\blahblah\main_game.cpp(16): warning C4244: 'argument' : conversion from 'int' to 'float', possible loss of data
1>d:\visual studio projects\blahblah\3rdpartylibs\include\sfml\window\window.hpp(521): error C2248: 'sf::NonCopyable::NonCopyable' : cannot access private member declared in class 'sf::NonCopyable'
1> d:\visual studio projects\blahblah\3rdpartylibs\include\sfml\system\noncopyable.hpp(67) : see declaration of 'sf::NonCopyable::NonCopyable'
1> d:\visual studio projects\blahblah\3rdpartylibs\include\sfml\system\noncopyable.hpp(42) : see declaration of 'sf::NonCopyable'
1> This diagnostic occurred in the compiler generated function 'sf::Window::Window(const sf::Window &)'
1>d:\visual studio projects\blahblah\3rdpartylibs\include\sfml\graphics\rendertarget.hpp(419): error C2248: 'sf::NonCopyable::NonCopyable' : cannot access private member declared in class 'sf::NonCopyable'
1> d:\visual studio projects\blahblah\3rdpartylibs\include\sfml\system\noncopyable.hpp(67) : see declaration of 'sf::NonCopyable::NonCopyable'
1> d:\visual studio projects\blahblah\3rdpartylibs\include\sfml\system\noncopyable.hpp(42) : see declaration of 'sf::NonCopyable'
1> This diagnostic occurred in the compiler generated function 'sf::RenderTarget::RenderTarget(const sf::RenderTarget &)'
1> Generating Code...
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
請你的問題不是*多一點的描述:「我不明白爲什麼它不工作」 * –
基本上我也嘗試全新的項目,與矢量繪製多個對象,在只有main.cpp中main(),它像一個魅力。但這裏的問題可能是我不能在類和多個函數之間正確執行。 – KuziNs
我寧願給你描述你的意思*「它不工作」*。這是一個編譯器錯誤?如果是這樣,那麼錯誤信息是什麼?或者它是一個運行時錯誤?如果是這樣,實際發生了什麼事情,它與預期會發生什麼有什麼不同? –