Uczę się SFML'a no i robie sobie małą gierkę zrobiłem klase postaci i klaase gry
#include "TGame.h"
#include <SFML\Graphics.hpp>
#define WIDTH 900
#define HEIGTH 950
TGame::TGame() : mWindow(sf::VideoMode(WIDTH, HEIGTH), "GAME")
{
mWindow.setFramerateLimit(60);
}
void TGame::run()
{
while (mWindow.isOpen())
{
processEvents();
update_game();
render();
}
}
void TGame::processEvents()
{
sf::Event event;
while (mWindow.pollEvent(event))
{
if (event.type == sf::Event::Closed)
mWindow.close();
break;
}
}
void TGame::render()
{
TPlayer player(WIDTH / 2, HEIGTH / 2.5);
mWindow.clear();
mWindow.draw(player);
player.update();
mWindow.display();
}
void TGame::update_game()
{
}
#include "TPlayer.h"
#include <SFML\Graphics.hpp>
#include <iostream>
TPlayer::TPlayer(float t_X, float t_Y)
{
playerTexture.loadFromFile("player_texture.jpg");
if (!playerTexture.loadFromFile("player_texture.jpg"))
{
std::cout << "Load failed!";
system("pause");
}
playerSprite.setTexture(playerTexture);
playerSprite.setPosition(t_X, t_Y);
playerSprite.setOrigin(sf::Vector2f(playerSprite.getTexture()->getSize().x * 0.5, playerSprite.getTexture()->getSize().y * 0.5));
}
void TPlayer::draw(sf::RenderTarget& target, sf::RenderStates states) const
{
target.draw(this->playerSprite, states);
}
void TPlayer::update()
{
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Left) && this->moveLeft() > 30)
{
playerSprite.move(-20, 0);
}
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Right) && this->moveRight() < 870)
{
playerSprite.move(20, 0);
}
else
{
playerSprite.move(0, 0);
}
}
float TPlayer::moveLeft()
{
return this->playerSprite.getPosition().x - playerSprite.getOrigin().x / 2.f;
}
float TPlayer::moveRight()
{
return this->playerSprite.getPosition().x + playerSprite.getOrigin().x / 2.f;
}
co muszę zrobić żeby funkcja update() z klasy postaci dzialala w klasie gry? W programie postać się pokazuje ale nie chce się poruszać