Ncurses

Discutez d'informatique ici !
Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

Ncurses

par Rockleader » 19 Avr 2014, 13:16

Hello, c'est encore moi :hum:


Dans le cadre de notre UE projet logiciel; on doit réaliser une sorte de mini jeu. On a d'ores et déjà réalisé toute la partie "conceptuelle théorique si je puis dire".
Reste à coder les fonctions.


Seulement nous avons une contrainte également: utiliser Ncurses, j'ai pas vraiment trouvé de doc en français donc je voulais essayer de glaner quelques infos si vous connaissez.

D'après ce que j'ai compris, il s'agirait d'une bibliothèque ? Logiciel ? Permettant de réaliser les applications graphiques, c-à-d faire des interaction avec le curseur de la souris. Le coté positif c'est que comme ça je pense que le plateau de jeu ça ne sera pas un simple amas de case avec des I et des _ I_I_I



Par ailleurs, est ce que pour l'utiliser il faut télécharger quelque chose ? Car j'ai beau faire des recherches sur internet en tapant ncurses il n'y a pas l'air d'y avoir de site permettant de le télécharger. Ce serait de base présent comme les biblio du style stdio ?


Merci à vous ;)
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !



Cliffe
Membre Rationnel
Messages: 967
Enregistré le: 12 Juin 2012, 13:25

par Cliffe » 19 Avr 2014, 13:28

C'est quoi un UE projet ?
Ncurses

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

par Rockleader » 19 Avr 2014, 14:44

Cliffe a écrit:C'est quoi un UE projet ?
Ncurses


Pardon l'habitude =)

UE c'est l’abréviation pour Unité d'enseignement à la fac !

EDIT: Je viens de voir ton lien, c'est donc une sorte de bibliothèque alors.

Il va falloir que je cherche comment utiliser ça en c maintenant ;)

Merci en tout cas.
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 07:03

par ampholyte » 19 Avr 2014, 17:00

Bonjour,

ncurves n'est pas une sorte de bibliothèque, c'est une bibliothèque comme stdio, stdlib ect ...

Voici un lien pour commencer qui t'aidera je pense : http://linuxfocus.org/Francais/March2002/article233.shtml#233lfindex10

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

par Rockleader » 19 Avr 2014, 17:47

Super génial merci ça va m'être d'une grande aide ça !

Je pense que je devrais m'en sortir avec ça ;)

Reste à coder les fonctions :d
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 20 Avr 2014, 00:16

juste une petite remarque, pense à regarder dans tes dépots, elle est probablement déjà disponible.
Tu la localises avec locate, et puis après c'est juste du makefile, -I pour le dossier d'include, -L pour le path de la lib.
la vie est une fête :)

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

par Rockleader » 20 Avr 2014, 09:37

Code: Tout sélectionner
locate ncurses

/lib/x86_64-linux-gnu/libncurses.so.5
/lib/x86_64-linux-gnu/libncurses.so.5.9
/lib/x86_64-linux-gnu/libncursesw.so.5
/lib/x86_64-linux-gnu/libncursesw.so.5.9
/usr/bin/ncurses5-config
/usr/bin/ncursesw5-config
/usr/share/doc/libncurses5
/usr/share/doc/libncursesw5
/usr/share/doc/ncurses-base
/usr/share/doc/ncurses-bin
/usr/share/doc/ncurses-base/changelog.Debian.gz
/usr/share/doc/ncurses-base/copyright
/usr/share/doc/ncurses-bin/FAQ
/usr/share/doc/ncurses-bin/changelog.Debian.gz
/usr/share/doc/ncurses-bin/copyright
/usr/share/lintian/overrides/ncurses-base
/usr/share/man/man1/ncurses5-config.1.gz
/usr/share/man/man1/ncursesw5-config.1.gz
/var/lib/dpkg/info/libncurses5:amd64.list
/var/lib/dpkg/info/libncurses5:amd64.md5sums
/var/lib/dpkg/info/libncurses5:amd64.postinst
/var/lib/dpkg/info/libncurses5:amd64.postrm
/var/lib/dpkg/info/libncurses5:amd64.shlibs
/var/lib/dpkg/info/libncurses5:amd64.symbols
/var/lib/dpkg/info/libncursesw5:amd64.list
/var/lib/dpkg/info/libncursesw5:amd64.md5sums
/var/lib/dpkg/info/libncursesw5:amd64.postinst
/var/lib/dpkg/info/libncursesw5:amd64.postrm
/var/lib/dpkg/info/libncursesw5:amd64.shlibs
/var/lib/dpkg/info/libncursesw5:amd64.symbols
/var/lib/dpkg/info/ncurses-base.conffiles
/var/lib/dpkg/info/ncurses-base.list
/var/lib/dpkg/info/ncurses-base.md5sums
/var/lib/dpkg/info/ncurses-bin.list
/var/lib/dpkg/info/ncurses-bin.md5sums


