To może tak kod programu:
main.cpp
#include <SFML/Graphics.hpp>
#include <iostream>
#include "base.h"
int ViewW = (_WidthWindow / 2);
int ViewH = (_HeightWindow / 2);
sf::Texture _PTexture;
int main()
{
sf::RenderWindow window(sf::VideoMode(_WidthWindow,_HeightWindow),"");
std::cout<<"LOG: WINDOW CREATED"<<std::endl;
sf::CircleShape player(_SizePlayer);
std::cout<<"LOG: PLAYER CREATED"<<std::endl;
_PTexture.loadFromFile( "Face.png" );
std::cout<<"LOG: TEXTURE LOADED"<<std::endl;
sf::View view(sf::Vector2f(_WidthWindow,_HeightWindow), sf::Vector2f(_WidthWindow,_HeightWindow));
view.setCenter(ViewW,ViewH);
view.setSize(_WidthWindow,_HeightWindow);
player.setPosition(300,400);
while(window.isOpen())
{
sf::Event event;
while(window.pollEvent(event))
{
if( event.type == sf::Event::Closed ) {
window.close();
std::cout<<"LOG: WINDOW CLOSED"<<std::endl;
}
if( event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape ) {
window.close();
std::cout<<"LOG: WINDOW CLOSED"<<std::endl;
}
if( event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::J ) {
std::cout<<"LOG: CHANGE WINDOWS SIZE"<<std::endl;
}
if(event.type == sf::Event::KeyReleased && event.key.code == sf::Keyboard::W)
std::cout<<"LOG: PLAYER GO UP"<<std::endl;
if(event.type == sf::Event::KeyReleased && event.key.code == sf::Keyboard::S)
std::cout<<"LOG: PLAYER GO DOWN"<<std::endl;
if(event.type == sf::Event::KeyReleased && event.key.code == sf::Keyboard::A)
std::cout<<"LOG: PLAYER GO LEFT"<<std::endl;
if(event.type == sf::Event::KeyReleased && event.key.code == sf::Keyboard::D)
std::cout<<"LOG: PLAYER GO RIGHT"<<std::endl;
}
if(sf::Keyboard::isKeyPressed(sf::Keyboard::W))
player.move(0, -0.2);
if(sf::Keyboard::isKeyPressed(sf::Keyboard::S))
player.move(0, 0.2);
if(sf::Keyboard::isKeyPressed(sf::Keyboard::A))
player.move(-0.2, 0);
if(sf::Keyboard::isKeyPressed(sf::Keyboard::D))
player.move(0.2, 0);
if(sf::Keyboard::isKeyPressed(sf::Keyboard::W)&& sf::Keyboard::isKeyPressed(sf::Keyboard::D))
player.move(-0.05, 0.05);
if(sf::Keyboard::isKeyPressed(sf::Keyboard::W)&& sf::Keyboard::isKeyPressed(sf::Keyboard::A))
player.move(0.05, 0.05);
if(sf::Keyboard::isKeyPressed(sf::Keyboard::S)&& sf::Keyboard::isKeyPressed(sf::Keyboard::A))
player.move(0.05, -0.05);
if(sf::Keyboard::isKeyPressed(sf::Keyboard::S)&& sf::Keyboard::isKeyPressed(sf::Keyboard::D))
player.move(-0.05, -0.05);
player.setOutlineColor(sf::Color::Red);
player.setOutlineThickness(_OutlinePlayer);
player.setTexture(&_PTexture);
window.clear(sf::Color(200,230,160));
window.setView(view);
window.draw(player);
window.display();
}
return 0;
}
base.h
#include <SFML/Graphics.hpp>
#include <conio.h>
#define NORMAL_WIDTH 800
#define NORMAL_HEIGHT 600
#define size_player 25
#define MAXIMAL_OUTLINE 2.0
#define NORMALL_OUTLINE 1.0
#define MINIMAL_OUTLINE 0.5
#define NO_OUTLINE 0.0
#define NEGATIVE_MINIMAL_OUTLINE -0.5
#define NEGATIVE_NORMALL_OUTLINE -1.0
#define NEGATIVE_MAXIMAL_OUTLINE -2
int _WidthWindow = NORMAL_WIDTH;
int _HeightWindow = NORMAL_HEIGHT;
int _SizePlayer = size_player;
int _OutlinePlayer = NORMALL_OUTLINE;
Nie wiem dlaczego wyświetla się ten błąd podczas zmieniania obrazka.
2 problem rozwiązany.
Wiem, że można zrobić asynchroniczną konsolę za pomocą WinAPI ale u mnie to nie działa.
Ma ktoś poradnik do GUI w SFML?