Salut tout le monde!!
Je viens vous montrer mon Plus Ou Moins
On s'en fou un peu
C'est pas grave je vous le montre quand même XD
Qu'est ce qu'il a de plus??
#Toutes les options que Mathéo voulait nous infliger en plus. (= mode de diffculté, nouvelle partie, mode 2joueurs, et compteur de coups) ainsi que...
#Dans le mode 1Joueur: 1. Le mode solo, 2. Le mode Limited (une sorte de contre la montre)
#Dans le mode 2Joueurs:1. Mode Team, 2. Mode Versus.
Voilà Un petit merci à Pseadeau_nyme qui me la débugger à sa facon
printf("Explications:\nVous pouvez y jouer seul ou a 2. Le but est le meme: trouver le nombre mystere!\nMerci de ne pas mettre de donnee erronee puisque c'est votre PC, et non le mien qui plantera \nBon jeu!\n\n");
}
// Page de présentation
void Menu()
{
int NbrPlayer;
printf("Nombre de Players:\n (1) Un joueur\n (2) Deux joueurs\n Choix: ");
scanf("%d", &NbrPlayer);
switch(NbrPlayer)
{
case1: jouer(1);
break;
case2: jouer(2);
break;
default: printf("La prochaine fois, ecoute les consignes hein! \n");
printf("[Mode Limited], Choississez votre mode de jeu\n 1. Easy (20coups)\n 2. Normal (15coups)\n 3. Hard (10coups)\n Le tout compris entre 1 et 100\n");
scanf("%d", &modeLimited);
jouerSolo(2,modeLimited);
}
/////////////////// Choix Mode solo du mode 1 joueur
void jouerSolo(int jeu,int difficulte)
{
long nombreMystere, sonChoix;
long nombreEntre = 0, compteur = 0;
long max, min = 1;
int choixLimited, fini = 0;
srand(time(NULL));
if(jeu == 1)
{
max = calcMax(difficulte);
nombreMystere = (rand() % (max - min + 1)) + min;
printf("\nL'ordinateur a choisi un nombre. Essaye de le trouver! (nombre compri entre 1 et %ld)\n",max);
long joueur1, joueur2, nombreMystere, compteur = 0, sonChoix;
long min = 1, max = 1000;
if(jeu == 1)
{
system("CLS");
printf("\nLe Joueur 1 ecris un nombre, le Joueur 2 doit le trouver.\n Joueur1: Bonne chance ;D\nJoueur2: Pas de nombre negatif, dit entre quoi et quoi ce nombre se trouve (1<100, 1<1000,...)\n En attente du nombre: ");
printf("Rien parceque tu as tape un mauvais chiffre je quitte pour toi le logiciel :D");
system("PAUSE");
}
}
}
DeuxJoueurs.h
void jouerDuo(int jeu);
Et voilàààààààààààààààà
Vous avez tout les droits sur ces codes (modifications, améliorations, etc.). Le truc à pas faire c'est de seulement remplacer mon nick par le votre
J'aime pas trop la facon de decouper ton programme en fonctions, enfin plutot la facon de les appeler.
Pour moi le void main sert à structurer ton programme !
Ici tu t'en sers comme d'un lanceur et aprés il ne fait rien, alors que c'est lui qui devrait etre le "grand gourou" de ton programme.
Il devrait faire appel au menu, puis aprés gerer le resultat et choisir si il lance le un joueur ou le deux joueurs ... et aprés le 1 joueur et le 2 joueurs deviennent maitre à bord et à la fin rendent la main à main qui propose de recommencer une partie ou de quitter ...
J'ai la casi même façon de coder le main. Il vaut mieux éviter d'utiliser main comme 'code principal' parce qu'on ne peut pas faire appel à celui ci dans un autre void. (Enfin je crois , moi c'est pour ça que je le sépare distinctement des autres parties, il sert juste à annoncer le titre du programme.)
Edit: Le code est beaucoup plus compréhensible comme tu l'as découper, je dit que c'est un bon travail même si j'ai pas encore compiler le projet.
J'ai bien tout lu ton code et je l'ai essayé ensuite et il y a plusieurs bogues.
Au niveau du moment ou l'on gagne dans certains modes il ne nous montre pas le menu. Certains modes ne fonctionnent pas comme celui de Versus et le Team recommence tout seul sans menu comme le Limited je crois. Quelques \n sont manquant et des espaces aussi. Essaies le et tu verras.
Bonne chance dans ton autocorrection. Bonnes idées et bon travail mais comme il est long c'est normal qu'il y ait des fautes.
en fait pour le main, je l'ai lu et je me suis dit :
Ah son programme il lance l'affichage de l'avant propos, aprés il affiche un menu, et ah c'est fini ... bon doit falloir fouiller. Le main doit etre vu comme la colonne vertebrale du programme. Bien entendu le tiens fonctionne, mais si tu as besoin de te resservir du menu pour un autre programme, il faut tout reprogrammer ton menu. Une fonction doit faire quelque chose de précis, et le faire bien, la on part dans une fonction qui appele une sous fonction ... et ca pour un programme simple.
Je ne critique pas le programme qui a vu de nez doit marcher (je n'ai pas explorer le code à fond mais je te crois), juste la forme, ca pourra te servir pour la suite je pense. Ca implique une organisation et une reflexion un peu differente. Il faut essayer de structurer mais en gardant à l'esprit que dieu c'est le main, et que les autres font ce que main demande ! à la limite que tu integres l'avant propos au menu n'est pas choquand, mais que main ne soit meme pas le decideur de "multijoueur" ou "modo solo" ca me chaffouine, rien de grave juste la forme.
Sinon pour l'indentation je donnerais celle que j'utilise et que je trouve claire :
if(choix == 1) {
modeSolo(); } elseif(choix == 2) {
modeLimited(); } else { printf("\nSaisissez un nombre valide ou quittez"); return1; }
tout ca reste mon avis personnel que je partage mais n'est pas la seule ou la meilleure facon de faire, juste la mienne.
Globalement, je recommande celle de Linux, K&R avec pas de 8. Je déconseille fortement ton indentation sissere, parce que les éléments de même niveau (dans un même "bloc lexical") ne sont pas sur la même colonne. On a l'impression que le else if s'exécute dans le bloc du if, etc.
Pas une question de dépendance, question de niveau.
Chaque colonne doit correspondre à un niveau.
Or, le else if est exécuté au même niveau que le if, donc devrait être sur la même colonne.
Ce n'est pas histoire de tout mettre sur la droite histoire de dire qu'on indente, si l'indentation ne fait ressortir aucune structure, c'est inutile.
Dans ton code, à part compter les }, il n'y a aucune manière visuelle de savoir à quel niveau l'on se trouve. Avec une indentation normale, les alternatives sont au même niveau, tu sais tout de suite qu'à un même niveau tu auras les différentes alternatives du if, pas besoin d'aller chercher huit ou seize colonnes plus à droite, ce qui est fortement trompeur car tu risques de confondre les instructions à l'intérieur d'un bloc et celles qui font partie du bloc alternatif.
Juste pour ça, ton style embrouille plus qu'autre chose.
En fait moi je trouve ue c'est l'indentation de Dev-Cpp qui est archi nul. J'ai l'habitude de l'espace comme espace la valeur de Tab (je sais pas combien ça fait)
Tant que ça marche = A bannir
M'enfin visiblement, tu n'as aucune envie d'écouter les autres. Si tu ne codes que pour toi, il n'y a aucune raison pour que les autres t'aident ; sur ce, je te laisse dans ta bêtise...
Défendre un point de vu et critiquer un autre, il y a une marge non?? Je veux bien que vous me donner des astuces (comme a bannir ce style de pensé) ou que vous me dites là où ne ca va pas. Mais pas besoin de le faire sur ce ton, d'accord?
EDIT: Je ne parlais pas forcement de toi
Il y a eu un malentendu
J'écoute oui, j'apprends, mais ce code je l'ai fais à l'arrache très vite, et là j'ai pas trop envi de m'y replonger. Sinon éventuelles suggestions ou autre sont bienvenu
Pas une question de dépendance, question de niveau.
Chaque colonne doit correspondre à un niveau.
Or, le else if est exécuté au même niveau que le if, donc devrait être sur la même colonne.
Ce n'est pas histoire de tout mettre sur la droite histoire de dire qu'on indente, si l'indentation ne fait ressortir aucune structure, c'est inutile.
Dans ton code, à part compter les }, il n'y a aucune manière visuelle de savoir à quel niveau l'on se trouve. Avec une indentation normale, les alternatives sont au même niveau, tu sais tout de suite qu'à un même niveau tu auras les différentes alternatives du if, pas besoin d'aller chercher huit ou seize colonnes plus à droite, ce qui est fortement trompeur car tu risques de confondre les instructions à l'intérieur d'un bloc et celles qui font partie du bloc alternatif.
Juste pour ça, ton style embrouille plus qu'autre chose.
tout simplement pour moi c'est un reflexe de lecture je vois un else je sais qu'il est lié au if qui est decalé un cran à gauche ... ca me parait plus logique, le else vient suite au if, il est bien lié intrinséquement au if, et au moins on voit toutes les accolades (une accolade est seule sur une ligne) à la limite que tu indentes le else à hauteur du if pour moi c'est juste une habitude de lecture, mais dire que mettre l'accolade en fin de ligne améliore la lisibilité d'un code, j'ai toujours emis des gros doutes !
L'accolade "pendante" en fin de ligne c'est pour gagner en espace vertical principalement. De toute façon avec une technique à la K&R, c'est l'indentation qui fait la lisibilité du truc, pas les accolades.
Mais dans ton cas, je t'aurais prévenu : Ton truc est illisible. Personne ne va lire juste ton else et se dire : "tiens, l'alternative est un cran à gauche et un cran à droite". C'est de l'obfuscation hein :
if(...) { /* je suis ici, je veux voir les branches alternatives à celle-ci, je cherche des blocs décalés sur la droite : problème, il y a _plein_ de bloc décalés sur la droite, comment tu veux savoir lequel sans devoir tout lire... */
... { /* je tombe ici, rien à voir... */
... } } elseif(...) { }
Franchement, j'espère ne jamais à lire du code indenté comme ça mais si jamais, tu peux être sûr qu'il passe à indent(1) avant lecture.
Deux arguments beaucoup plus pratiques : Si personne ne peut lire ton code efficacement ou que personne n'a envie de le lire parce qu'il trouve ça illisible, ça ne sert à rien. Faut pas tout sacrifier pour les autres mais faut quand même utiliser quelque chose que la plupart des gens trouvent correct à lire.
Le deuxième c'est qu'avec ta méthode, en 10 lignes, je n'ai plus d'espace horizontal. Et oui, faut pas oublier les 80 colonnes.
Après il s'étonne qu'on lui dit qu'il ne veut pas apprendre: Ca fait deux fois que rz0 te répète quelques chose, et tu lui a répondu, je cite:
Citation : Sissere
Tant que sa marche et tant que je me comprends...
Citation : Sissere
ca va tous mes profs et tous mes collégues ont toujours réussis à lire mes codes
Je te signale que rz0 a une infinité ( ou presque ) d'années d'expérience en plus que toi, qu'il a déjà lu des milliers de code, certains extremmement complexes, si il te dit ca, c'est qu'il y a une raison tu ne crois pas ??
De plus, sachant que tu es limité à 80 colonnes, imagines que tu aies un boucle dans une condition dans une fonction quelconque ( = 24 colonnes déjà ), puis que tu aies un if, 3 elseif et un else, ( + 40 colonnes )
Il te reste donc 8 colonnes pour écrire ton code ??? Laisse moi rire, tu vas pas coder là-dedans quand même ??
je suis assez loin de manger 72 colonnes, aprés je concois que l'indentation ne plaise pas, mais qu'on vienne me dire qu'elle est inutilisable, je doute
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.