Il y a plusieurs versions de ncurses ou quoi ?

Enfin bref, à priori il est déjà pré installé donc je n'ai qu'à inclure ncurses.h pour utiliser nan ?
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

par Rockleader » 21 Avr 2014, 15:11

Qui plus est lorsque j'essaie de compiler; la biblio n'est pas trouvé sur le pc.

gcc -Wall exemple.c -o exemple -lcurses
exemple.c:1:20: fatal error: curses.h: Aucun fichier ou dossier de ce type
#include
^
compilation terminated.



Et lorsque j'essaie de faire un install ça bloque aussi

sudo apt-get install ncurses
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Aucune version du paquet ncurses n'est disponible, mais il existe dans la base
de données. Cela signifie en général que le paquet est manquant, qu'il est devenu obsolète
ou qu'il n'est disponible que sur une autre source

E: Le paquet «*ncurses*» n'a pas de version susceptible d'être installée



Une idée ? J'aimerais bien commencer à faire des tests mais pour le moment c’est impossible tant que je ne peux pas compiler curses ;)
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Cliffe
Membre Rationnel
Messages: 967
Enregistré le: 12 Juin 2012, 13:25

par Cliffe » 21 Avr 2014, 15:30

J'ai jamais utilisé perso. Pk vos profs vous font travailler sur des trucs aussi useless ? Qui fait encore des ihm sur une console sérieux ?

Quand je faisais des projets ou autres devoirs j'utilisai tjr les outils qui me paraissaient les plus adaptés et les plus simples, quitte à perdre quelques points. Si tu n'arrives pas à compiler, utilise autre chose, perd pas ton temps pour un truc dont tu ne te serviras pas.

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

par Rockleader » 21 Avr 2014, 15:33

Bah c'est une exigence du projet donc on doit faire avec =) A mon avis le but c'est de voir si on peut s'adapter à un outil inconnu.
2 Travail à effectuer
2.1
Version 1 : Gestion d'une version humain contre humain

[...]
• affichage avec NCUSES : grille, pions, événement souris, déplacements, affichage des
informations du jeu.

Pour l'instant on n'a jamais fait autre chose que de la programmation dans la console; le fait de structurer la console sous la forme d'une fenêtre c'est déjà pas si mal vu notre niveau je trouve =)

Encore faut il y arriver bien entendu^^
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Cliffe
Membre Rationnel
Messages: 967
Enregistré le: 12 Juin 2012, 13:25

par Cliffe » 21 Avr 2014, 15:48

Ils pourraient vs fournir la doc dans ce cas la ...

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

par Rockleader » 21 Avr 2014, 16:22

Ils pourraient =)

Ils pourraient aussi ne rien nous donner à faire =)

Mais la politique à la fac c'est submergez les étudiants de taf (en tout cas dans la mienne^^) c'est pas une mauvaise chose, mais sur la fin d'année, quand tu dois avancer à la fois sur les partiels et sur les projets ça devient vite hard.

