0
我在我的SFML游戏中产卵子弹时遇到了一些问题。 有代码:子弹在SFML中产生的错误
#include <SFML/Graphics.hpp>
#include <iostream>
#include <cmath>
int pad_id;
int pociski = 3;
int d_pad_x, d_pad_y;
int klatki;
bool p_1;
bool p_2;
bool p_3;
sf::Texture tekstura, pocisk;
sf::Sprite kulka, pocisk_1, pocisk_2, pocisk_3;
sf::Clock _clock;
float accumulator = 0;
float TIME_STEP = 0.03f;
sf::ContextSettings settings;
sf::RenderWindow window(sf::VideoMode(1920, 1080), "Wrecking balls", sf::Style::Fullscreen, settings);
class bullet
{
public:
sf::Texture bullet_texture;
sf::Sprite _sprite;
void spawn_new_bullet(sf::Vector2f from, sf::Vector2f to);
};
void bullet::spawn_new_bullet(sf::Vector2f from, sf::Vector2f to)
{
bullet_texture.loadFromFile("pocisk.png");
_sprite.setTexture(bullet_texture);
_sprite.setPosition(from);
_sprite.setRotation(atan2(to.y - from.y, to.x - from.x));
window.draw(_sprite);
}
int main()
{
settings.antialiasingLevel = 2;
window.setFramerateLimit(60);
window.setVerticalSyncEnabled(true);
if(!tekstura.loadFromFile("ball.png"))
{
std::cout << "error" << std::endl;
}
if (!pocisk.loadFromFile("pocisk.png"))
{
std::cout << "error" << std::endl;
}
kulka.setTexture(tekstura);
pocisk_1.setTexture(pocisk);
pocisk_2.setTexture(pocisk);
pocisk_3.setTexture(pocisk);
for (int i=0; i<8; i++)
{
if (sf::Joystick::isConnected(i))
{
std::cout << "Pad " << i << " is connected." << std::endl << "Number of buttons: " << sf::Joystick::getButtonCount(i) << std::endl;
pad_id = i;
}
}
kulka.setScale(0.050, 0.050);
pocisk_1.setScale(0.050, 0.050);
pocisk_2.setScale(0.050, 0.050);
pocisk_3.setScale(0.050, 0.050);
while (window.isOpen())
{
accumulator += _clock.restart().asSeconds();
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
{
window.close();
}
if (event.type == sf::Event::JoystickButtonPressed)
{
if (sf::Joystick::isButtonPressed(0, 0))
{
std::cout << "0" << std::endl;
}
if (sf::Joystick::isButtonPressed(0, 1))
{
std::cout << "1" << std::endl;
}
if (sf::Joystick::isButtonPressed(0, 2))
{
std::cout << "2" << std::endl;
}
if (sf::Joystick::isButtonPressed(0, 3))
{
std::cout << "3" << std::endl;
}
if (sf::Joystick::isButtonPressed(0, 4))
{
std::cout << "4" << std::endl;
}
if (sf::Joystick::isButtonPressed(0, 5))
{
std::cout << "5" << std::endl;
if (pociski > 0)
{
if (pociski == 3)
{
p_3 = true;
}
if (pociski == 2)
{
p_2 = true;
}
if (pociski == 1)
{
p_1 = true;
}
pociski -= 1;
}
}
if (sf::Joystick::isButtonPressed(0, 6))
{
std::cout << "6" << std::endl;
}
if (sf::Joystick::isButtonPressed(0, 7))
{
std::cout << "7" << std::endl;
}
if (sf::Joystick::isButtonPressed(0, 8))
{
std::cout << "8" << std::endl;
}
if (sf::Joystick::isButtonPressed(0, 9))
{
std::cout << "9" << std::endl;
}
}
}
if(accumulator > TIME_STEP)
{
window.clear();
if (pociski < 3)
{
klatki += 1;
}
d_pad_x = sf::Joystick::getAxisPosition(pad_id, sf::Joystick::X);
d_pad_y = sf::Joystick::getAxisPosition(pad_id, sf::Joystick::Y);
kulka.move(d_pad_x/5, d_pad_y/5);
pocisk_1.setPosition(kulka.getPosition().x + 10, kulka.getPosition().y + 13.75);
pocisk_2.setPosition(kulka.getPosition().x + 20, kulka.getPosition().y + 13.75);
pocisk_3.setPosition(kulka.getPosition().x + 30, kulka.getPosition().y + 13.75);
//std::cout << d_pad_x << d_pad_y << std::endl;
window.draw(kulka);
if (pociski == 1)
{
window.draw(pocisk_1);
}
else if (pociski == 2)
{
window.draw(pocisk_1);
window.draw(pocisk_2);
}
else if (pociski == 3)
{
window.draw(pocisk_1);
window.draw(pocisk_2);
window.draw(pocisk_3);
}
if (p_3 == true)
{
bullet::spawn_new_bullet(kulka.getPosition(), sf::Vector2(100, 100));
p_3 = false;
}
if (p_2 == true)
{
bullet::spawn_new_bullet(kulka.getPosition(), sf::Vector2(100, 100));
p_2 = false;
}
if (p_1 == true)
{
bullet::spawn_new_bullet(kulka.getPosition(), sf::Vector2(100, 100));
p_1 = false;
}
accumulator -= TIME_STEP;
window.display();
}
if (klatki >= 166)
{
if (pociski < 3)
{
pociski += 1;
klatki = 0;
}
}
}
return 0;
}
我管线162得到的错误是:?“失踪之前模板参数‘(’令牌”谁能告诉我,我应该怎么做,为什么这个方法必须与使用?模板
避免全局变量。使用有意义的名字“p_1”是什么意思?请在导致错误的代码中清楚地指明该行。 –
p_1,p_2,p_3是变量,帮助我在window.clear在主游戏循环中调用后运行“bullet :: spawn_new_bullet” – 3Qax
我在此行中出现错误:'bullet :: spawn_new_bullet(kulka.getPosition(),sf :: Vector2(100,100));' – 3Qax