Untitled
unknown
plain_text
2 years ago
6.5 kB
6
Indexable
#include <SFML/Graphics.hpp>
#include <iostream>
#include <math.h>
using namespace std;
using namespace sf;
float frame = 0;
int ox, oy,pulx,puly,rex,rey,coins=0,flag=0;
struct blue
{
int hp = 1;
float speed = 1;
};
struct red
{
int hp = 3;
float speed = 2;
};
int main()
{
RenderWindow window(VideoMode(1400, 1000), "SFML works!");
sf::Vector2f target(window.getSize().x / 2, window.getSize().y);
RectangleShape rect;
float distance=0,speed=0.03f;
srand(time(NULL));
float x = rand() % 1350 + 25;
float y = rand() % 950 + 25;
rect.setPosition(x, y);
// Получаем координаты центра окна
float targetX = window.getSize().x / 2;
float targetY = window.getSize().y / 2;
Vector2i mxy = Mouse::getPosition(window);
CircleShape pulya(10.f);
rect.setSize(Vector2f(50, 100));
rect.setFillColor(sf::Color::Blue);
pulya.setFillColor(Color::Blue);
cout << mxy.x <<" " << mxy.y << endl;
Image phone;
phone.loadFromFile("image/pole.png");
Texture fon;
fon.loadFromImage(phone);
Sprite pon;
pon.setTexture(fon);
pon.setPosition(0, 0);
pon.setScale(3.7f, 3.f);
Image image;
image.loadFromFile("image/player.png");
Texture texture;
texture.loadFromImage(image);
Sprite player;
player.setTexture(texture);
player.setScale(4.f,4.f);
player.setTextureRect(IntRect(0, 0, 31, 32));
player.setPosition(10, 10);
Clock clock;
while (window.isOpen())
{
if (pulx !=ox) pulya.setPosition(ox + 7, oy + 7);
if (pulx !=ox) pulya.setPosition(ox + 7, oy + 7);
if (puly !=oy) pulya.setPosition(ox + 7, oy + 7);
if (puly !=oy) pulya.setPosition(ox + 7, oy + 7);
Vector2i mxy = Mouse::getPosition(window);
cout << mxy.x << " " << mxy.y << endl;
float time = clock.getElapsedTime().asMicroseconds();
clock.restart();
time /= 1500;
Event event;
while (window.pollEvent(event))
{
if (event.type == Event::Closed)
window.close();
}
ox=player.getPosition().x;
oy = player.getPosition().y;
pulx = pulya.getPosition().x;
puly= pulya.getPosition().y;
rex = rect.getPosition().x;
rey = rect.getPosition().y;
//cout << ox << " " << oy<<endl;
if(ox>1400) player.setPosition(-12, oy);
if (ox < -12) player.setPosition(1400, oy);
if (oy > 1000) player.setPosition(ox+10, -12);
if (oy < -12) player.setPosition(ox+10, 1000);
if (pulx > 1400&&flag!=1) pulya.setPosition(ox+10, oy+10);
if (pulx < -12 && flag != 1) pulya.setPosition(ox+10, oy+10);
if (puly > 1000 && flag != 1) pulya.setPosition(ox+10, oy+10);
if (puly < -12 && flag != 1) pulya.setPosition(ox+10, oy+10);
if (event.type == sf::Event::MouseButtonPressed && event.mouseButton.button == sf::Mouse::Left)
{
flag = 1;
sf::Vector2i mousePosition = sf::Mouse::getPosition(window);
sf::Vector2f targetPosition = sf::Vector2f(mousePosition.x - pulya.getRadius(), mousePosition.y - pulya.getRadius());
// Вычисляем расстояние между текущей позицией круга и целевой позицией
float distance = sqrt(pow(targetPosition.x - pulya.getPosition().x, 2) + pow(targetPosition.y - pulya.getPosition().y, 2));
// Вычисляем скорость передвижения круга
float speed = 50.f;
// Вычисляем время, за которое круг должен добраться до целевой позиции
float pul_time = distance / speed;
// Вычисляем вектор скорости
sf::Vector2f velocity = (targetPosition - pulya.getPosition()) / pul_time;
// Передвигаем круг плавно к целевой позиции
while (-10<distance&&distance > 10)
{
float deltaTime = 1.f / 60.f;
pulya.move(velocity * deltaTime);
distance = sqrt(pow(targetPosition.x - pulya.getPosition().x, 2) + pow(targetPosition.y - pulya.getPosition().y, 2));
window.clear();
window.draw(pon);
window.draw(rect);
window.draw(player);
window.draw(pulya);
window.display();
}
flag = 0;
}
if (Keyboard::isKeyPressed(Keyboard::A)) {
player.move(-0.2*time, 0);
frame += 0.005 * time;
if (frame > 2)frame -= 2;
player.setTextureRect(IntRect(31 * int(frame), 96, 31, 32));
}
if (Keyboard::isKeyPressed(Keyboard::D)) {
player.move(0.2*time, 0);
frame += 0.005 * time;
if (frame > 2)frame -= 2;
player.setTextureRect(IntRect(31 * int(frame), 32, 31, 32));
}
if (Keyboard::isKeyPressed(Keyboard::W)) {
player.move(0, -0.2*time);
frame += 0.005 * time;
if (frame > 2)frame -= 2;
player.setTextureRect(IntRect(31 * int(frame), 0, 31, 32));
}
if (Keyboard::isKeyPressed(Keyboard::S)) {
player.move(0, 0.2*time);
frame += 0.005 * time;
if (frame > 2)frame -= 2;
player.setTextureRect(IntRect(31 * int(frame), 64, 31, 32));
}
if (rey==puly) {
rect.setPosition(0, 0);
coins++;
}
if (rect.getPosition().x < ox)
{
rect.move(0.1, 0);
}
else if (rect.getPosition().x > ox)
{
rect.move(-0.1, 0);
}
if (rect.getPosition().y < oy)
{
rect.move(0, 0.1);
}
else if (rect.getPosition().y > oy)
{
rect.move(0, -0.1);
}
window.clear();
window.draw(pon);
window.draw(player);
window.draw(pulya);
window.draw(rect);
window.display();
}
}
Editor is loading...