Du coup par exemple pour ce semestre j'ai choisi de zapper mes tp machines d'archi et donc le projet d'archi sur l'arm...ça me fera un 0 comptant comme 30% [...] mais ça me donne le temps de bosser pour le reste des projets donc c'est un mal pour un bien, puis derrière il y a l'exam qui coûte pour 70% ... ce qui est suffisant, mais bon...

Je sais pas comment ça se passe dans les écoles d'ingé, mais j'ai du mal à croire qu'ils puissent avoir plus de taf x)

Fin bref je raconte ma vie là je retourne bosser mon partiel de réseaux =)
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Avatar de l’utilisateur
Zorro_X
Membre Naturel
Messages: 77
Enregistré le: 16 Avr 2012, 16:40

par Zorro_X » 21 Avr 2014, 17:52

Rockleader a écrit:Mais la politique à la fac c'est submergez les étudiants de taf (en tout cas dans la mienne^^) c'est pas une mauvaise chose, mais sur la fin d'année, quand tu dois avancer à la fois sur les partiels et sur les projets ça devient vite hard.

C'est très bien comme méthode d'apprentissage, ca t'apprend à être autonome dans la recherche d'information ! et puis tu verras, lorsque t'arriveras dans la vie active où il n'y aura qu'une chose à faire à la fois (au moins au début) tu vas te sentir largement à l'aise ! ;)
Continue donc, ca ne te fera pas de mal, ca te prépare vraiment bien à la vraie vie !

Pour NCurses c'est une lib qui permet de faire du "texte-graphique", en gros "dessiner en mode texte"... Ce qu'il faut que tu fasses c'est faire ton TP soit directement à la fac soit t'assurer que chez toi t'utilises la même version de la librairie que t'auras à la fac, sinon tu risques d'avoir des mauvaises surprises à la fin... Enfin, c'est assez largement distribué avec tout linux qui se respecte... ;)

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

par Rockleader » 21 Avr 2014, 17:59

Ben dans ce cas là comment l'utiliser ?

Parce que mon linux il ne le trouve pas ... pourtant c'est bien présent dans le locate...
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 07:03

par ampholyte » 21 Avr 2014, 19:07


Avatar de l’utilisateur
Zorro_X
Membre Naturel
Messages: 77
Enregistré le: 16 Avr 2012, 16:40

par Zorro_X » 22 Avr 2014, 10:11

Rockleader a écrit:Ben dans ce cas là comment l'utiliser ?

Parce que mon linux il ne le trouve pas ... pourtant c'est bien présent dans le locate...

Cherche si tu n'as pas un pack de développement pour NCurses, car t'as souvent la librairie pour permettre aux applications qui l'utilisent de fonctionner mais sans les includes, libs de debug, etc... genre NCurses dev ou sources, ou même includes...

Iroh
Membre Relatif
Messages: 374
Enregistré le: 14 Oct 2008, 19:24

par Iroh » 22 Avr 2014, 10:21

Rockleader a écrit:Ben dans ce cas là comment l'utiliser ?

Parce que mon linux il ne le trouve pas ... pourtant c'est bien présent dans le locate...


Salut, entre
Code: Tout sélectionner
pkg-config --libs ncurses

Si tu n'as rien, cherche le paquet à installer:
Code: Tout sélectionner
apt-cache search libncurses*-dev


Tu devrais donner le la distrib linux que tu utilises comme le nom des paquets peuvent différer selon chacune.

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 22 Avr 2014, 11:20

l y a plusieurs versions de ncurses ou quoi ?

Ben oui yen a plusieurs, mais toi tu as installée que la 5.9 (et c'est très bien)
(/lib/x86_64-linux-gnu/libncurses.so.5.9)
dans le dossier lib tu as .so.5 qui pointe vers .so.5.9
si jamais tu installes .so.5.10, ben .so.5 pointera sur .so.5.10 à la place... et ton système sera à jour (vu que tu pointes juste dans tes appli vers .so.5)

Enfin bref, à priori il est déjà pré installé donc je n'ai qu'à inclure ncurses.h pour utiliser nan ?

correct.
Mais tu vois bien que tu n'as aucun dossier include en faisant ton locate

Une idée ? J'aimerais bien commencer à faire des tests mais pour le moment c’est impossible tant que je ne peux pas compiler curses ;)

on compile pas curses, c'est déjà compilé par les dépots, toi ce que t'arrives pas à faire c'est compiler >avec< ncurses.

Pour trouver le pack de dev, tu as comme suggéré par Iroh et Zorrow la ligne de commande.
Tu peux également utiliser synaptic qui est une interface graphique pour les rechercher
Code: Tout sélectionner
 sudo apt-get install synaptic

(il me semble que Rockleader utilise ubuntu)

edit:
je highlight
Ce qu'il faut que tu fasses c'est faire ton TP soit directement à la fac soit t'assurer que chez toi t'utilises la même version de la librairie que t'auras à la fac, sinon tu risques d'avoir des mauvaises surprises à la fin...

parce que oui, ca peut faire de mauvaises surprises :we:
ils sont tellement croutons dans ces facs/écoles
la vie est une fête :)

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

par Rockleader » 01 Mai 2014, 12:54

J'ai finalement pu installer ncurses correctement, merci pour tous vos conseils.


J’aurais une question par rapport à ce paragraphe.

2.2.2. The mysterious refresh()

The next line printw prints the string "Hello World !!!" on to the screen. This function is analogous to normal printf in all respects except that it prints the data on a window called stdscr at the current (y,x) co-ordinates. Since our present co-ordinates are at 0,0 the string is printed at the left hand corner of the window.

This brings us to that mysterious refresh(). Well, when we called printw the data is actually written to an imaginary window, which is not updated on the screen yet. The job of printw is to update a few flags and data structures and write the data to a buffer corresponding to stdscr. In order to show it on the screen, we need to call refresh() and tell the curses system to dump the contents on the screen.

The philosophy behind all this is to allow the programmer to do multiple updates on the imaginary screen or windows and do a refresh once all his screen update is done. refresh() checks the window and updates only the portion which has been changed. This improves performance and offers greater flexibility too. But, it is sometimes frustrating to beginners. A common mistake committed by beginners is to forget to call refresh() after they did some update through printw() class of functions. I still forget to add it sometimes :-)


Les fameuses coordonnées (y,x) correspondent à quel type de données ? Pixel ?

Par ailleurs, l'exemple ne montre que l'utilisation de printw sans rien ce qui équivaut à y=0 et x=0 si je me plante pas.

Mais si j'avais voulu écrire à un autre endroit y=5 et x=3 par exemple. Comment aurais je appelé le printw ?

Question analogue ?
Est ce que cela fonctionne aussi hors ncurses avec un printf ?



Merci à vous !





EDIT:


Par ailleurs, je crois que j'ai fais le tour dd'à peu près toutes les fonctions et je ne crois pas avoir vu quelque chose permettant de "tracer" un cadre de style plateau de jeu, et encore moins de pouvoir interpréter les positions à l'intérieur de ce cadre.


D'où ma question du coup, malgré l'utilisation de ncurses est il impossible de gérer un plateau dde jeu contenant des cases tout en faisant des traitements sur ces cases.

(Autrement qu'en dessinant vulgairement le plateau avec des I et des _ )
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 01 Mai 2014, 20:55

slt,

je me rappèle plus l'API de ncurses, mais en gros, tu as une fonction pour écrire un caractère à la position du curseur (x,y) ou x et y sont des entiers.

Il faut bien voir que chaque case c'est un caractère, avec une couleur de caractère et éventuellement un background-color pour ta case.
(bref les classiques fg et bg quoi)

Donc non tu vas dessiner un vulgaire plateau avec des I et des _ (à la différence que tu pourras mettre des couleurs (ce que tu pouvais déjà en rajoutant des trucs styl \[\machin et tout, mais là t'as une API)) et tu pourras choisir à quelle position écrire sans avoir à te préoccuper de remplir les caractères vide par...des espaces.
la vie est une fête :)

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite