Моя цель сейчас - переместить окно в случайное место на рабочем столе. Кажется довольно просто c, и я, вероятно, просто делаю глупую ошибку, но никаких ошибок не выдается, но, несмотря на это, окно не перемещается. Я пытаюсь использовать класс, который будет возвращать случайный вектор2i, однако, когда я использую это окно не перемещается.
Я определяю ключ не ошибка, но полезно знать
typedef struct KeySprite {
sf::Image Img;
sf::Texture Tex;
sf::Sprite Sprite;
}Key;
Случайный вектор2i
static sf::Vector2i RandSpawn(sf::Image image)
{
cout << "Desktop Demensions:" << sf::VideoMode::getDesktopMode().width << " by " << sf::VideoMode::getDesktopMode().height << endl;
int RandX = (rand() % sf::VideoMode::getDesktopMode().width) - image.getSize().x;
int RandY = (rand() % sf::VideoMode::getDesktopMode().height) - image.getSize().y;
if (RandX < 1 + image.getSize().x)
RandX = 1 + image.getSize().x;
if (RandY < 1 + image.getSize().y)
RandY = 1 + image.getSize().y;
cout << "Randomly Relocated\n" << RandX << " and " << RandY << endl; // always prints 1 and 1 idk y
return sf::Vector2i(RandX, RandY);
}
static void DrawKey(string key)
{
//Declair Key
Key Key;
Key.Img.loadFromFile("Assets/Images/A.png");
if (key == "A")
Key.Img.loadFromFile("Assets/Images/A.png");
else if (key == "D")
Key.Img.loadFromFile("Assets/Images/D.png");
else if (key == "E")
Key.Img.loadFromFile("Assets/Images/E.png");
else if (key == "Q")
Key.Img.loadFromFile("Assets/Images/Q.png");
else if (key == "S")
Key.Img.loadFromFile("Assets/Images/S.png");
else if (key == "W")
Key.Img.loadFromFile("Assets/Images/W.png");
else if (key == "X")
Key.Img.loadFromFile("Assets/Images/X.png");
else if (key == "Z")
Key.Img.loadFromFile("Assets/Images/Z.png");
else if (key == "Esc")
Key.Img.loadFromFile("Assets/Images/esc.png");
Key.Tex.loadFromImage(Key.Img);
Key.Sprite.setTexture(Key.Tex);
//Open Window
sf::RenderWindow window(sf::VideoMode(Key.Img.getSize().x, Key.Img.getSize().y, 32), "Key", sf::Style::None);
window.setPosition(MakeKey::RandSpawn(Key.Img));
cout << window.getPosition().x << " and " << window.getPosition().y << endl;
//Make Transparent
const unsigned char opacity = 1000;
setTransparency(window.getSystemHandle(), opacity);
setShape(window.getSystemHandle(), Key.Img);
//Handle Events
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
//While Open Loop
while (window.isOpen())
{
//MakeTopWindow(window.getSystemHandle());
cout << "Running While Loop";
window.clear(sf::Color::Transparent);
window.draw(Key.Sprite);
window.display();
}
}
Существует несколько других переменных, на которые ссылаются, чтобы сделать окно немного прозрачным, но это не важно. Я также называю это с основного на основе того, какая клавиша нажата. Спасибо за помощь, извините, если это глупая ошибка.