Untitled

mail@pastecode.io avatar
unknown
c_cpp
a month ago
4.1 kB
2
Indexable
Never
    while (window.isOpen())
    {
        delay = clock.getElapsedTime().asSeconds();

        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
            if (event.type == sf::Event::KeyPressed) {
                if (event.key.code == sf::Keyboard::Escape) {
                    window.close();
                }

            }
        }
        

        //take degrees 

        rectLeft = posPigeon.x - Width / 2;
        rectTop = posPigeon.y - Height / 2;

        rectLeft = std::max(sizeBlock, rectLeft);
        rectTop = std::min(rectTop, 0.f);

        view.reset(sf::FloatRect(rectLeft, rectTop, Width, Height));
        window.setView(view);

        Mx = sf::Mouse::getPosition(window).x;
        My = sf::Mouse::getPosition(window).y;

        b = Mx - Gun.getPosition().x;
        a = My - Gun.getPosition().y;

        currentPosition = Gun.getPosition() - sf::Vector2f(rectLeft,rectTop);
        mousePosition = sf::Mouse::getPosition();

        const float PI = 3.14159265;

        float a = currentPosition.x - mousePosition.x;
        float b = currentPosition.y - mousePosition.y;

        //гипотенуза
        float c = std::sqrt(a * a + b * b);

        float rotation = (atan2(b, a)) * 180 / PI;
        
        cosL = a / c * -1;
        sinL = b / c * -1;

        if ((rotation > 93 && rotation <= 180) || (rotation < -93 && rotation >= -180) && isRight == false) {
            if (count % 2 == 0) {
                Gun.setScale(-1.0f, 1.0f);
                Body.setScale(-1.0f, 1.0f);
                Head.setScale(-1.0f, 1.0f);
                BulletS.setScale(-bulletCf, bulletCf);

                count++;
                isRight = true;
                kSize *= -1;
            }
        }
        else if (rotation > -86 && rotation < 88) {
            if (count % 2 == 1) {
                Gun.setScale(1.0f, 1.0f);
                Body.setScale(1.0f, 1.0f);
                Head.setScale(1.0f, 1.0f);
                BulletS.setScale(bulletCf, bulletCf);
                count++;
                isRight = false;
                kSize *= -1;
            }
        }
        
        if (isRight) {
            Gun.setScale(1.0f, -1.0f);
            BulletS.setScale(bulletCf, -bulletCf);


        }
        BulletS.setRotation(rotation);
        Gun.setRotation(rotation);

        if ((view.getCenter().x + Width / 2) + sizeBlock > shapeMap[0].size() * sizeBlock) {
            Expand(map);
            ConvertMap(map, shapeMap, sizeBlock, Height, ladder);
        }

        differentHeadX = (sizeBody[0] / 2 - sizeHead[0] / 2) * kSize;
        differentGunX = 10 * kSize;

        
        Move(shapeMap, speedY, posPigeon, sizeBody, sizeBlock, sizeHead, Height, onGround);

        //setPosition
        Body.setPosition(posPigeon.x, posPigeon.y);
        Head.setPosition(Body.getPosition().x - differentHeadX, Body.getPosition().y - sizeBody[1] / 2 - sizeHead[1] / 2);
        Gun.setPosition(Body.getPosition().x - differentGunX, Body.getPosition().y - 10);
        BulletS.setPosition(Gun.getPosition().x, Gun.getPosition().y);
        
        //bullet delay
        if (sf::Mouse::isButtonPressed(sf::Mouse::Left)) {
            if (delay > 0.5) {
                clock.restart();
                bullet.bulletSprite = BulletS;
                bullet.size = bulletSize;
                bullet.speed = sf::Vector2f(BulletSpeed * cosL,BulletSpeed * sinL);
                bullet.position = sf::Vector2f(BulletS.getPosition().x, BulletS.getPosition().y);
                bullets.push_back(bullet);
            }
        }

        window.clear(sf::Color::White);
        drawMap(window, shapeMap,view);
        window.draw(Body);
        window.draw(Head);
        BulletsAction(bullets, shapeMap, sizeBlock, view);
        window.draw(Gun);
        window.display();
    }
    return 0;
}
Leave a Comment