Я делаю игровой проект с SFML, и я столкнулся с небольшой проблемой,Клавиатура в SFML
Вот мой код:
#include <SFML/Graphics.hpp>
#include <string>
#include <iostream>
using namespace std;
using namespace sf;
int main() {
sf::RenderWindow Window;
Window.create(sf::VideoMode(490, 485), "My First Sfml Game");
sf::Texture pTexture1;
sf::Sprite playerImage;
if (!pTexture1.loadFromFile("Data/dots.png"))
std::cout << "error could not load player image" << std::endl;
playerImage.setTexture(pTexture1);
sf::Texture pTexture2;
sf::Sprite lineImage;
if (!pTexture2.loadFromFile("Data/line.png"))
std::cout << "error could not load player image" << std::endl;
lineImage.setTexture(pTexture2);
int v;
while (Window.isOpen()) {
sf::Event event;
while (Window.pollEvent(event)) {
switch (event.type) {
case sf::Event::Closed:
Window.close();
break;
case Event::KeyPressed:
if (event.key.code == Keyboard::Right)
lineImage.move(5, 0);
else if (event.key.code == Keyboard::Left)
lineImage.move(-5, 0);
else if (event.key.code == Keyboard::Up)
lineImage.move(0, -5);
else if (event.key.code == Keyboard::Down)
lineImage.move(0, 5);
else if (event.key.code == Keyboard::Space)
lineImage.setRotation(90);
break;
case Event::KeyReleased:
if (event.key.code == Keyboard::Right)
lineImage.move(0, 0);
else if (event.key.code == Keyboard::Left)
lineImage.move(-0, 0);
else if (event.key.code == Keyboard::Up)
lineImage.move(0, -0);
else if (event.key.code == Keyboard::Down)
lineImage.move(0, 0);
else if (event.key.code == Keyboard::Space)
lineImage.setRotation(90);
break;
}
if (event.type == Event::KeyReleased && event.key.code == Keyboard::Space)
lineImage.setRotation(180);
}
Window.draw(playerImage);
Window.draw(lineImage);
Window.display();
}
return 0;
}
изображения в коде здесь: postimg.org/gallery/ 71ufmoi/da508bc3/
проблема в том, что мне нужно повернуть lineImage
, когда я нажимаю пробел, но когда я нажимаю пробел, он поворачивает 90, а затем снова 90! Мне нужно сделать его стабильным, когда я нажимаю пробел, он вращает 90, затем, когда я снова нажимаю пробел, он поворачивает 90 на оригинал! Еще одна проблема, с которой я сталкиваюсь, - это то, что я делаю игру в виде точек, так как я могу сделать логику линии, чтобы я мог позволить ей между двумя точками, когда я нажимаю клавишу ввода?
Большое спасибо это работает: D и о втором вероят Я играю в Dots, поэтому хочу подключить две точки с помощью lineSprite, когда пользователь нажимает enter, а второй пользователь делает то же самое, пока он не образует квадрат, это проблема, что я могу использовать для этого!? Потому что я новичок в SFML! Еще раз спасибо за помощь ^^ –
Хорошо, получилось. См. Мой отредактированный ответ. – Hiura
так что моего пути недостаточно!? , я вижу его более простым, чем массивы вершин: D, srry, но если вы можете прояснить его больше, я буду благодарен ^^ –