IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Méthode fonctionnant pas dans ma classe mais fonctionnant dans la main


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mars 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Méthode fonctionnant pas dans ma classe mais fonctionnant dans la main
    Je sais que le titre n'est pas explicite mais je ne sais pas vraiment quel est mon problème..
    Alors voila:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #include "colision.h"
    #include <iostream>
     
    using namespace std;
     
    colision::colision(){
     
    }
     
    void colision::ballToWindow(Ball ball){
        if(ball.getPosX() >= 800){
     
        ball.setPosX(400);
        ball.setDirectionX(ball.getDirectionX()*-1);
        }
    }
    J'ai plusieurs classe dans mon projet, (réaliser un pong en C++ sans trop d'expérience), une classe main, une classe colision(je sais qu'il y a une faute a collision) et une classe Ball.
    J'aimerai savoir pourquoi ma fonction n'effectue pas le code demander. j'ai effectuer des vérifications et j'en ai déduis que l'erreur était que le code était effectuer mais que les données n'était pas sauvegardé. (sachant que ce code fonctionne dans ma main classe).
    Si quelqu'un à une idée de mon erreur qu'il n'hésite pas a commenter. Merci !

    PS: Je peut vous fournir le reste du code si le bout que j'ai mis ne suffis pas. et je sais que mon code est surement brouillon je ne suis qu'un débutant.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mars 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    je vous ajoute les autre file vu que je ne pense pas qu'on puisse m'aider sans:
    Ball.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    #include "Ball.h"
    #include <SFML/Graphics.hpp>
    using namespace std;
    Ball::Ball(int X, int Y,int rayon, int vitesse){
        posX = X;
        posY = Y;
        radian = rayon;
        pause = false;
        speed = vitesse;
        init();
    }
    Ball::Ball(){ //defaut
    }
    int Ball::getPosX(){
     
    return posX;
    }
    int Ball::getPosY(){
     
    return posY;
    }
    void Ball::setPosX(int X){
        posX = X;
    }
    void Ball::setPosY(int Y){
        posY = Y;
    }
    int Ball::getRadian(){
     
        return radian;
    }
    void Ball::setRadian(int rayon){
        radian = rayon;
    }
     
    void Ball::init(){
        cir.setRadius(getRadian());
        cir.setPosition(getPosX(), getPosY());
        cir.setFillColor(sf::Color::Black);
     
    }
    void Ball::move(){
        if(pause == false){
     
            cir.setPosition(getPosX(),getPosY());
             if(min3.getElapsedTime().asMilliseconds() >= 5){
                    int x = getPosX()+(2*getSpeed())*(getDirectionX());
     
                 setPosX(x);
                 setPosY((getPosY()+(1*getSpeed()*getDirectionY())));
                 min3.restart();
             }
        }
    }
     
    void Ball::stop(){
           pause = true;
    }
    void Ball::play(){
        pause = false;
    }
    int Ball::getSpeed(){
     
        return speed;
    }
    void Ball::draw(sf::RenderWindow window){
        window.draw(cir);
    }
    sf::CircleShape Ball::getBall(){
        return cir;
    }
    int Ball::getDirectionX(){ //Direction
     
        return dirX;
    }
    void Ball::setDirectionX(int direction){
        dirX = direction;
    }
    int Ball::getDirectionY(){ //Direction
     
        return dirY;
    }
    void Ball::setDirectionY(int direction){
        dirY = direction;
    }
    main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    #include <SFML/Graphics.hpp>
    #include <iostream>
    #include "Ball.cpp"
    #include "colision.cpp"
     
    sf::RenderWindow window;
     
    Ball ball(100,100, 15,1);
     
    using namespace std;
     
    void init(){
        //Création de la fenêtre
        window.create(sf::VideoMode(1340, 760), "Pong v0.01");
    }
     
     
    void draw(){
        //Fonction principale. C'est ici que se déroulera l'affichage
        window.clear(sf::Color::Blue);  // Clear le fond en bleu (on mettra un vrai fond apres)
        ball.move();
        colision col;
        col.ballToWindow(ball);
        /*if(ball.getPosX() >= 800){
     
        ball.setDirectionX(ball.getDirectionX()*-1);
     
     
        }*/
        window.draw(ball.getBall());
        window.display(); // pas trop compris mais askip faut le mettre
    }
     
    int main()
    {
        init();
        // on fait tourner le programme jusqu'à ce que la fenêtre soit fermée
        while (window.isOpen())
        {
     
        draw();
            // on inspecte tous les évènements de la fenêtre qui ont été émis depuis la précédente itération
            sf::Event event;
            while (window.pollEvent(event))
            {
                // évènement "fermeture demandée" : on ferme la fenêtre
                if (event.type == sf::Event::Closed)
                    window.close();
            }
     
     
        }
     
        return 0;
    }

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 965
    Points
    32 965
    Billets dans le blog
    4
    Par défaut
    - merci de poster le code ici avec les balises code
    - ton ballToWindow prend une Ball par copie et donc modifie... une copie qui est rapidement détruire à la sortie de la fonction
    > vu que tu travailles sur une copie, aucune chance que l'original soit modifié ni mis à jour
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mars 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Salut et je pourrais savoir comment modifier l'originale ?

  5. #5
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 642
    Points
    7 642
    Par défaut
    Citation Envoyé par Wolgame Voir le message
    Salut et je pourrais savoir comment modifier l'originale ?
    Il faut passer la variable par référence avec le symbole &.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void colision::ballToWindow( Ball &ball ) {

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mars 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Merci c'était tout simple en fait

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Macro qui ne Fonctionne PAS sur Excel 2003 mais Fonctionne sur Excel 2010
    Par CedResma34 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 17/01/2014, 10h05
  2. Réponses: 6
    Dernier message: 20/05/2010, 11h34
  3. Réponses: 1
    Dernier message: 04/11/2009, 15h33
  4. fichier shell qui ne fonctionne pas avec le cron mais fonctionne dans le shell
    Par diabli73 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 20/10/2008, 19h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo