Bonsoir à tous,
J'ai réussi à coder un pong perso comme un grand qui est fonctionnel !
Néanmoins, lorsque je charge un Font avec loadFromFile ou bien quand j'utilise texte.setString mon programme freeze.. C'est à dire que lorsque j'appui sur espace, le jeu est censé se lancer car la variable "gameLaunch" booléenne ( accessible avec getGameState() ) passe à " true ", cela fonctionne parfaitement MAIS dés que je veux afficher du texte ou charger un font ( pour afficher les scores du coup ), quand j'appuie sur Espace au début du jeu, getGameState() renvoi 0 et si je reste appuyé sur espace je reçois plein de 00000 ( testé avec un cout ), pourquoi ne veut-elle pas passer à 1 / true ?
J'ai remarqué que ce problème venait de Font ou bien de Text...
Voici mon main :
#include <iostream>
#include <sstream>
#include "player.h"
#include "computer.h"
#include "keygestion.h"
#include "ball.h"
#include <SFML/Graphics.hpp>
using namespace std;
using namespace sf;
template <class T>
string nbrConv(T Number)
{
ostringstream ss;
ss << Number;
return ss.str();
}
int main()
{
RenderWindow app(VideoMode(800,600,32),"Pong V1.1", Style::Titlebar);
Font arial;
if (!arial.loadFromFile("arial.ttf"))
{
cout << "Impossible de charger le font arial.ttf" << endl;
} else {
}
app.setFramerateLimit(60);
//creation de mon objet de gestion du clavier
Keygestion KG;
//creation de mes objets joueur, ordinateur et balle
Player plr(10,100,Color(255,255,255));
Computer cpt(10,100,Color(255,255,255));
Ball ball(7,Color(255,255,255));
//configuration des positions de départ
plr.setPos(10,app.getSize().y / 2 - 80);
cpt.setPos(780,app.getSize().y / 2 - 80);
ball.setPos(app.getSize().x/2, app.getSize().y / 2 - 80);
while(app.isOpen())
{
if (Keyboard::isKeyPressed(Keyboard::Escape))
app.close();
Event event;
while (app.pollEvent(event))
{
if (event.type == event.Closed)
app.close();
}
app.clear();
if (!plr.getGameState() && Keyboard::isKeyPressed(Keyboard::Space))
plr.setGameState(true);
if (plr.getGameState()){
//gestion du joueur
KG.ecouteClavier(plr);
plr.boundGestion();
//gestion de l'ordinateur
ball.influenceComputer(cpt);
//gestion de la balle
ball.goBall();
ball.verticalBoundGestion();
ball.paddleBoundGestion(plr,cpt);
ball.checkWinner(plr,cpt);
cout << plr.getGameState() << endl;
if (!plr.getGameState())
{
plr.setPos(10,app.getSize().y / 2 - 80);
cpt.setPos(780,app.getSize().y / 2 - 80);
ball.setPos(app.getSize().x/2, app.getSize().y / 2 - 80);
}
}
//affichages des éléments
plr.drawTo(app);
ball.drawTo(app);
cpt.drawTo(app);
app.display();
}
}
Merci à vous :-)