main.cpp
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include "gracz.hpp"
#include "sterowanie.hpp"
#include <iostream>
using namespace std;
enum Stan
{
Menu, Gra, Esc
};
void setPosition( int x, int y );
int main()
{
sf::RenderWindow aplikacja( sf::VideoMode( 840, 720 ), "Ogrod" );
aplikacja.setFramerateLimit( 60 );
Stan stan = Menu;
Gracz player;
player.setOrigin( 100, 100 );
sf::Texture tekstura_menu;
tekstura_menu.loadFromFile( "Menu.png" );
sf::Texture tekstura_start;
tekstura_start.loadFromFile( "przycisk_start.png" );
sf::Sprite tlo_menu;
tlo_menu.setTexture( tekstura_menu );
sf::Sprite sp_start;
sp_start.setTexture( tekstura_start );
while( aplikacja.isOpen() )
{
sf::Event event;
while( aplikacja.pollEvent( event ) )
{
if( event.type == sf::Event::Closed )
{
aplikacja.close();
}
}
switch( stan )
{
case Menu:
Ruch_postaci( player );
break;
case Gra:
break;
case Esc:
break;
}
aplikacja.clear();
switch( stan )
{
case Menu:
aplikacja.draw( tlo_menu );
aplikacja.draw( sp_start );
aplikacja.draw( player );
break;
case Gra:
break;
case Esc:
break;
}
aplikacja.display();
}
return 0;
}
ster.hpp i cpp
#ifndef sterowanie_hpp
#define sterowanie_hpp
#include "gracz.hpp"
void Ruch_postaci( Gracz & hero );
#endif
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include "sterowanie.hpp"
#include "gracz.hpp"
void Ruch_postaci( Gracz & hero )
{
if( sf::Keyboard::isKeyPressed( sf::Keyboard::W ) )
{
hero.move( 0, - 3 );
}
if( sf::Keyboard::isKeyPressed( sf::Keyboard::S ) )
{
hero.move( 0, 3 );
}
if( sf::Keyboard::isKeyPressed( sf::Keyboard::A ) )
{
hero.move( - 3, 0 );
}
if( sf::Keyboard::isKeyPressed( sf::Keyboard::D ) )
{
hero.move( 3, 0 );
}
}
gracz.hpp i cpp
#ifndef gracz_hpp
#define gracz_hpp
class Gracz
: public sf::Drawable
, sf::Transformable
{
private:
virtual void draw( sf::RenderTarget & target, sf::RenderStates states ) const;
};
#endif
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include "gracz.hpp"
void Gracz::draw( sf::RenderTarget & target, sf::RenderStates states ) const
{
sf::VertexArray P( sf::Quads, 4 );
P[ 0 ].position = sf::Vector2f( 200, 200 );
P[ 1 ].position = sf::Vector2f( 400, 200 );
P[ 2 ].position = sf::Vector2f( 400, 400 );
P[ 3 ].position = sf::Vector2f( 200, 400 );
sf::Texture textura;
textura.loadFromFile( "gracz.png" );
P[ 0 ].texCoords = sf::Vector2f( 0, 0 );
P[ 1 ].texCoords = sf::Vector2f( 50, 0 );
P[ 2 ].texCoords = sf::Vector2f( 50, 50 );
P[ 3 ].texCoords = sf::Vector2f( 0, 50 );
states.texture = & textura;
target.draw( P, states );
}
Errory:
||=== Build: Debug in ogrod (compiler: GNU GCC Compiler) ===|
C:\Users\Routa\Desktop\SFML-2.5.1\include\SFML\Graphics\Transformable.hpp||In function 'int main()':|
C:\Users\Routa\Desktop\SFML-2.5.1\include\SFML\Graphics\Transformable.hpp|145|error: 'void sf::Transformable::setOrigin(float, float)' is inaccessible|
C:\Users\Routa\Desktop\ogrod\main.cpp|20|error: within this context|
C:\Users\Routa\Desktop\ogrod\main.cpp|20|error: 'sf::Transformable' is not an accessible base of 'Gracz'|
C:\Users\Routa\Desktop\SFML-2.5.1\include\SFML\Graphics\Transformable.hpp||In function 'void Ruch_postaci(Gracz&)':|
C:\Users\Routa\Desktop\SFML-2.5.1\include\SFML\Graphics\Transformable.hpp|223|error: 'void sf::Transformable::move(float, float)' is inaccessible|
C:\Users\Routa\Desktop\ogrod\sterowanie.cpp|10|error: within this context|
C:\Users\Routa\Desktop\ogrod\sterowanie.cpp|10|error: 'sf::Transformable' is not an accessible base of 'Gracz'|
C:\Users\Routa\Desktop\SFML-2.5.1\include\SFML\Graphics\Transformable.hpp|223|error: 'void sf::Transformable::move(float, float)' is inaccessible|
C:\Users\Routa\Desktop\ogrod\sterowanie.cpp|14|error: within this context|
C:\Users\Routa\Desktop\ogrod\sterowanie.cpp|14|error: 'sf::Transformable' is not an accessible base of 'Gracz'|
C:\Users\Routa\Desktop\SFML-2.5.1\include\SFML\Graphics\Transformable.hpp|223|error: 'void sf::Transformable::move(float, float)' is inaccessible|
C:\Users\Routa\Desktop\ogrod\sterowanie.cpp|18|error: within this context|
C:\Users\Routa\Desktop\ogrod\sterowanie.cpp|18|error: 'sf::Transformable' is not an accessible base of 'Gracz'|
C:\Users\Routa\Desktop\SFML-2.5.1\include\SFML\Graphics\Transformable.hpp|223|error: 'void sf::Transformable::move(float, float)' is inaccessible|
C:\Users\Routa\Desktop\ogrod\sterowanie.cpp|22|error: within this context|
C:\Users\Routa\Desktop\ogrod\sterowanie.cpp|22|error: 'sf::Transformable' is not an accessible base of 'Gracz'|
||=== Build failed: 15 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|