Положение окна не изменится sfml c ++ - PullRequest
0 голосов
/ 19 марта 2020

Моя цель сейчас - переместить окно в случайное место на рабочем столе. Кажется довольно просто 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();
        }
    }

Существует несколько других переменных, на которые ссылаются, чтобы сделать окно немного прозрачным, но это не важно. Я также называю это с основного на основе того, какая клавиша нажата. Спасибо за помощь, извините, если это глупая ошибка.

1 Ответ

0 голосов
/ 19 марта 2020

Мне нужно было почистить раствор и восстановить его.

...