FF Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 ifstream fichier_in; fichier_in.open ("test.txt"); en fait, ces 2 lignes me conviennent à merveille. si quelqu'un veut s'éclater au jeu "le compte est bon", ya aucun problème. Amusez vous bien. Et le fclose Citer
Bengijol Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 Et le fclose il veut pas te croire, quel rebelle Citer
GandhiWallemme Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 Et le fclose il veut pas te croire, quel rebelle Ca marchait très bien :ninja: Il me reste un dernier point où je galère, mais j'vais pas vous demander pourquoi on ne peut pas strcpy mon fichier_in dans une chaine de caractères, hein. Citer
FF Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 Ca marchait très bien Il me reste un dernier point où je galère, mais j'vais pas vous demander pourquoi on ne peut pas strcpy mon fichier_in dans une chaine de caractères, hein. Il faut copier le contenu du fichier dans ta chaine de caractères, et pas le fichier directement dans la chaine. Donc fopen, puis fread, et le contenu du buffer dans ta chaine... Et puis fclose Citer
Bengijol Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 Il me reste un dernier point où je galère, mais j'vais pas vous demander pourquoi on ne peut pas strcpy mon fichier_in dans une chaine de caractères, hein. ouais c'est u peu vieux pour moi et FF a très bien répondu je pense il est costaud Citer
GandhiWallemme Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 Et puis fclose Effectivement, le compilateur n'a pas apprécié le non closage.. Bon eh bien je galère avec les fichiers, je verrai ça avec le prof'. Merci quand même Tcho Citer
Bengijol Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 Cependant il faut préférer la fonction strncpy à la focntion strcpy qui présente une énorme faille de sécurité du fait qu'aucune taille de chaine d'entrée n'est spécifiée. Ainsi un petit malin pour passer dans ton code un chaine trop grande permettant un accès à des données qui n'auraient pas du l'être grace à un magnifique Overflow. La fonction strncpy prend en argument une taille pour la chaine de caractère limtant l'effet précédent. il y a tout de meme une technique mais bon je ne vais pas m'étendre la dessus, ça fait mal à la tête de la plupart des gens. En même temps on est sur le LTDTLMSB :geek: Citer
GandhiWallemme Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 Cependant il faut préférer la fonction strncpy à la focntion strcpy qui présente une énorme faille de sécurité du fait qu'aucune taille de chaine d'entrée n'est spécifiée. Ainsi un petit malin pour passer dans ton code un chaine trop grande permettant un accès à des données qui n'auraient pas du l'être grace à un magnifique Overflow. La fonction strncpy prend en argument une taille pour la chaine de caractère limtant l'effet précédent. il y a tout de meme une technique mais bon je ne vais pas m'étendre la dessus, ça fait mal à la tête de la plupart des gens. En même temps on est sur le LTDTLMSB :geek: Ouais, enfin vient fouiner dans mon jeu le compte est bon si t'as que ça à branler (et si je le fous sur le net), ça me dérangera pas. Citer
Bengijol Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 Ouais, enfin vient fouiner dans mon jeu le compte est bon si t'as que ça à branler (et si je le fous sur le net), ça me dérangera pas. ça peut servir on sait jamais et il faudrait que tu le mette sur le net et que l'on ait besoin de passer une variable en GET ou par formulaire donc c pas immédiat comme faille non plus mais bon mon coté geek a repris le dessus un court instant. Citer
LaurentRomejko Posté(e) 6 mai 2007 Posté(e) 6 mai 2007 Faudrait qu'ils vous apprenent comment bien indenter votre code, parceque là Donc bah lis un document qui parle du style K&R et je songerais à lire la première ligne de ton code . Je sais pas torp ce que ça fait mais 6/7 boucles embriquées ça doit faire du n^10 en complexité ça au moins Citer
Mister Yellow Posté(e) 6 mai 2007 Posté(e) 6 mai 2007 (modifié) a voté T'as le droit de vote? Modifié 6 mai 2007 par Mister Yellow Citer
Platoche Posté(e) 6 mai 2007 Posté(e) 6 mai 2007 T'as le droit de vote? oué ça veut dire quoi cette question ? Citer
GandhiWallemme Posté(e) 6 mai 2007 Posté(e) 6 mai 2007 Faudrait qu'ils vous apprenent comment bien indenter votre code, parceque là Donc bah lis un document qui parle du style K&R et je songerais à lire la première ligne de ton code . Je sais pas torp ce que ça fait mais 6/7 boucles embriquées ça doit faire du n^10 en complexité ça au moins Je sais, faut que je refasse cette partie du programme, ça a une sale gueule. J'my penche taleur. Sinon, le reste n'est pas bordélique, si? K&R? Citer
Bengijol Posté(e) 6 mai 2007 Posté(e) 6 mai 2007 (modifié) Je sais, faut que je refasse cette partie du programme, ça a une sale gueule. J'my penche taleur. Sinon, le reste n'est pas bordélique, si? K&R? The C Programming Language (sometimes referred to as K&R) is a well-known computer science book written by Brian Kernighan and Dennis Ritchie. K&R pour le 2 inventeurs du C, Kernighan & Ritchie. K&R style Modifié 6 mai 2007 par BenBDF Citer
GandhiWallemme Posté(e) 6 mai 2007 Posté(e) 6 mai 2007 The C Programming Language (sometimes referred to as K&R) is a well-known computer science book written by Brian Kernighan and Dennis Ritchie. K&R pour le 2 inventeurs du C, Kernighan & Ritchie. K&R style okaych Au passage, si quelqu'un a pris le codage du jeu le compte est bon, autant qu'il le remplace par ma dernière version: //************************ Application console (C++)**************************** //****************************************************************************** // PROGRAMME : Le compte est bon // DATE : 02/05/07 // OBJET : ou pas // LIMITES : ou pas // AUTEUR(S) : bluejark //****************************************************************************** /* si vous construisez un projet et si vous utilisez une des bibliothèques de iutupadte (cf. aide en ligne) : -1- décommentez la ligne suivante et cliquez sur [projet|options du projet|parametre|editeur de lieus|ajouter fichier] puis rechercher la(les) bibliothèque(s) *.a sous ...\dev-cpp\lib\iut_tlse3 -2- dans le paragraphe suivant décommentez le(s) fichiers(s) d'entête *.h ou *.hpp qui permet(tent) d'inclure les déclaration des fonctions utilisées */ //#define _IUT_TLSE3_PROJ /* Ce paragraphe permet de déclarer les fonctions des fichiers suivants : conio-bis - gestion de fenêtres dos, de couleurs, lecture sans écho... dos-bis - gestion du temps, attentes... frame - tracé de cadres, grilles, traits, flèches... transcode - affichage avec accents ou sans accent sous dos ou windows keys-fr - liste des clés sous forme de noms symboliques iutupdate - inclut tous les fichiers précédents en une seule fois (cf le fichier de présentation iutupdate.pdf dans l'aide en ligne) => pour utiliser les bibliothèques "décommenter" les lignes correspondantes */ //#include <iut_tlse3\iutupdate.hpp> //inclut en une fois tous les fichiers //#include <iut_tlse3\frame.hpp> //inclut en outre conio-bis //#include <iut_tlse3\conio-bis.h> //#include <iut_tlse3\dos-bis.h> //#include <iut_tlse3\transcode.hpp> //#include <iut_tlse3\keys-fr.h> #include <iostream> // flux d'entrée sortie #include <iomanip> // manipulateurs de flux #include <cstdlib> // bibliothèque c standart #include <stdlib.h> #include <string.h> #include <stdio.h> #include <fstream> #include <iut_tlse3\iutupdate.hpp> using namespace std; // permet d'utiliser les flux cin et cout //*************************** Déclaration globale ****************************** /***** constante *****/ /******* type ********/ typedef int tabobjets [15]; typedef char regles[500]; /***** fonction ******/ void choix_menu (int &choixmenu) { //Décla //Actions do{cout<<"1.Regles"<<endl<<"2.Le but defini"<<endl<<"3.Objets definis"<<endl<<"4.Random"<<endl; cin>>choixmenu; if(choixmenu!=1 && choixmenu!=2 && choixmenu!=3 && choixmenu!=4) cout<<endl<<"Mauvais choix."<<endl<<endl; }while(choixmenu!=1 && choixmenu!=2 && choixmenu!=3 && choixmenu!=4); } void choisirbut (int &lebut) { //Décla //Actions do{ cout<<"Donnez moi un chiffre entre 100 et 999"<<endl; cin>>lebut; } while (lebut<100 or lebut>999); } void choisirobjets (tabobjets &objets) { //Décla int i,j; int etat; int a; //Actions for (i=0;i<6;i++) objets[i]=0; for (i=0;i<6;i++) { do { etat=0; cout<<endl<<"Donnez votre chiffre n°"<<i+1<<" :"<<endl; cin>>objets[i]; if (objets[i]==1 or objets[i]==2 or objets[i]==3 or objets[i]==4 or objets[i]==5 or objets[i]==6 or objets[i]==7 or objets[i]==8 or objets[i]==9 or objets[i]==10 or objets[i]==25 or objets[i]==50 or objets[i]==75 or objets[i]==100) {for (j=0;j<i;j++) if (objets[i]!=objets[j]) { etat=etat+0; } else etat=1; } else etat=1; } while (etat==1); } } void creerbut (tabobjets objects, int &lebut) { //Décla int i,j,k,inter; tabobjets objets; //Actions srand(time(NULL)); do { for (k=0;k<6;k++) {objets[k]=objects[k];} i=rand()%6; lebut=objets[i]; for (j=i;j<5;j++) objets[j]=objets[j+1]; i=rand()%5; lebut=lebut*objets[i]; for (j=i;j<4;j++) objets[j]=objets[j+1]; i=rand()%4; inter=objets[i]; for (j=i;j<3;j++) objets[j]=objets[j+1]; i=rand()%3; lebut=lebut+objets[i]*inter; for(j=i;j<2;j++) objets[j]=objets[j+1]; i=rand()%2; lebut=lebut*objets[i]; for(j=i;j<1;j++) objets[j]=objets[j+1]; lebut=lebut+objets[0]; } while (lebut<100 || lebut>999); } void creerobjets (tabobjets &objets, int &possibilite, int lebut) { //Décla tabobjets liste={1,2,3,4,5,6,7,8,9,10,25,50,75,100}; int i,j,k,l,m,n,a,op; //Actions possibilite=0; for (i=0;i<14;i++) {for(j=0;j<14;j++) {for(k=0;k<14;k++) {for(l=0;l<14;l++) {for(m=0;m<14;m++) {for(n=0;n<14;n++) {if (i!=j && i!=k && i!=l && i!=m && i!=n && j!=k && j!=l && j!=m && j!=n && k!=l && k!=m && k!=n && l!=m && l!=n && m!=n) {srand(time(NULL)); op=rand()%4; if(op==0) {a=(liste[i]*liste[j])/(liste[k]+liste[l])-liste[m]+liste[n];} else if(op==1) {a=(liste[i]+liste[j])/(liste[k]*liste[l])+liste[m]-liste[n];} else if (op==2) {a=liste[i]*(liste[j]+(liste[k]*liste[l]))-(liste[m]*liste[n]);} else {a=(liste[i]-liste[j])*(liste[k]+liste[l])+liste[m]+liste[n];} if(a==lebut) {possibilite=possibilite+1; if (possibilite==1) {objets[0]=liste[i]; objets[1]=liste[j]; objets[2]=liste[k]; objets[3]=liste[l]; objets[4]=liste[m]; objets[5]=liste[n]; } } } } } } } } } } void genererbut(int &lebut) { //Décla //Actions srand(time(NULL)); lebut=rand()%900+100; } void affichageobjetsbut (tabobjets &objets, int attempt) { //Décla int i; //Actions cout<<endl<<"Vos 6 nombres sont: "<<endl; for (i=0;i<6;i++) {cout<<objets[i]<<" "; } cout<<endl<<"Le but est: "; cout<<attempt<<endl; } void traitement (tabobjets objects, int &lebut, int butreel) { //Décla char op; int choix,a,b,i,test,valobjet; tabobjets objets; int testm,testd; //Actions do{ for(i=0;i<6;i++) {objets[i]=objects[i];} testm=0; testd=0; cout<<endl<<"Faites votre premier calcul (validez à chaque étape)"<<endl; do{ test=0; cin>>a; for(i=0;i<6;i++) {if (a==objets[i]) {test=test+1; valobjet=i;} else test=test; } if (test==0) {cout<<"Nombre 1 invalide. Rechoisissez-en un:"<<endl;} else {for(i=valobjet;i<5;i++) {objets[i]=objets[i+1];} } } while (test==0); do{ cin>>op; if (op!='+' && op!='-' && op!='/' && op!='*') cout<<"Mauvais choix d'opérateur. Choix: +,-,*,/"<<endl; } while (op!='+' && op!='-' && op!='/' && op!='*'); do{ test=0; cin>>b; for(i=0;i<5;i++) {if (b==objets[i]) {test=test+1; valobjet=i;} else test=test; } if (test==0) {cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;} else {for(i=valobjet;i<4;i++) {objets[i]=objets[i+1];} } } while (test==0); if(op=='*') {objets[4]=a*b; } else if(op=='/') objets[4]=a/b; else if (op=='+') objets[4]=a+b; else if (op=='-') objets[4]=a-b; if (objets[4]<0) {testm=1;} if(op=='/') { if((objets[4]*b)!=a)//Regarde si a/b == (a/b)*b, pour voir s'il n'y a pas troncature {testd=1;} } }while(testm==1 || testd==1); for(i=0;i<5;i++) cout<<endl<<"Ojbet"<<i+1<<":"<<objets[i]; cout<<endl<<"Le but est: "<<butreel; do{ cout<<endl<<"Voulez vous arrêter ici?0/1: "; cin>>choix; } while(choix!=0 && choix!=1); if (choix==1) { do{ test=0; cout<<endl<<"Entrez votre nombre"; cin>>lebut; for(i=0;i<5;i++) {if(lebut==objets[i]) {test=test+1;} else test=test; } }while(test==0); cout<<endl<<"Votre total est "<<lebut; } else { do{ testm=0; testd=0; cout<<endl<<"Faites votre deuxième calcul (validez à chaque étape)"<<endl; do{ test=0; cin>>a; for(i=0;i<5;i++) {if (a==objets[i]) {test=test+1; valobjet=i;} else test=test; } if (test==0) {cout<<"Nombre 1 invalide. Rechoisissez-en un:"<<endl;} else {for(i=valobjet;i<4;i++) {objets[i]=objets[i+1];} } } while (test==0); do{ cin>>op; if (op!='+' && op!='-' && op!='/' && op!='*') cout<<"Mauvais choix d'opérateur. Choix: +,-,*,/"<<endl; } while (op!='+' && op!='-' && op!='/' && op!='*'); do{ test=0; cin>>b; for(i=0;i<4;i++) {if (b==objets[i]) {test=test+1; valobjet=i;} else test=test; } if (test==0) {cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;} else {for(i=valobjet;i<3;i++) {objets[i]=objets[i+1];} } } while (test==0); if(op=='*') {objets[3]=a*b; } else if(op=='/') objets[3]=a/b; else if (op=='+') objets[3]=a+b; else if (op=='-') objets[3]=a-b; if (objets[3]<0) {testm=1;} if(op=='/') { if((objets[3]*b)!=a)//Regarde si a/b == (a/b)*b, pour voir s'il n'y a pas troncature {testd=1;} } }while(testm==1 || testd==1); for(i=0;i<4;i++) cout<<endl<<"Ojbet"<<i+1<<":"<<objets[i]; cout<<endl<<"Le but est: "<<butreel; do{ cout<<endl<<"Voulez vous arrêter ici?0/1: "; cin>>choix; }while(choix!=0 && choix!=1); if (choix==1) { do{ test=0; cout<<endl<<"Entrez votre nombre"; cin>>lebut; for(i=0;i<4;i++) {if(lebut==objets[i]) {test=test+1;} else test=test; } }while(test==0); cout<<endl<<"Votre total est "<<lebut<<endl; } else { do{ testm=0; testd=0; cout<<endl<<"Faites votre troisième calcul (validez à chaque étape)"<<endl; do{ test=0; cin>>a; for(i=0;i<4;i++) {if (a==objets[i]) {test=test+1; valobjet=i;} else test=test; } if (test==0) {cout<<"Nombre 1 invalide. Rechoisissez-en un:"<<endl;} else {for(i=valobjet;i<3;i++) {objets[i]=objets[i+1];} } } while (test==0); do{ cin>>op; if (op!='+' && op!='-' && op!='/' && op!='*') cout<<"Mauvais choix d'opérateur. Choix: +,-,*,/"<<endl; } while (op!='+' && op!='-' && op!='/' && op!='*'); do{ test=0; cin>>b; for(i=0;i<3;i++) {if (b==objets[i]) {test=test+1; valobjet=i;} else test=test; } if (test==0) {cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;} else {for(i=valobjet;i<2;i++) {objets[i]=objets[i+1];} } } while (test==0); if(op=='*') {objets[2]=a*b; } else if(op=='/') objets[2]=a/b; else if (op=='+') objets[2]=a+b; else if (op=='-') objets[2]=a-b; if (objets[2]<0) {testm=1;} if(op=='/') { if((objets[2]*b)!=a)//Regarde si a/b == (a/b)*b, pour voir s'il n'y a pas troncature {testd=1;} } }while(testm==1 || testd==1); for(i=0;i<3;i++) cout<<endl<<"Ojbet"<<i+1<<":"<<objets[i]; cout<<endl<<"Le but est: "<<butreel; do{ cout<<endl<<"Voulez vous arrêter ici?0/1: "; cin>>choix; }while(choix!=0 && choix!=1); if (choix==1) { do{ test=0; cout<<endl<<"Entrez votre nombre"; cin>>lebut; for(i=0;i<3;i++) {if(lebut==objets[i]) {test=test+1;} else test=test; } }while(test==0); cout<<endl<<"Votre total est "<<lebut<<endl; } else { do{ testm=0; testd=0; cout<<endl<<"Faites votre quatrième calcul (validez à chaque étape)"<<endl; do{ test=0; cin>>a; for(i=0;i<3;i++) {if (a==objets[i]) {test=test+1; valobjet=i;} else test=test; } if (test==0) {cout<<"Nombre 1 invalide. Rechoisissez-en un:"<<endl;} else {for(i=valobjet;i<2;i++) {objets[i]=objets[i+1];} } } while (test==0); do{ cin>>op; if (op!='+' && op!='-' && op!='/' && op!='*') cout<<"Mauvais choix d'opérateur. Choix: +,-,*,/"<<endl; } while (op!='+' && op!='-' && op!='/' && op!='*'); do{ test=0; cin>>b; for(i=0;i<2;i++) {if (b==objets[i]) {test=test+1; valobjet=i;} else test=test; } if (test==0) {cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;} else {for(i=valobjet;i<1;i++) {objets[i]=objets[i+1];} } } while (test==0); if(op=='*') {objets[1]=a*b; } else if(op=='/') objets[1]=a/b; else if (op=='+') objets[1]=a+b; else if (op=='-') objets[1]=a-b; if (objets[1]<0) {testm=1;} if(op=='/') { if((objets[1]*b)!=a)//Regarde si a/b == (a/b)*b, pour voir s'il n'y a pas troncature {testd=1;} } }while(testm==1 || testd==1); for(i=0;i<2;i++) cout<<endl<<"Ojbet"<<i+1<<":"<<objets[i]; cout<<endl<<"Le but est: "<<butreel; do{ cout<<endl<<"Voulez vous arrêter ici?0/1: "; cin>>choix; }while(choix!=0 && choix!=1); if (choix==1) { do{ test=0; cout<<endl<<"Entrez votre nombre"; cin>>lebut; for(i=0;i<2;i++) {if(lebut==objets[i]) {test=test+1;} else test=test; } }while(test==0); cout<<endl<<"Votre total est "<<lebut<<endl; } else { do{ testm=0; testd=0; cout<<endl<<"Faites votre dernier calcul (validez a chaque etape)"<<endl; do{ test=0; cin>>a; for(i=0;i<2;i++) {if (a==objets[i]) {test=test+1; valobjet=i;} else test=test; } if (test==0) {cout<<"Nombre 1 invalide. Rechoisissez-en un:"<<endl;} else {for(i=valobjet;i<1;i++) {objets[i]=objets[i+1];} } } while (test==0); do{ cin>>op; if (op!='+' && op!='-' && op!='/' && op!='*') cout<<"Mauvais choix d'operateur. Choix: +,-,*,/"<<endl; } while (op!='+' && op!='-' && op!='/' && op!='*'); do{ test=0; cin>>b; for(i=0;i<1;i++) {if (b==objets[i]) {test=test+1;} else test=test; } if (test==0) {cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;} } while (test==0); if(op=='*') {objets[0]=a*b; } else if(op=='/') objets[0]=a/b; else if (op=='+') objets[0]=a+b; else if (op=='-') objets[0]=a-b; if (objets[0]<0) {testm=1;} if(op=='/') { if((objets[0]*b)!=a)//Regarde si a/b == (a/b)*b, pour voir s'il n'y a pas troncature {testd=1;} } }while(testm==1 || testd==1); lebut=objets[0]; cout<<endl<<"Votre total est: "<<lebut<<endl; } }}} } void comparaison (int lebutreel, int lebututil, int &redemarrer) { if (lebutreel==lebututil) {cout<<endl<<"Bravo! Le compte est bon."; redemarrer=0;} else {cout<<endl<<"Dommage.. le compte est mauvais. Aha.."; do{ cout<<endl<<"Voulez vous refaire ce calcul?0/1: "; cin>>redemarrer; }while(redemarrer!=0 && redemarrer!=1);} } //*************************** Programme principal ****************************** int main (int argc, char *argv[]) { // Declaration locale int choixdumenu, but, bututil; tabobjets six; int i; int reboot; int redemarrage; int victoire, defaite; int possible; // Action victoire=0; defaite=0; do { choix_menu(choixdumenu); if (choixdumenu==2) {do{ choisirbut(but); creerobjets(six,possible,but); if (possible==0) cout<<endl<<"Choisissez un autre but"<<endl; }while(possible==0); } else if (choixdumenu==3) {choisirobjets(six); creerbut(six,but); } else if (choixdumenu==4) {do{ genererbut(but); creerobjets(six,possible,but); }while(possible==0); } do{ affichageobjetsbut (six, but); cout<<"Proposez votre solution"; traitement(six,bututil,but); if (but==bututil) {victoire=victoire+1;} else {defaite=defaite+1;} cout<<endl<<"Victoire"; if(victoire>1) {cout<<"s: "<<victoire<<endl;} else {cout<<": "<<victoire<<endl;} cout<<"Defaite"; if(defaite>1) {cout<<"s: "<<defaite<<endl;} else {cout<<": "<<defaite<<endl;} comparaison (but,bututil,redemarrage); }while(redemarrage==1); do{ cout<<endl<<"Voulez vous recommencer un nouveau calcul?0/1: "; cin>>reboot; }while(reboot!=0 && reboot!=1); } while (reboot==1); // retour au sytème d'exploitattion cout << endl; system("pause"); return (0); } //**************************** Fin du programme ******************************* A également voté. Citer
LaurentRomejko Posté(e) 6 mai 2007 Posté(e) 6 mai 2007 (modifié) Ca m'étonnerait que ce soit du K&R ... void affichageObjetsBut (tabobjets &objets, int attempt){ //Décla int i; //Actions cout<<endl<<"Vos 6 nombres sont: "<<endl; for (i=0;i<6;i++){ cout<<objets[i]<<" "; } cout<<endl<<"Le but est: "; cout<<attempt<<endl; } // Fin AffichageObjetsBut Voilà un exemple. Modifié 6 mai 2007 par eiK Citer
GandhiWallemme Posté(e) 6 mai 2007 Posté(e) 6 mai 2007 Ca m'étonnerait que ce soit du K&R ... void AffichageObjetsBut (tabobjets &objets, int attempt){ //Décla int i; //Actions cout<<endl<<"Vos 6 nombres sont: "<<endl; for (i=0;i<6;i++){ cout<<objets[i]<<" "; } cout<<endl<<"Le but est: "; cout<<attempt<<endl; } // Fin AffichageObjetsBut Voilà un exemple. Ya quoi qui change, hormis le "// Fin AffichageObjetsBut" ? Citer
LaurentRomejko Posté(e) 6 mai 2007 Posté(e) 6 mai 2007 (modifié) Ya quoi qui change, hormis le "// Fin AffichageObjetsBut" ? L'indentation, plus lisible, plus standard on va dire. De même que les noms de méthodes on met des majuscules, ah merde au temps pour moi c'est une minuscule la première lettre des méthodes et majuscule pour les classes. Classe FenetreGraphique /** * Crée une JFrame contenant un menuBar, le panel PanelDessin et PanelIcones. * @author ------------------------ * @author ------------------------ * @version TP-6, 07/03/2007 */ package interfaceGraphique; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class FenetreGraphique { private JFrame frame; private PanelDessin panelDessin; private PanelIcones panelIcones; /** * Classe interne MonMenu qui contient les éléments du menu classe qui * hérite de JMenuBar. */ private class MonMenu extends JMenuBar { private static final long serialVersionUID = 1L; private JMenu menuEdition; private JMenuItem menuEltAligner; private JMenuItem menuEltSupprimer; MonMenu() { menuEdition = new JMenu("Edition"); menuEltAligner = new JMenuItem("Aligner"); menuEltSupprimer = new JMenuItem("Supprimer"); DelegueMenuItems deleguemenu = new DelegueMenuItems(); menuEltAligner.addActionListener(deleguemenu); menuEltSupprimer.addActionListener(deleguemenu); menuEdition.add(menuEltAligner); menuEdition.add(menuEltSupprimer); this.add(menuEdition); } /** * Classe interne DelegueMenuItems qui est le delégué des actions du * MenuBar classe qui implémente ActionListener. */ private class DelegueMenuItems implements ActionListener { public void actionPerformed(ActionEvent e) { Object source = e.getSource(); if (source == menuEltAligner) panelDessin.aligner(); else if (source == menuEltSupprimer) panelDessin.supprimer(); } } } /** * Constructeur de FenetreGraphique qui crée la JFrame. */ public FenetreGraphique() { frame = new JFrame("TP6 (P.-A. Bugnard, S. Castiel)"); frame.setSize(400, 100); panelIcones = new PanelIcones(); panelDessin = new PanelDessin(panelIcones); frame.setJMenuBar(new MonMenu()); // frame.getContentPane().setLayout(new GridLayout(1, 2)); // frame.getContentPane().add(panelIcones); // frame.getContentPane().add(panelDessin); frame.getContentPane().setLayout(new BorderLayout()); frame.getContentPane().add("West", panelIcones); frame.getContentPane().add("Center", panelDessin); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } public static void main(String args[]) { new FenetreGraphique(); } } C'est plus clair, plus lisible, plus facile à relire pour quelqu'un qui passe après. Bon avec Java ya la Javadoc qui va avec aussi... Modifié 6 mai 2007 par eiK Citer
FF Posté(e) 6 mai 2007 Posté(e) 6 mai 2007 okaych Au passage, si quelqu'un a pris le codage du jeu le compte est bon, autant qu'il le remplace par ma dernière version: Tu peux utiliser des "case of" à la place des "if, else if, else if" ... Citer
GandhiWallemme Posté(e) 6 mai 2007 Posté(e) 6 mai 2007 L'indentation, plus lisible, plus standard on va dire. De même que les noms de méthodes on met des majuscules, ah merde au temps pour moi c'est une minuscule la première lettre des méthodes et majuscule pour les classes. Classe FenetreGraphique .... } } C'est plus clair, plus lisible, plus facile à relire pour quelqu'un qui passe après. Bon avec Java ya la Javadoc qui va avec aussi... C'est un peu anarchique au niveau de mes "{..}", mais j'avoue que je suis peu ordonné, et j'ai eu la flemme de tout aligner.. Tu peux utiliser des "case of" à la place des "if, else if, else if" ... C'est clair.. un bon vieux switch case ferait moins moche. J'verrai ça avec le prof'. Citer
FF Posté(e) 6 mai 2007 Posté(e) 6 mai 2007 C'est un peu anarchique au niveau de mes "{..}", mais j'avoue que je suis peu ordonné, et j'ai eu la flemme de tout aligner.. Disons que c'est plus agréable pour celui qui passe derrière toi sur ton code... Citer
Messages recommandés
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.