#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include <SFML/system.hpp>
#include <SFML/Audio.hpp>
#include <cmath>
#include <math.h>
#include <string>
#include <iostream>
#include <cstdlib>
#include <iostream>
#include "Variables.h"
#include "vertex.cpp"
int main()
{
// on crée la fenêtre
sf::RenderWindow window(sf::VideoMode(largeurFenetre, hauteurFenetre), "Jeux Test");
window.setFramerateLimit(70);
// mes bouton en sprite :
if (!jouer.loadFromFile("jouer.png"))
{
std::cout << "Erreur lors du chargement du bouton jouer" << std::endl;
}
sprite_jouer.setTexture(jouer);
sprite_jouer.setPosition(320, 140);
jouer.setSmooth(true);
if (!quitter.loadFromFile("quitter.png"))
{
std::cout << "Erreur lors du chargement du bouton quitter" << std::endl;
}
sprite_quitter.setTexture(quitter);
sprite_quitter.setPosition(320, 210);
quitter.setSmooth(true);
//texte
sf::Font font;
if (!font.loadFromFile("reforma.ttf"))
{
// erreur...
}
sf::Text text;
text.setFont(font);
text.setString("BIENVENUE"); //texte écris entre (""). ou variable ().
text.setPosition(340, 80);
text.setCharacterSize(30);
text.setColor(sf::Color (40, 80, 140));
// temps que la fenetre est ouverte elle ne se ferme pas (condition)
sf::Clock clock;
while(window.isOpen())
{
sf::Event event;
while(window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
// boutons
if (event.type == sf::Event::MouseButtonPressed)
{
if (event.mouseButton.button == sf::Mouse::Left)
{
std::cout << "mouse x: " << event.mouseButton.x << std::endl;
std::cout << "mouse y: " << event.mouseButton.y << std::endl;
if (event.mouseButton.x > sprite_jouer.getPosition().x && event.mouseButton.y > sprite_jouer.getPosition().y &&
event.mouseButton.x < sprite_jouer.getPosition().x + 150 && event.mouseButton.y < sprite_jouer.getPosition().y + 50)
{
sf::Clock time;
//Personnage et Décors*
if (!perso.loadFromFile("hero.png"))
{
std::cout << "Erreur lors du chargement du Hero" << std::endl;
}
sprite_perso.setTexture(perso);
sprite_perso.setPosition(2, 380);
perso.setSmooth(true);
if (!nuage.loadFromFile("nuage.png"))
{
std::cout << "Erreur lors du chargement du Hero" << std::endl;
}
sprite_nuage.setTexture(nuage);
sprite_nuage.setPosition(200, 100);
nuage.setSmooth(true);
sf::Font font;
if (!font.loadFromFile("reforma.ttf"))
{
// erreur...
}
// on définit le niveau à l'aide de numéro de tuiles// on crée la tilemap avec le niveau précédemment défini
TileMap map;
if (!map.load("tileset.png", sf::Vector2u(30, 30), level, 200, 14))
return -1;
// temps que la fenetre est ouverte elle ne se ferme pas (condition)
sf::Clock clock;
while(window.isOpen())
{
sf::Event event;
while(window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
if (event.type==sf::Event::KeyPressed)
{
UpdateFPS = true;
}
else
UpdateFPS = false;
}
//Gestion clavier
gestion_clavier();
//Temps d'animation du Personnage
if (UpdateFPS == true)
{
if (time.getElapsedTime().asMilliseconds() >= 150)
{
anim.x++;
if (anim.x * 32 >= perso.getSize().x)
anim.x = 0;
time.restart();
}
}
// Création vue caméra
sprite_perso.setTextureRect(sf::IntRect(anim.x * 32, anim.y * 32, 32, 32));
view.reset(sf::FloatRect(0, 0, largeurFenetre, hauteurFenetre));
sf::Vector2f position(largeurFenetre / 2,hauteurFenetre / 2);
position.x = sprite_perso.getPosition().x + 16 - (largeurFenetre / 2);
position.y = sprite_perso.getPosition().y + 16 - (largeurFenetre / 2);
if(position.x < 0)
position.x = 0;
if(position.y < 0)
position.y = 0;
view.reset(sf::FloatRect(position.x, position.y, largeurFenetre, hauteurFenetre));
window.setView(view);
// Collisions
/* code collision ici ... */
// Ont dessine et on actualise avec "clear"
window.clear();
window.draw(map);
window.draw(sprite_nuage);
window.draw(sprite_perso);
window.display();
sf::Time frameTime = clock.restart();
}
std::cout << "BOUTON JOUER ACTIVE" << std::endl;
}
if (event.mouseButton.x > sprite_quitter.getPosition().x && event.mouseButton.y > sprite_quitter.getPosition().y &&
event.mouseButton.x < sprite_quitter.getPosition().x + 150 && event.mouseButton.y < sprite_quitter.getPosition().y + 50)
{
sf::Event::Closed;
window.close();
break;
std::cout << "BOUTON QUITTER ACTIVE" << std::endl;
}
}
}
// Ont dessine et on actualise avec "clear"
window.clear();
window.draw(text);
window.draw(sprite_jouer);
window.draw(sprite_quitter);
window.display();
}
return 0;
}
void gestion_clavier()
{
/* Gestion de mon clavier */
static bool bOne = false;
static float toX = sprite_perso.getPosition().x;
if (persoSurSol)
{
if (sf::Keyboard::isKeyPressed(sf::Keyboard:: Up))
{
if(!bOne ){
bOne = true;
saut = -8; //hauteur du saut
}
}else{ bOne = false; }
saut += 0.3; // gravité
if (saut > 6.1){
saut = 6.1; //graviteMaximal
}
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard:: Left)){
anim.y = Left;
toX -= speed;
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard:: Right)){
anim.y = Right;
toX += speed;
}
sprite_perso.move( (toX * 1.2 - sprite_perso.getPosition().x)/10.0, saut); //10.0 qui correspond à la vitesse de décélération
if (sprite_perso.getPosition().x <=0)
sprite_perso.setPosition(sf::Vector2f(0, sprite_perso.getPosition().y));
if (sprite_perso.getPosition().y <=0)
sprite_perso.setPosition(sf::Vector2f(sprite_perso.getPosition().x, 0));
if (sprite_perso.getPosition().y >=330)
sprite_perso.setPosition(sf::Vector2f(sprite_perso.getPosition().x, 330));
}