Forum Programmation.c Graphisme retro en console

Posté par  . Licence CC By‑SA.
Étiquettes :
2
23
nov.
2025

Bonjour à tous,

J'ai découvert récemment qu'il est possible en C de positionner de façon simple le curseur n'importe où sur l'écran d'un terminal sans utiliser de bibliothèque dédiée telle que ncurses. Cela permet de faire des graphismes rétros du même style que ceux que l'on faisait autrefois en Basic avec des TRS-80 ou équivalent.

Vous connaissez sans doute déjà la méthode, mais je me permets de la poster ici au cas où cela aurait échappé à certains comme moi.

Voici par exemple comment tracer une sinusoïde :

#include <stdio.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <math.h>

int main(void)
    {
    struct winsize w;
    int x;
    double y;
    if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &w) == 0)
        {
        printf("\033[2J"); // Efface l'écran
        for (x=1;x<=w.ws_col;x++)
            {
            y=(sin((x-1)*4*3.1416/w.ws_col))*(w.ws_row-1)/2.5+(w.ws_row+1)/2.0;
            printf("\033[%.0f;%dH*",y,x); // Positionne le caractère "*" aux coordonnées x,y
            }       
        printf("\033[%d;%dH",0,0); // Positionne le curseur aux coordonnées 0,0
        }
    else
        {
        perror("Erreur");
        return 1;
        }
    return 0;
    }

Le résultat :

                             ***                                     ***
                           **   **                                 **   **
                          *       *                               *       *
                         *         *                             *         *
                        *           *                           *           *
                       *             *                         *             *

                      *               *                       *               *
                     *                 *                     *                 *
*                   *                                       *
                                        *
 *                 *                     *                 *
  *               *                       *               *

   *             *                         *             *
    *           *                           *           *
     *         *                             *         *
      *       *                               *       *
       **   **                                 **   **
         ***                                     ***

  • # Pas vraiment le C

    Posté par  (Mastodon) . Évalué à 3 (+0/-0).

    La "magie" n'est pas dans le langage, mais dans le terminal qui va interpréter l'affichage (donc printf() dans le cas du C).

    Dans ton Bash tu peux taper:

    echo -e "\033[10;20HLinuxFr.org"

    et tu verras LinuxFr.org s'afficher sur la 10e ligne et à la 20e colonne.

    En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.