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 :

Debut graphique en C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 1
    Par défaut Debut graphique en C
    Bonjour à tous,

    je commence à toucher au C et je désirerai faire du graphique avec ce langage. Je m'explique, je ne cherche pas à faire à moi tout seul le dernier moteur 3D et ainsi de suite. Non ce que je voudrais dans un premier temps, c'est juste afficher un point, une barre, un triangle, un simple rond, enfin une forme vraiment basique et ensuite la faire bouger sur l'écran.

    Alors, à force surfer oui je sais qu'il y a des bibliothèques pour cela, et justement je voudrais, en quelque sorte, et avec le temps, faire ma propre bibliothèque! Alors je comprends que pour commencer c'est peut être (et surement d'ailleurs) pas mal de notion à expliquer...

    Donc si au moins vous avez un simple tuto pour dessiner un triangle ou un rectangle, ou afficher un point sur l'écran et puis le faire bouger.

    Je sais que je vais (peut être, mais je ne le souhaite pas) me faire huer mais je désire vraiment comprendre ce que je fais quand je programme, je suis plus fier de mon programme qui affiche "bonjour monde" mais de l'avoir fait moi même. Que d'utiliser une bibliothèque qui va afficher mon image et la tordre dans tous les sens, sans que je comprenne comment. Je programme plus par plaisir que pour le résultat lui-même!

    Voilà tout, si vous avez besoin de plus d'informations, n'hésitez pas!

    A bientôt,
    Seb

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Bonjour,

    Citation Envoyé par C-Wolf Voir le message
    Je sais que je vais (peut être, mais je ne le souhaite pas) me faire huer mais je désire vraiment comprendre ce que je fais quand je programme, je suis plus fier de mon programme qui affiche "bonjour monde" mais de l'avoir fait moi même. Que d'utiliser une bibliothèque qui va afficher mon image et la tordre dans tous les sens, sans que je comprenne comment. Je programme plus par plaisir que pour le résultat lui-même!
    C'est excellent ! C'est comme cela que l'on devient un programmeur accompli.

    Le problème immédiat est que, si tu veux écrire ta propre bibliothèque graphique, il te faudra manipuler la mémoire, régler les cartes graphiques toi-même ou, à l'inverse, négocier avec le système d'exploitation pour qu'il le fasse lui-même, en harmonie avec les autres programmes. Et cela, pour toutes les configurations de machines possibles. Ce n'est pas un exercice de débutant ...

    En revanche, tu peux d'ores et déjà utiliser la SDL qui te permettra de faire ces inits et d'obtenir un pointeur vers un buffer vidéo. Tu contrôleras alors tes pixels en gérant le contenu de ta mémoire et ce sera à toi d'écrire les primitives qui te permettront de tracer une ligne, un cercle, etc.

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par C-Wolf Voir le message
    Bonjour à tous,

    je commence à toucher au C et je désirerai faire du graphique avec ce langage. Je m'explique, je ne cherche pas à faire à moi tout seul le dernier moteur 3D et ainsi de suite. Non ce que je voudrais dans un premier temps, c'est juste afficher un point, une barre, un triangle, un simple rond, enfin une forme vraiment basique et ensuite la faire bouger sur l'écran.

    Alors, à force surfer oui je sais qu'il y a des bibliothèques pour cela, et justement je voudrais, en quelque sorte, et avec le temps, faire ma propre bibliothèque! Alors je comprends que pour commencer c'est peut être (et surement d'ailleurs) pas mal de notion à expliquer...

    Donc si au moins vous avez un simple tuto pour dessiner un triangle ou un rectangle, ou afficher un point sur l'écran et puis le faire bouger.

    Je sais que je vais (peut être, mais je ne le souhaite pas) me faire huer mais je désire vraiment comprendre ce que je fais quand je programme, je suis plus fier de mon programme qui affiche "bonjour monde" mais de l'avoir fait moi même. Que d'utiliser une bibliothèque qui va afficher mon image et la tordre dans tous les sens, sans que je comprenne comment. Je programme plus par plaisir que pour le résultat lui-même!
    Ta démarche est bonne. Il n'y a malheureusement pas de réponse portable à ta question, car le langage C ne connait pas le mode graphique. Une bonne manière de s'exercer de manière portable est de le faire en mode texte en considérant chaque caractère de l'ecran comme un pixel ('*').

    On créée un écran virtuel dans lequel on peut écrire directement (par exemple, un tableau de 24 lignes de 80 colonnes), puis, on affiche l'ensemble du tableau. C'est lent, c'est moche mais c'est très pédagogique.

    je recommande ensuite de créer une fonction de base pix_put(int lin, int col, int val) avec val=0 : éteint (' ') val=1 : allumé ('*'), et une fonction pix_refresh() qui met à jour l'affichage.
    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
     
    #include <stdio.h>
     
    enum
    { PIX_OFF = ' ', PIX_ON = '*' };
     
    enum
    { NB_LIN = 24, NB_COL = 79 };
     
    struct screen
    {
       char tab[NB_LIN][NB_COL];
       int nb_lin;
       int nb_col;
    };
     
    void pix_init (struct screen *this, int nb_lin, int nb_col)
    {
       if (this != NULL)
       {
          this->nb_lin = nb_lin;
          this->nb_col = nb_col;
          {
             int lin;
             for (lin = 0; lin < this->nb_lin; lin++)
             {
                int col;
                for (col = 0; col < this->nb_col; col++)
                {
                   this->tab[lin][col] = PIX_OFF;
                }
             }
          }
       }
    }
     
    void pix_put (struct screen *this, int lin, int col, int val)
    {
       if (this != NULL && lin < this->nb_lin && col < this->nb_col)
       {
          this->tab[lin][col] = val ? PIX_ON : PIX_OFF;
       }
    }
     
    void pix_refresh (struct screen const *this)
    {
       if (this != NULL)
       {
          int lin;
          for (lin = 0; lin < this->nb_lin; lin++)
          {
             int col;
             for (col = 0; col < this->nb_col; col++)
             {
                putchar (this->tab[lin][col]);
             }
             putchar ('\n');
          }
       }
    }
     
    int main (void)
    {
       struct screen screen;
     
       pix_init (&screen, NB_LIN, NB_COL);
       pix_put (&screen, 4, 8, 1);
       pix_refresh (&screen);
     
       return 0;
    }

Discussions similaires

  1. [debutant]graphique avec python?
    Par sly33 dans le forum GUI
    Réponses: 4
    Dernier message: 13/02/2007, 09h53
  2. [debutant Eclipse RCP 3.0] vue graphique
    Par sharckyo dans le forum Eclipse Platform
    Réponses: 6
    Dernier message: 28/11/2005, 17h41
  3. [Debutant(e)] Possibilités graphiques et ludiques de JAVA
    Par Shadowritter dans le forum Interfaces Graphiques en Java
    Réponses: 17
    Dernier message: 17/01/2005, 17h05
  4. [Débutant] Application graphique
    Par KORTA dans le forum Modules
    Réponses: 2
    Dernier message: 18/07/2004, 09h07
  5. Réponses: 3
    Dernier message: 09/02/2003, 01h09

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