Quelles librairies à connaitre

Bonsoir!
Je suis actuellement en train d’apprendre doucement la programmation en C, puis C++. Je voudrais avoir votre avis sur quelles librairies vous me conseilleriez de connaitre?
Bon, pour une interface, il y a GTK et Qt, et la doc ne manque pas pour ceux-ci. De même pour la SDL (jeux?).

Mais pour les programmes consoles? Que peut faire la librairie ncurse? Sinon, j’ai vu dans certains programmes des
#include <ctype.h>
Qu’est-ce ?
Dernière question, quelle librairie peut gérer les évènements (clic souris, clavier) en console?
Ça fait beaucoup de question, afin de vous inciter à expliquer les librairies que vous conseilleriez, et pourquoi :slight_smile:

Merci d’avance!

La FNAC? Gibert Jeune? Sinon, en français library se dit bibliothèque.

SDL.

:smiley: Merci ! :smiley: :smiley:

Sinon il y a ncurse qui doit pouvoir récupérer les évènements claviers. xcb ou xlib ont je pense besoin d’un serveur graphique donc dans un émulateur de terminal pas de problème mais en console non (ils peuvent aussi récupérer les évènement souri). Il y avait une bibliothèque utilisée par bash et zsh pour gérer le clavier mais je crois qu’elle est assez spécifique.

[quote=“o_b”][quote=“thuban”]
#include <ctype.h>
Qu’est-ce ?
[/quote]

SDL.[/quote]
Ah bon ?
secure.wikimedia.org/wikipedia/en/wiki/Ctype.h

Bien vu, je me suis fait avoir … :unamused:

[quote=“MisterFreez”][quote=“o_b”][quote=“thuban”]
#include <ctype.h>
Qu’est-ce ?
[/quote]

SDL.[/quote]
Ah bon ?
secure.wikimedia.org/wikipedia/en/wiki/Ctype.h[/quote]
Visiblement, les fonctions toupper ou tolower sont inclues dans cette bibliotheques. Mais elles sont fournies aussi dans string.h. (ou en tout cas accessibles). Est-ce possible que un include appelle un autre include? (je ne sais pas si je suis très clair…)

J’ai vu dans le programme pacman4console une gestion des évènements. Cependant, je ne suis pas sûr de quelle bibliotheque il utilise. Il y a :
curses.h et sys.timeb.h
La fonction qui récupère la touche est celle-ci :

[code]void GetInput() {
int ch;
static int chtmp;

ch = getch();

//Buffer input
if(ch == ERR) ch = chtmp;
chtmp = ch;

switch (ch) {
	case KEY_UP:    case 'w': case 'W':
		if((Level[Loc[4][0] - 1][Loc[4][1]] != 1)
		&& (Level[Loc[4][0] - 1][Loc[4][1]] != 4))
			{ Dir[4][0] = -1; Dir[4][1] =  0; }
		break;

	case KEY_DOWN:  case 's': case 'S':
		if((Level[Loc[4][0] + 1][Loc[4][1]] != 1)
		&& (Level[Loc[4][0] + 1][Loc[4][1]] != 4))
			{ Dir[4][0] =  1; Dir[4][1] =  0; }
		break;

	case KEY_LEFT:  case 'a': case 'A':
		if((Level[Loc[4][0]][Loc[4][1] - 1] != 1)
		&& (Level[Loc[4][0]][Loc[4][1] - 1] != 4))
			{ Dir[4][0] =  0; Dir[4][1] = -1; }
		break;

	case KEY_RIGHT: case 'd': case 'D':
		if((Level[Loc[4][0]][Loc[4][1] + 1] != 1)
		&& (Level[Loc[4][0]][Loc[4][1] + 1] != 4))
			{ Dir[4][0] =  0; Dir[4][1] =  1; }
		break;

	case 'p': case 'P':
		PauseGame();
		chtmp = getch();
		break;

	case 'q': case 'Q':
		ExitProgram("Bye");
		break;

}

}[/code]
Donc en gros, un getchar, qui il me semblait servait juste à récupérer un caractère. Ça peut suffire?

Oui les include dans un header ça marche.

Oui getchar de la bibliothèque standard récupère les touches, mais dis nous ce que tu veut faire on pourras t’aider probablement mieux.

Rien en particulier pour l’instant, je voudrais juste apprendre :slight_smile: . Et pour m’entrainer, j’avais pensé faire 2-3 jeux en console, dont le pacman à partir de zéro. C’est pourquoi je me demandais comment récupérer les touches.
Et là, le getchar(), je ne comprends pas. Je devrais plutôt chercher de la documentation sur cette fonction que de m’arrêter à ma définition : “ça sert à récupérer un caractère”

[quote=“thuban”]Je suis actuellement en train d’apprendre doucement la programmation en C, puis C++.[/quote]Salut,
Attention à ne pas faire un mélange des deux, aborde bien le C++ comme un langage à part et non comme une extension du C (rien à voir, le ++ est trompeur).

En C++, probablement Boost… mais une partie est intégrée à la nouvelle norme C++ je crois (les mecs qui font Boost sont les mêmes qui mettent au point la nouvelle norme), à vérifier.

[quote]Bon, pour une interface, il y a GTK et Qt, et la doc ne manque pas pour ceux-ci. De même pour la SDL (jeux?).[/quote]SDL pour le C oui, pour le C++ je te conseille la SFML (bien faite, orientée objet, bien documentée en français et en anglais).

En C++, probablement Boost… mais une partie est intégrée à la nouvelle norme C++ je crois (les mecs qui font Boost sont les mêmes qui mettent au point la nouvelle norme), à vérifier.[/quote]
En effet mais c’est une future norme (sans concept :089 )

Si je comprend bien, getchar(), qui est comme getc(stdin), récupère un flux, qui peut être supérieur à 1 seul caractère?

Si je comprend bien, getchar(), qui est comme getc(stdin), récupère un flux, qui peut être supérieur à 1 seul caractère?[/quote]
“Récupère un flux superieur à un seul caractère” ?

manpages.debian.net/cgi-bin/man. … &locale=fr

Ça permet d’extraire un caractère de l’entrée standard (qui est un flux). C’est équivalent à getc(stdin) car getc extrait le prochain caractère d’un flux passé en paramètre (stdin est l’entrée standard). Le rapport avec 1 m’échappe.

Ce que j’ai du mla à comprendre, c’est comment un évènement (par exemple, “touche du bas appuyée”), peut être considéré comme un caractère?

Fait des tests regarde ce qui se passe quand tu le fait. Regarde la valeur qui t’es renvoyée.

Comme quoi, même les révolutionnaires, sont parfois attachés à la vérité :038

Oui je vais voir tout ça au calme. Merci!