Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - Slash94

Pages: « Précédente 1 ... 4 5 [6]
76
Général / Font et Text freeze mon programme...
« le: Décembre 23, 2016, 09:50:11 pm »
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 :-)

77
Général / Re : Fermer ma fenêtre depuis une autre classe ?
« le: Décembre 20, 2016, 07:25:42 pm »
Tu es UN CHEF Laurent ! Cela fonctionne à merveille :-D

Je me suis au préalablement déjà pas mal documenté sur la poo et ait déjà réussi avec succès des petits exos ( comme une mini gestion de banque ou encore d'un garage automobile ), le principal de l'héritage, de l'utilisation du mot-clef virtual etc etc.. je croyais avoir déjà de solides bases mais alors le mot-clef "extern", je ne l'ai jamais vu dans aucune doc pour novice comme moi.

Je suis très heureux d'avoir pris connaissance de ce terme, ça fonctionne parfaitement mais je vais néanmoins aller faire quelques recherches dessus.

Encore merci Laurent  ;D

PS : Durant ma pause au boulot avant de rentrer chez moi et de constater que ça fonctionnait parfaitement, j'avais googlé sur mon téléphone "variables globales C++" , j'étais bel et bien tombé sur le terme "extern", mais j'ai cru comprendre que c'était surtout privilégié dans le langage C..?

78
Général / Re : Fermer ma fenêtre depuis une autre classe ?
« le: Décembre 20, 2016, 04:33:33 pm »
Bonjour Laurent :-)
Decidement, tu es d'une réactivité exemplaire sur ce forum ..! Je t'en remercie grandement.
J'ai vraisemblablement commis une [tres] grossière erreur, néanmoins, j'aimerais avoir l'éclaircissement du problème car j'avais tenté de passer un RenderWindow en paramètre mais j'obtiens la même erreur ... Faut-il que j'utilise une référence ? ( je n'ai pas essayé, n'étant plus chez moi cet aprem )
Encore merci ;-)

79
Général / Fermer ma fenêtre depuis une autre classe ?
« le: Décembre 20, 2016, 11:22:53 am »
Bonjour,

J'ai déclaré ma fenêtre "app" en Globale, autrement-dit avant mon int main(), de manière à y avoir accès partout dans le code.

Voici le code en question :

#include <iostream>
#include "KeyGestion.h"

#include <SFML/Graphics.hpp>

using namespace std;
using namespace sf;

#pragma region variables
RenderWindow app(VideoMode(800,600,32),"Test", Style::Titlebar);
KeyGestion K;
#pragma endregion variables

int main()
{
    while(app.isOpen())
    {
        Event event;
        while (app.pollEvent(event))
        {
            if (event.type == event.Closed)
                app.close();
        }
        K.KeyPress();
        app.display();
    }

}
 

Le problème, c'est que lorsque je veux accéder à ma fenêtre "app" pour la fermer depuis une autre classe, ici KeyGestion.CPP, au moment de vouloir appliquer un évènement clavier ( ici pour fermer la fenêtre ), cela ne reconnait pas "app" par l'erreur suivante : error : 'app' was not declared in this scope

Voici KeyGestion.CPP
#include "KeyGestion.h"

#include <SFML/Graphics.hpp>

using namespace std;
using namespace sf;

KeyGestion::KeyGestion()
{

}

KeyGestion::~KeyGestion()
{

}

void KeyGestion::KeyPress()
{
    if (Keyboard::isKeyPressed(Keyboard::Escape))
    {
       app.close();
    }
}

Le but étant de fermer ma fenêtre en pressant la touche ECHAP grâce à une classe spécifique pour la gestion des touches clavier... Merci encore à vous de bien vouloir m'éclairer :-)

80
Graphique / Re : Balle qui rebondit contre les rebords...Galère !
« le: Décembre 15, 2016, 11:11:56 pm »
Choqué.. j'ai résolu le problème en remplaçant

circle.move(dX, dY)

par ...

circle.setPosition(dX, dY)

Si ça peut en aider d'autres...  :D mais une question reste en suspens.... POURQUOI ?!

