Witajcie. Jestem w trakcie nauki programowania obiektowego i chciałem przetestować to w praktyce aby jak najlepiej zrozumieć wskaźniki z użyciem klas itp..
Chciałbym w prostu sposób stworzyć okienko, gracza oraz możliwość nim poruszania wszystko przy pomocy metod. Niestety gracz (textura) się nie wyświetla a gdy już narysowałem postać ale musiałem pozmieniać textury na publicznie czego nie chce robić to postać się nie porusza. Okno się wyświetla poprawnie.
Całość składa się z:
- main.cpp
- game.h
- game.cpp
main.cpp
#include <SFML/Graphics.hpp>
#include <windows.h>
#include <iostream>
#include "game.h"
int main()
{
okno_klasa oknow;
oknow.okienko->create(sf::VideoMode(1280,700,32),"TEST");
Player gracz;
while(oknow.okienko->isOpen())
{
if(gracz.pobierz_textura_player() == true)
{
gracz.pozycja_player();
sf::Event zdarzenie;
while(oknow.okienko->pollEvent(zdarzenie))
{
if(zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Escape)
{
oknow.okienko->close();
}
if(zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Left)
{
gracz.ruch_player_left();
}
if(zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Right)
{
gracz.ruch_player_right();
}
if(zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Up)
{
gracz.ruch_player_up();
}
if(zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Down)
{
gracz.ruch_player_down();
}
}
} else { return 0; }
oknow.okienko->clear(sf::Color::Green);
gracz.draw_player();
oknow.okienko->display();
}
return 0;
}
game.h
#include <iostream>
#include <windows.h>
#include <SFML/Graphics.hpp>
class okno_klasa
{
public:
sf::RenderWindow okno1;
sf::RenderWindow *okienko = &okno1;
};
class Player : public okno_klasa
{
private:
int x,y;
int wartosc;
sf::Texture textura_player;
sf::Sprite sprite_player;
public:
bool pobierz_textura_player();
void pozycja_player();
void ruch_player_up();
void ruch_player_down();
void ruch_player_right();
void ruch_player_left();
void draw_player();
};
game.cpp
#include <iostream>
#include <string>
#include <windows.h>
#include "game.h"
#include <SFML/Graphics.hpp>
bool Player::pobierz_textura_player()
{
if(!textura_player.loadFromFile("player.png"))
{
MessageBox(NULL,"NIE ZALADOWANO TEXTURY","ERROR",NULL);
return false;
} else
{
sprite_player.setTexture(textura_player);
return true;
}
}
void Player::pozycja_player()
{
sprite_player.setPosition(700,350);
}
void Player::ruch_player_left()
{
sprite_player.move(-10,0);
}
void Player::ruch_player_right()
{
sprite_player.move(10,0);
}
void Player::ruch_player_up()
{
sprite_player.move(0,10);
}
void Player::ruch_player_down()
{
sprite_player.move(0,-10);
}
void Player::draw_player()
{
okienko->draw(sprite_player);
}