Question

Une vie plus simple

Je retourne à C pour aider à revigorer mon lobe de programmation. La dernière fois que j'ai appris à programmer, j'étais à l'université et travaillais avec Turbo C sur MSDOS. Les animations ASCII simples sont devenues une obsession une fois que j’ai trouvé l’intégration <conio.h> conviviale de Borland. Les fonctions gotoxy et textcolor s’amusaient beaucoup et j’écrivais des jeux comme serpent et pong. C'était une manière très enrichissante d'apprendre une langue et chaque jeu m'a poussé plus loin à mesure que je devenais plus ambitieux.

ncurses

J'aimerais commencer par des projets similaires. Aujourd'hui, cependant, je suis sur un Mac avec une machine Linux poussiéreuse dans le coin. Je pourrais lancer mon bien-aimé Turbo C dans dosbox (une plate-forme assez omniprésente) mais je veux apprendre le C pour pouvoir développer quelque chose qui se compile naturellement sur toute plate-forme BSD ou Unix. On m'a dit que ncurses était la voie à suivre, mais le site GNU m'a largement dépassé la tête. De retour dans la journée, j’avais ma fonction conviviale textmode et j’étais une print expression éloignée de pong. ncurses semble beaucoup plus puissant.

whoosh

Il doit y avoir beaucoup de gens qui ont été dans cette situation. Je suis à la recherche d'un tutoriel ou d'une ressource utile pour m'aider à comprendre ce qu'est ncurses et comment l'utiliser. Des astuces ou des histoires similaires seraient aussi d'un grand intérêt!

Était-ce utile?

La solution

Oui, ncurses est la bibliothèque que vous recherchez. À titre d’exemple, voici l’équivalent (n) malédictions de gotoxy:

  

NOM

     

move, wmove - déplace le curseur de la fenêtre curses

     

SYNOPSIS

   #include <curses.h>

   int move(int y, int x);
   int wmove(WINDOW *win, int y, int x);
     

DESCRIPTION

     

Ces routines déplacent le curseur associé à la fenêtre sur   ligne y et colonne x. Cette routine ne déplace pas le curseur physique   du terminal jusqu'à ce que refresh soit appelé. La position spécifiée est   par rapport au coin supérieur gauche de la fenêtre, qui est (0,0).

Addendum:

Dans votre commentaire, vous posez une question à propos de Windows curses. Je ne pense pas pouvoir vraiment améliorer ce que dit la page de manuel ncurses à ce sujet. Je vais donc simplement le citer:

  

La bibliothèque ncurses permet   manipulation des structures de données,   appelé fenêtres, ce qui peut être pensé   de comme des tableaux à deux dimensions de   des personnages représentant tout ou partie de   un écran cathodique. Une fenêtre par défaut appelée   stdscr, qui est la taille du   écran terminal, est fourni. Autres   peut être créé avec newwin.

     

Notez que les malédictions ne gèrent pas   fenêtres qui se chevauchent, cela se fait par   la bibliothèque de panneaux (3CURSES). Ce   signifie que vous pouvez soit utiliser stdscr   ou diviser l'écran en mosaïque   windows et ne pas utiliser stdscr du tout.   Mélanger les deux aboutira à   imprévisible et indésirable,   effets.

     

Windows est désigné par des variables   déclaré comme WINDOW *. Ces données   les structures sont manipulées avec   routines décrites ici et ailleurs   dans les pages de manuel ncurses. Parmi   ceux, les routines les plus élémentaires sont   déplacez et ajoutez. Plus général   les versions de ces routines sont   inclus avec les noms commençant par w,   permettant à l'utilisateur de spécifier une fenêtre.   Les routines ne commençant pas par w   affecter stdscr.

     

Après avoir utilisé des routines pour manipuler un   window, refresh est appelé, en disant   malédictions pour rendre l'écran CRT de l'utilisateur   ressembler à stdscr. Les personnages de   une fenêtre est en fait de type chtype,   (données de caractère et d'attribut) de sorte que   autres informations sur le personnage   peut également être stocké avec chaque   caractère.

Donc, en résumé, vous pouvez ignorer en toute sécurité la totalité de la fenêtre et simplement utiliser la fenêtre stdscr.

Autres conseils

Eh bien, sur les systèmes de type UNIX tels que BSD et Linux, vous voulez absolument utiliser ncurses car les émulateurs de terminal vous rendent la vie vraiment misérable si vous ne le faites pas.

Vous devriez probablement écrire vous-même un simple wrapper contenant les fonctionnalités dont vous avez besoin et l'implémenter différemment pour différents systèmes d'exploitation. Sous Windows, il existe quelques fonctions de console . vous pouvez utiliser pour que cette partie ne soit pas trop difficile.

Voici un petit programme pour vous aider à démarrer.

#include <curses.h>

int main(void) {
  int ch;

  /* The whole program needs error-checking */
  initscr();
  noecho();
  cbreak();
  printw("Hit Ctrl+C to exit ...\n\n");
  for (;;) {
    ch = getch();
    printw("Value of char: %d (%02x)\n", ch, ch);
  }
  endwin();
  return 0;
}

N'oubliez pas d'indiquer à l'éditeur de liens d'ajouter la bibliothèque libcurses.

gcc ... -lcurses

Il existe une bibliothèque fournissant des fonctions Turbo C analogues à celles de la console pour Linux: TurboC Voir aussi: CONIO pour DevC ++

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top