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

Langage C++ Discussion :

Création de cercle avec bibliothèque graphique


Sujet :

Langage C++

  1. #1
    Candidat au Club
    Homme Profil pro
    lyon 1
    Inscrit en
    Avril 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : lyon 1

    Informations forums :
    Inscription : Avril 2022
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Création de cercle avec bibliothèque graphique
    bonjour, bonsoir
    je vous explique mon petit souci, j' ai pour projet de reproduire le jeux "the binding of isaac" (en moin bien , évidement) et pour cela je dois creer les tirs de mon personnage.
    or dans le code que vous allez voir , le programme me crée un cercle puis plus rien , ce qui est normale vous allez me dire mais je ne vois pas comment faire pour changer ca.
    on m'a parlé de la fonction std::vector<> mais je ne sais pas comment elle fonctionne (et nous ne l'avons pas vu) j'ai ensuite pensé a faire un teste en creant plusieurs boules puis suivant la valeur d un entier , je cree une boule, le probleme , c est : elle est de quel type ? puisque je doit la declarer dans la structure .... bref je vous laisse le code et si une quelconque aide peut m'etre apporté je suis preneur.


    derniere précision, ma bibliotheque graphique est : grapic mais elle utilise la SDL donc dans le fonctionnement c'est plus ou moin la meme chose.


    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
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
     
    #include <iostream>
    #include <Grapic.h>
    const int Dimw =500;
    using namespace grapic;
    struct Complex{
    float x,y;
    };
     
    Complex make_complex(float x,float y)
    {
        Complex c;
        c.x=x;
        c.y=y;
        return c;
    }
    float rad_to_deg(float a)
    {
        return(a*360.0)/(2*M_PI);
    }
    float deg_to_rad(float a)
    {
        return (a*2*M_PI)/360.0;
    }
     
    Complex make_complex_exp(float r,float theta_deg)
    {
        Complex c;
        float a = deg_to_rad(theta_deg);
     
        c.x=r*cos(a);
        c.y=r*sin(a);
        return c;
    }
     
    Complex operator+(Complex a,Complex b)
    {
        Complex c;
        c.x=a.x+b.x;
        c.y=a.y+b.y;
        return c;
    }
     
    Complex operator-(Complex a,Complex b)
    {
        Complex c;
        c.x=a.x-b.x;
        c.y=a.y-b.y;
        return c;
    }
     
    Complex operator*(Complex a,float lambda)
    {
        return(make_complex(a.x*lambda,a.y*lambda));
    }
     
    Complex scale (Complex a,float cx,float cy, float lambda)
    {
        Complex res;
        Complex tr=make_complex(cx,cy);
        res=((a-tr)*lambda+tr);
        return res;
    }
     
    Complex operator*(Complex a,Complex b)
    {
        return (make_complex(a.x*b.x-a.y*b.y,a.x*b.y+a.y*b.x));
    }
     
    Complex Rotate(Complex p,float cx,float cy,float theta_deg)
    {
        Complex res,r,tr;
        r=make_complex_exp(1,theta_deg);
        tr=make_complex(cx,cy);
        res=((p-tr)*r)+tr;
        return res;
    }
     
    struct boule{
    Complex c;
    int bl;
    };
    void Draw (boule B){
     
    circleFill(B.c.x,B.c.y, 10);
     
    }
    void init (boule &B) {
     B.c=make_complex(Dimw/2,Dimw/2);
     
    if (isKeyPressed (SDLK_SPACE)){
        Draw(B);
    }
    }
     
     
     
    void update (boule &B){
     B.c.x =B.c.x +0.8;
     
    }
     
    int main (int, char**){
     
     
     bool stop=false;
        winInit("projet", 800, Dimw);
        boule B;
        init (B);
     
     setKeyRepeatMode(true);
     while( !stop )
     {
     winClear();
     //Draw(B);
     update (B);
      backgroundColor(100,100,100,85);
    //100,255,50,85);...........................vert
     stop = winDisplay();
     }
     winQuit();
     return 0;
    }

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Je ne comprends pas votre code. Je veux dire par là, pourquoi il y a une fonction pour des nombres complexes ? J'ai jamais eu besoin de ça dans mes jeux .
    Sinon, cette histoire de nombre complexe, vous pourriez mettre le code dans un fichier à part (un fichier .cpp et son entête en fichier .h).
    Pour ce qui est de la question, je n'ai pas vu grand chose. Je vais donc vous conseiller de la lecture :

    Pourquoi juste la documentation ? Car une grande partie du travail du programmeur, c'est de savoir lire la documentation.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    comme LittleWhite moi non plus je ne comprends pas pourquoi du code si compliqué.
    Si on veut qu'un personnage tire dans un jeu il suffit d'utiliser l'algorithme de Bresenham pour déterminer la trajectoire du projectile.
    Pour ce qui est de std::vector ça sera utile pour mémoriser les positions des projectiles.

  4. #4
    Candidat au Club
    Homme Profil pro
    lyon 1
    Inscrit en
    Avril 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : lyon 1

    Informations forums :
    Inscription : Avril 2022
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    merci pour ces liens, et pour la reponse sur "pourquoi des nombres complexes " ils correspondent aux coordonnées de mon personnage , dans un autre code. les boules devraient représenter ses tirs , mais en effet , ca n'a rien a faire dans ce bout de code

    Citation Envoyé par Mat.M Voir le message
    comme LittleWhite moi non plus je ne comprends pas pourquoi du code si compliqué.
    Si on veut qu'un personnage tire dans un jeu il suffit d'utiliser l'algorithme de Bresenham pour déterminer la trajectoire du projectile.
    Pour ce qui est de std::vector ça sera utile pour mémoriser les positions des projectiles.
    je vais essayer de comprendre le fameux ' std::vector<>' et pour ce qui est de l'algorithme de bresenham aussi (que je ne connaissait pas jusqu'a present) pour ce qui est de la complexité du code et du fait qu'il n'ai pas un reel sens , c'est du a l'apprentissage de la fac ...

  5. #5
    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 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Un système de coordonnées 2d c'est x/y, donc soit une simple struct ou tuple que le bon sens voudrait qu'on nomme Coordonnees ou Coords, vu que c'est son nom et pas nombres complexes.
    Parfois ça se retrouve sous le nom Vector2 ou similaire, parce qu'un point peut finalement être un vector entre (0,0) et lui-même.
    Réinventer un type Complexe bancal au milieu n'a aucun intérêt et le nom est trompeur. Et ça pollue près de 80% de ton code qui rend sa lisibilité difficile.
    Tout ça pour comprendre que le problème c'est que tu as une unique variable B et est surpris de n'avoir qu'une seule boulle affichée ?
    Et std::vector est un type et non une fonction.
    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.

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

Discussions similaires

  1. [HTA]Calculateur segments de cercle avec sortie graphique
    Par ProgElecT dans le forum Vos Contributions VBScript
    Réponses: 0
    Dernier message: 21/02/2017, 17h02
  2. [XL-2010] Création d'un cercle dans un graphique
    Par jauffray.delteil dans le forum Excel
    Réponses: 4
    Dernier message: 04/01/2013, 14h21
  3. bibliothèque graphique avec le langage c
    Par argon dans le forum Bibliothèques
    Réponses: 5
    Dernier message: 19/09/2009, 10h18
  4. probléme lors de la création de BD avec l'assistant graphique
    Par sajedose dans le forum Administration
    Réponses: 1
    Dernier message: 31/03/2008, 13h34
  5. Bibliothéque graphique avec c++
    Par fallenjs dans le forum C++
    Réponses: 17
    Dernier message: 23/03/2008, 23h41

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