Programmation/ Langage C
Résolu/Fermé
Dark-Beta69
Messages postés
71
Date d'inscription
dimanche 5 juillet 2009
Statut
Membre
Dernière intervention
14 octobre 2009
-
8 août 2009 à 23:14
Richard.M Messages postés 105 Date d'inscription dimanche 28 juin 2009 Statut Membre Dernière intervention 28 mars 2014 - 10 août 2009 à 00:31
Richard.M Messages postés 105 Date d'inscription dimanche 28 juin 2009 Statut Membre Dernière intervention 28 mars 2014 - 10 août 2009 à 00:31
A voir également:
- Programmation/ Langage C
- Langage ascii - Guide
- Langage binaire - Guide
- Application de programmation - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage pascal - Télécharger - Édition & Programmation
9 réponses
Richard.M
Messages postés
105
Date d'inscription
dimanche 28 juin 2009
Statut
Membre
Dernière intervention
28 mars 2014
8
9 août 2009 à 01:14
9 août 2009 à 01:14
salut
alors en ce qui concerne la couleur tu doit utilser system("color 80") : ici j'ai mis 80 pour du gris ou du noir je sais plus, mais si tu veu savoir quel couleur iil faut utiliser il te suffit d'aller dans paint dans l'outil pou les couleurs. tu regles ta couleur a partir des couleurs primaires RGB (exemple R=0, V=0, B=0, la tu aura du noir).
en ce qui concerne le'instruction pour recommencer une partie ben je te propose de faire:
printf(" Voulez vous faire une autre partie?\n");
printf("oui(1) ou non(2)");
scanf("%d", &reponse);
fflush(stdin);
if(reponse==OUI)
{
system("cls"); // cette commande sert a effacer la console => pas de traces de la partie précedentes.
main();
}
le principe ici est de revenir au main de ton programme donc de le recommencer.. si il ya des trucs pas clair dis le moi
a+
alors en ce qui concerne la couleur tu doit utilser system("color 80") : ici j'ai mis 80 pour du gris ou du noir je sais plus, mais si tu veu savoir quel couleur iil faut utiliser il te suffit d'aller dans paint dans l'outil pou les couleurs. tu regles ta couleur a partir des couleurs primaires RGB (exemple R=0, V=0, B=0, la tu aura du noir).
en ce qui concerne le'instruction pour recommencer une partie ben je te propose de faire:
printf(" Voulez vous faire une autre partie?\n");
printf("oui(1) ou non(2)");
scanf("%d", &reponse);
fflush(stdin);
if(reponse==OUI)
{
system("cls"); // cette commande sert a effacer la console => pas de traces de la partie précedentes.
main();
}
le principe ici est de revenir au main de ton programme donc de le recommencer.. si il ya des trucs pas clair dis le moi
a+
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
9 août 2009 à 14:32
9 août 2009 à 14:32
Salut,
Les booléens n'existent qu'en norme C99. Il faut inclure le header stdbool.h et le type est _Bool.
En C89, il est d'usage de se créer son type avec des directives préprocesseurs #define.
Mais bon, on peut très bien utiliser des int pour stocker un 0 ou un 1. Ce ne sont pas des booléens mais des int. Mais à moins de faire de l'embarqué cela n'est absolument pas gênant.
Pour ce qui est de la génération d'un pseudo-aléatoire, il se fait dans tous les cas entre 0 et RAND_MAX.
C'est à toi de faire une règle de trois (et non un modulo sous peine de ne pas avoir une répartition équiprobable) suivi d'une translation (soustraction ou addition) pour obtenir un nombre dans l'ensemble désiré.
Les booléens n'existent qu'en norme C99. Il faut inclure le header stdbool.h et le type est _Bool.
En C89, il est d'usage de se créer son type avec des directives préprocesseurs #define.
Mais bon, on peut très bien utiliser des int pour stocker un 0 ou un 1. Ce ne sont pas des booléens mais des int. Mais à moins de faire de l'embarqué cela n'est absolument pas gênant.
Pour ce qui est de la génération d'un pseudo-aléatoire, il se fait dans tous les cas entre 0 et RAND_MAX.
C'est à toi de faire une règle de trois (et non un modulo sous peine de ne pas avoir une répartition équiprobable) suivi d'une translation (soustraction ou addition) pour obtenir un nombre dans l'ensemble désiré.
Richard.M
Messages postés
105
Date d'inscription
dimanche 28 juin 2009
Statut
Membre
Dernière intervention
28 mars 2014
8
9 août 2009 à 17:41
9 août 2009 à 17:41
Re.
Dis moi fiddy j'ai cru comprendre que la biliothèque conio.h n'existait pas sous linux. A la place il ya un truc comme "[n]curses, si tu as une doc ou un lien qui puisse me fournir les fonctions de cette bibliothèque, cela me servirait beaucoup. A+
Dis moi fiddy j'ai cru comprendre que la biliothèque conio.h n'existait pas sous linux. A la place il ya un truc comme "[n]curses, si tu as une doc ou un lien qui puisse me fournir les fonctions de cette bibliothèque, cela me servirait beaucoup. A+
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
>
Richard.M
Messages postés
105
Date d'inscription
dimanche 28 juin 2009
Statut
Membre
Dernière intervention
28 mars 2014
9 août 2009 à 18:12
9 août 2009 à 18:12
Oui conio.h n'existe pas sur linux.
Tu peux utiliser ncurses sous Linux : http://www.faqs.org/docs/Linux-HOWTO/NCURSES-Programming-HOWTO.html
Cdlt
Tu peux utiliser ncurses sous Linux : http://www.faqs.org/docs/Linux-HOWTO/NCURSES-Programming-HOWTO.html
Cdlt
Richard.M
Messages postés
105
Date d'inscription
dimanche 28 juin 2009
Statut
Membre
Dernière intervention
28 mars 2014
8
>
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
10 août 2009 à 00:31
10 août 2009 à 00:31
merci ;)
Richard.M
Messages postés
105
Date d'inscription
dimanche 28 juin 2009
Statut
Membre
Dernière intervention
28 mars 2014
8
9 août 2009 à 01:21
9 août 2009 à 01:21
re :)
en ce qui concerne le fait que la console lise l'instruction return 0 et que la fenètre se ferme :
system("pause"); juste avant le return 0;
sa va stopper la lecture du programme ( sans effacer la console ne t'inquiete pas) et sa va le reprendre quand tu appuira sur une touche.
Voila pour le ptit plus lol :)
en ce qui concerne le fait que la console lise l'instruction return 0 et que la fenètre se ferme :
system("pause"); juste avant le return 0;
sa va stopper la lecture du programme ( sans effacer la console ne t'inquiete pas) et sa va le reprendre quand tu appuira sur une touche.
Voila pour le ptit plus lol :)
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
9 août 2009 à 01:28
9 août 2009 à 01:28
Salut,
Alors le mieux pour les couleurs est l'utilisation des API : https://openclassrooms.com/fr/courses Evite d'utiliser la solution avec system, ce n'est vraiment pas top.
Pour reprendre ton programme, tout ceci est question de boucle. Tu peux faire un do while (rep=='o'); en demandant juste avant le while à l'utilisateur de rentrer o/n s'il souhaite continuer ou non.
Pour le raccourci, tu fais clique droit sur ton programme : envoyer vers, bureau (créer un raccourci).
cdlt
Alors le mieux pour les couleurs est l'utilisation des API : https://openclassrooms.com/fr/courses Evite d'utiliser la solution avec system, ce n'est vraiment pas top.
Pour reprendre ton programme, tout ceci est question de boucle. Tu peux faire un do while (rep=='o'); en demandant juste avant le while à l'utilisateur de rentrer o/n s'il souhaite continuer ou non.
Pour le raccourci, tu fais clique droit sur ton programme : envoyer vers, bureau (créer un raccourci).
cdlt
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Richard.M
Messages postés
105
Date d'inscription
dimanche 28 juin 2009
Statut
Membre
Dernière intervention
28 mars 2014
8
9 août 2009 à 01:33
9 août 2009 à 01:33
tu va croire que je suis collant :)
PS : Quelqu'un peut m'expliquer ces instructions :
srand (time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
en faite c'est une fonction hasard. la premiere ligne sert a initialiser le timer. et la seconde utilise la notion de modulo qui serait un peu compliquer à t'expliquer dans ce message ( à cette heure ci lol), mais je te file un exemple pour comprendre.
Je veux avoir un nombre au hasard entre 0 et 1 :
int i;
srand(time(0));
i=rand()%2+0;
return i;
ici "i" sera soit égal à 0 soit à 1, et c'est indépendant de l'utilisateur.
A+
PS : Quelqu'un peut m'expliquer ces instructions :
srand (time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
en faite c'est une fonction hasard. la premiere ligne sert a initialiser le timer. et la seconde utilise la notion de modulo qui serait un peu compliquer à t'expliquer dans ce message ( à cette heure ci lol), mais je te file un exemple pour comprendre.
Je veux avoir un nombre au hasard entre 0 et 1 :
int i;
srand(time(0));
i=rand()%2+0;
return i;
ici "i" sera soit égal à 0 soit à 1, et c'est indépendant de l'utilisateur.
A+
Dark-Beta69
Messages postés
71
Date d'inscription
dimanche 5 juillet 2009
Statut
Membre
Dernière intervention
14 octobre 2009
1
9 août 2009 à 12:56
9 août 2009 à 12:56
Bonjour,
Merci beaucoup à tout les deux.
Alors hier soir avant d'aller dodo j'ai fait ça :
Et j'ai modifié tout les return o; en return rejouer(); du coup la fênetre ne se ferme plus et pas besoin du system("pause")
:)
Mais l'instruction "system("cls");" m'intéresse je vais la mettre.
Aussi j'aimerais savoir si c'est possible de changer de couleur a chaque niveau : du genre a chaque fin de partie avant mon return rejouer(); je met system("cls");
puis une instruction pour changer la couleur ?
Merci a vous deux pour les explications/conseil et merci fiddy pour le lien !
Petite question :
printf(" Voulez vous faire une autre partie?\n");
printf("oui(1) ou non(2)");
scanf("%d", &reponse);
c'est ca une conditions Booléen ? parceque j'ai pas bien compris ce chapitre :s
Et j'aimerais rajouter une mode "spéciale" a mon code source, sa je sais comment faire mais j'aimerais qu'il génère un nombre mystère entre -500 et 500, c'est possible ?
Merci.
Merci beaucoup à tout les deux.
Alors hier soir avant d'aller dodo j'ai fait ça :
int rejouer() { int choix = 0; while (choix < 1 || choix > 2) { printf("\t\t\t\t === REJOUER ? === \n"); printf("1 : OUI\t\t\t\t\t\t\t\t\t2: NON\n"); printf("Votre choix ? "); scanf("%d", &choix); if (choix == 1) { return main();} if (choix == 2) { return 0;} } return choix; }
Et j'ai modifié tout les return o; en return rejouer(); du coup la fênetre ne se ferme plus et pas besoin du system("pause")
:)
Mais l'instruction "system("cls");" m'intéresse je vais la mettre.
Aussi j'aimerais savoir si c'est possible de changer de couleur a chaque niveau : du genre a chaque fin de partie avant mon return rejouer(); je met system("cls");
puis une instruction pour changer la couleur ?
Merci a vous deux pour les explications/conseil et merci fiddy pour le lien !
Petite question :
printf(" Voulez vous faire une autre partie?\n");
printf("oui(1) ou non(2)");
scanf("%d", &reponse);
c'est ca une conditions Booléen ? parceque j'ai pas bien compris ce chapitre :s
Et j'aimerais rajouter une mode "spéciale" a mon code source, sa je sais comment faire mais j'aimerais qu'il génère un nombre mystère entre -500 et 500, c'est possible ?
Merci.
Richard.M
Messages postés
105
Date d'inscription
dimanche 28 juin 2009
Statut
Membre
Dernière intervention
28 mars 2014
8
9 août 2009 à 14:17
9 août 2009 à 14:17
salut.
alors non ce ne sont pas des booléens , les booléens sont des variables auxquels tu affectes une valeurs.
Mais cela dit tu peux en utiliser :
int oui= 1, non = 2; ( ici ce sont des booléens)
En ce qui concerne ton probleme de couleur je ne sais pas si tu as choisi la méthode de fiddy ou la mienne. Donc peut-être que ma solution ne te conviendrait pas.
Quant au nombre mystère entre -500 et 500 je ne sais pas si il est possible de sortir un nombre négatif dsl :s
Pour finir, j'aimerais savoir si tu n'as pas un " warning" avec ton return rejouer(), j'ai bien compris ce que tu voulais faire mais si tu regarde le prototype de ta fonction, ( int rejouer() ) tu doit normalement renvoyer un entier, mais là tu ne renvoie rien.
A+
alors non ce ne sont pas des booléens , les booléens sont des variables auxquels tu affectes une valeurs.
Mais cela dit tu peux en utiliser :
int oui= 1, non = 2; ( ici ce sont des booléens)
En ce qui concerne ton probleme de couleur je ne sais pas si tu as choisi la méthode de fiddy ou la mienne. Donc peut-être que ma solution ne te conviendrait pas.
Quant au nombre mystère entre -500 et 500 je ne sais pas si il est possible de sortir un nombre négatif dsl :s
Pour finir, j'aimerais savoir si tu n'as pas un " warning" avec ton return rejouer(), j'ai bien compris ce que tu voulais faire mais si tu regarde le prototype de ta fonction, ( int rejouer() ) tu doit normalement renvoyer un entier, mais là tu ne renvoie rien.
A+
Richard.M
Messages postés
105
Date d'inscription
dimanche 28 juin 2009
Statut
Membre
Dernière intervention
28 mars 2014
8
9 août 2009 à 14:43
9 août 2009 à 14:43
sans vouloir t'offenser fiddy, Dark-Beta69 vient de commencer le C :) il faut pas trop l'embrouiller lol.
A+
A+
Dark-Beta69
Messages postés
71
Date d'inscription
dimanche 5 juillet 2009
Statut
Membre
Dernière intervention
14 octobre 2009
1
9 août 2009 à 16:14
9 août 2009 à 16:14
D'accord j'ai pas tout compris mais j'irais chercher sur "google" donc sa ira, merci beaucoup !
Maintenant je voudrais savoir s'il est possible de modifier l'icône du raccourcis sur le bureau ?
et de changer le titre de la fenêtre du jeu, car la j'ai C:/Documents.../bureau/...
Merci encore.
Dark-Beta69
Maintenant je voudrais savoir s'il est possible de modifier l'icône du raccourcis sur le bureau ?
et de changer le titre de la fenêtre du jeu, car la j'ai C:/Documents.../bureau/...
Merci encore.
Dark-Beta69
9 août 2009 à 01:23
Attention :
fflush(stdin);
Ca ne s'utilise pas, cela a un comportement indéterminé.
9 août 2009 à 01:37
A+
PS : cela à un comportement indéterminé s'il est mal utilisé :)
9 août 2009 à 01:42
PS : cela à un comportement indéterminé s'il est mal utilisé :)
Non ! Cela a un comportement indéterminé dès que tu l'utilises. fflush ne pas pas être utilisé sur une entrée. Juste sur les sorties.
9 août 2009 à 01:53
Moi je l'avais utiliser a cause du scanf parceque j'ai créer un petit morpion (juste a la console) et si j'avais pas mis le fflush, je me retrouvais à devoir taper 2 fois les coordonnées de mon point pour qu'il puisse se placer.
On m'a expliqué pourquoi et on m'a dit comment ! lol
A+
9 août 2009 à 02:06
Cela t'évitera que le '\n' provoqué lors de ta validation soit pris en compte dans la prochaine lecture clavier.