81
Graphique / Balle qui rebondit contre les rebords...Galère !
« le: Décembre 15, 2016, 11:03:06 pm »
Bonsoir tout le monde  :)

Je viens vous voir car je suis un petit peu perdu sur un petit programme que j'essaie de concevoir, autrement-dit : une simple balle qui rebondirait contre les 4 rebords de la fenêtre..

J'ai tenté d'inverser les valeurs X et Y si ces coordonnées dépassaient la largeur ( width ) de l'écran ou bien la hauteur ( height ) avec des booleans pour modifier les calculs en conséquence, mais mon programme se comporte n'importe comment, la balle rebondit bien après avoir quitté l'écran et fait des mouvements bizarres, d'autant plus qu'avec les getPositionX et Y de ma balle, elle prend de plus en plus d'amplitude ( que ce soit dans les négatifs ou les positifs ) au fur & à mesure !

Pourquoi un tel comportement ?

C'est pour un programme en 800*600 donc j'ai mis les valeurs 770 et 570 / 30 et 30 car j'ai déduis la taille de la balle..

PS : Je trouve le code du tuto openclassroom trop lourd / bordélique et en plus, il est obsolète par rapport à la nouvelle version SFML.. j'aimerais vous m'aidiez à identifier le problème dans MON code.

Merci infiniment à vous les z'amis :D

main.cpp
#include <iostream>
#include <SFML/Graphics.hpp>

#include "Ball.h"
#include "checkCollide.h"

using namespace std;
using namespace sf;

#pragma region variables
unsigned int SCREEN_WIDTH(800);
unsigned int SCREEN_HEIGHT(600);
RenderWindow app(VideoMode(SCREEN_WIDTH,SCREEN_HEIGHT,32),"Hey");
#pragma endregion variables

#pragma region fonctions
void gestionClavier();
#pragma endregion fonctions

int main()
{

    app.setFramerateLimit(30);

    Ball ball(Color::Red, 30);
    ball.setPosition(SCREEN_WIDTH/2-30, SCREEN_HEIGHT/2-30);

    while(app.isOpen())
    {
        Event E;

        while(app.pollEvent(E))
        {
            if(E.type == E.Closed)
                app.close();
        }

    gestionClavier();

    ball.moveBall();
    ball.checkCollide();

    cout << ball.getX() << endl;
    cout << ball.getY() << endl;

    system("cls");

    app.clear();
    app.draw(ball.getCircle());
    app.display();

    }

}

void gestionClavier()
{
        if (Keyboard::isKeyPressed(Keyboard::Escape))
        {
            app.close();
        }
}
 

Ball.h

#ifndef BALL_H_INCLUDED
#define BALL_H_INCLUDED

#include <SFML/Graphics.hpp>

class Ball{

protected:
    int m_taille = 0;
    int m_dX = 0;
    int m_dY = 0;
    int m_speed = 0;
    bool veX = false;
    bool veY = false;
    sf::CircleShape circle;

public:
    Ball();
    Ball(sf::Color c, int taille, int speed = 1);
    sf::CircleShape getCircle();
    sf::CircleShape setPosition(int x, int y);
    void moveBall();
    void checkCollide();
    int getX();
    int getY();
    ~Ball();

};

#endif
 

Ball.cpp

#include <iostream>

#include "Ball.h"

using namespace std;
using namespace sf;

Ball::Ball()
{

}

Ball::Ball(Color c, int taille, int speed) :
    m_taille(taille), m_speed(speed)
{
    circle.setFillColor(c);
    circle.setRadius(m_taille);
}

void Ball::moveBall()
{
    if (veX){
        m_dX += m_speed;
    }
    if (!veX){
        m_dX -= m_speed;
    }
    if (veY){
        m_dY += m_speed;
    }
    if (!veY){
        m_dY -= m_speed;
    }

    circle.move(m_dX, m_dY);
}

void Ball::checkCollide()
{
        if (circle.getPosition().x > 770)
    {
        veX = false;
    }
        if (circle.getPosition().x < 30)
    {
        veX = true;
    }
        if (circle.getPosition().y > 570)
    {
        veY = false;
    }
        if (circle.getPosition().y < 30)
    {
        veY = true;
    }
}

int Ball::getX()
{
    return circle.getPosition().x;
}

int Ball::getY()
{
    return circle.getPosition().y;
}

CircleShape Ball::getCircle()
{
    return circle;
}

CircleShape Ball::setPosition(int x, int y)
{
    circle.setPosition(x,y);
}

Ball::~Ball()
{

}
 

Et encore MERCI !  ;)

82
Général / Re : Erreur lorsque je lance l'exécutable de mon projet..
« le: Décembre 12, 2016, 02:56:26 pm »
J'implore votre aide..  :'(

83
Général / Re : Erreur lorsque je lance l'exécutable de mon projet..
« le: Décembre 10, 2016, 06:58:27 pm »
Tu te doutes bien que c'est ce que je me suis empressé de faire... Néanmoins, cela n'a pas été concluant, malgré de maintes & maintes recherches à ce sujet, c'est la raison pour la quelle j'ai sollicité ce forum..

Merci !

84
Général / Re : Erreur lorsque je lance l'exécutable de mon projet..
« le: Décembre 10, 2016, 05:04:19 pm »
Décidément Laurent, tu es né pour mes jours de détresse :-P

Comment pourrais-je m'y prendre afin de procéder à l'inclusion statique au .exe ?

85
Général / Erreur lorsque je lance l'exécutable de mon projet..
« le: Décembre 10, 2016, 04:24:02 pm »
Salut à tous :-)

Je viens à vous car j'ai [enfin] réussi à installer correctement SFML sur Code::Blocks 16.1.
Lorsque je compile et lance mon programme depuis l'IDE ( le code source de l'exemple du site pour afficher un cercle vert ), il fonctionne nickel.

Par contre, dés que je tente de lancer l’exécutable dans le dossier de mon projet, j'ai droit à cette erreur :

http://image.noelshack.com/fichiers/2016/49/1481383039-screen.png

Lorsque je rajoute la DLL en question, il m'en demande une autre et ainsi de suite.... Donc comment pallier à ce problème de manière à ce que je puisse lancer mon exécutable sans problème ?

Merci à vous !

86
Général / Re : Afficher les méthodes SFML lorsque je code..?
« le: Décembre 10, 2016, 03:45:13 pm »
Ah, le terme c'est "auto-complétion".. merci d'avance pour votre aide.

EDIT : J'ai trouvé...! Fallait juste que je redémarre Code::Blocks après avoir installé SFML ;D ;D ;D

Merci quand même  :)

87
Général / Re : Afficher les méthodes SFML lorsque je code..?
« le: Décembre 10, 2016, 03:35:39 pm »
Et bien si, car comme précisé plus haut, cela fonctionne avec le code de base CPP ainsi qu'avec la Lib SDL que j'avais installé il y a quelques jours, c'est le code SFML qui ne veut pas s'afficher pas à l'avance..

88
Général / Re : Afficher les méthodes SFML lorsque je code..?
« le: Décembre 10, 2016, 10:26:33 am »
Bonjour Laurent !
Je parle bel et bien de l'activer dans l'IDE ( je suis sous Code::Blocks 16.1 )
Merci 😊

89
Général / Afficher les méthodes SFML lorsque je code..?
« le: Décembre 10, 2016, 09:37:46 am »
Bonjour à tous :-)

Je viens vous voir car j'aimerais savoir comment faire pour afficher les méthodes de SFML lorsque je code ... par exemple, si je commencer à taper sf::sle et bien je vois le mot "sleep" qui s'affiche et en appuyant sur ENTER il s'affiche entièrement tout seul..? Un peu comme avec la librairie SDL ou bien même si je tape un simple " co " et bien "cout" m'est proposé.. je crois m'être exprimé de manière suffisamment clair pour que vous compreniez ma demande :-)

En vous remerciant d'avance !

Pages: « Précédente 1 ... 4 5 [6]
anything