IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

triple condition jeu


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    février 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2023
    Messages : 3
    Points : 1
    Points
    1
    Par défaut triple condition jeu
    Bonjour a tous,

    Je suis nouveau sur ce forum, debutant en programmation et en C#.NET, language que j'affectionne particulierement. J'essaye de faire un jeu de lettres (pendu) en application console en C#. J'ai implementé 2 conditions avec 2 messagesbox correspondant (bravo, c'est la bonne lettre, desole ce n'est pas la bonne lettre). Je voudrais rajouter une troisieme condition pour dire ("lettre deja trouvee). sauf que je n'arrive pas a le faire sans annuler la precedente ou sans voir le message ("lettre deja trouvee") juste apres le message ("bravo c'est la bonne lettre). Voici le code:

    public void Play()
    {
    while (!isWin)
    {
    Console.WriteLine("ecrivez une lettre");
    var letter = char.ToUpper(Console.ReadKey(true).KeyChar);
    int letterIndex = WordToGuess.GetIndexOf(letter);
    Console.WriteLine();

    if (letterIndex != -1)
    {
    Console.WriteLine($"bravo, vous avez trouve la bonne lettre:{letter}");
    Guesses.Add(letter);
    }
    else if (Guesses == Guesses)
    {
    Console.WriteLine($"lettre {letter} deja trouvee!");
    }
    else
    {
    Console.WriteLine("ce n'est pas la bonne lettre, reessayez");
    Misses.Add(letter);
    }
    if (Misses.Count > 0)
    {
    Console.WriteLine($"erreurs ({Misses.Count}) : {string.Join(", ", Misses)}");

    }

    CurrentWordGuessed = PrintWordToGuess();

    if (CurrentWordGuessed.IndexOf('_') == -1)
    {
    isWin = true;
    Console.WriteLine("bravo vous avez gagne");
    // Console.ReadKey();
    }

    if (Misses.Count >= maxErrors)
    {
    Console.WriteLine("dommage vous avez perdu");
    // Console.ReadKey();
    break;
    }


    }

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    septembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : septembre 2010
    Messages : 354
    Points : 515
    Points
    515
    Par défaut
    Relis ta seconde condition (Guesses ==Guesses) et dis moi ce qui cloche: est-ce que tu testes la lettre saisie avec les lettres déjà utilisées ?
    D'ailleurs, est-ce que, dans tes règles, la lettre saisie par l'utilisateur doit être comptée comme erreur si elle a déjà été proposé par l'utilisateur et ne figure pas dans le mot? (exemple: si le mot ne contient pas de "a" et que l'utilisateur propose 5 fois "a", ça compte comme 5 erreurs ?)

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    février 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2023
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    en fait j'ai resolu le probleme, il fallait rajouter un if dans le premier if. c'est a dire si la premiere condition est satisfaite (lettre trouvee) je rajoute une condition disant que si la lettre ecrite par le joueur a deja ete trouvee alors j'affiche le message "lettre deja trouvee".

    J'avoue avoir des problemes d'algorithmie, c'est a dire que je sais grosso modo ce qu'il faut faire mais je ne sais pas comment y arriver, ou alors je sais ne sais pas ou je dois ecrire le code. c'est normal? c'est une question de pratique d'apres vous?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    septembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : septembre 2010
    Messages : 354
    Points : 515
    Points
    515
    Par défaut
    l'algorithmie tu n'as besoin que d'un crayon et d'un papier; c'est juste la recette (une suite d'instruction simple) pour obtenir le résultat souhaité et souvent juste de la logique.
    ça peut s'écrire en langage naturelle

    Exemple: algo pour se faire et manger une tartine de beurre:
    1-Je sors le beurre du frigo
    2-j'ouvre le beurre
    3-je sors un couteau
    4-Je sors une tranche de pain
    5-je fais griller mon pain
    6-tant que mon pain n'est pas grillé, j'attends
    7-je pose mon pain sur une assiette
    8-je prend mon couteau,
    9-je coupe du beurre
    10-j'étale le beurre sur le pain
    11-si ma tartine n'est pas totalement beurré, je recommence à l'étape 9
    12-sinon (donc ma tartine est totalement beurrée)
    13-je pose mon couteau
    14-je mange ma tartine
    15-j'ai fini ma tartine
    16-est-ce que j'en veux une autre?
    17-si oui, je recommence à l'étape 4 (PS: avant d'écrire cette ligne, ma 1ère étape était de sortir la tranche de pain, mais je l'ai déplacé en 4, car je ne vais pas sortir le beurre et le couteau alors qu'ils sont déjà sorties)
    18-sinon
    19-je referme le beurre
    20-je range le beurre dans le frigo
    21-je mets mon assiette et mon couteau dans l'évier
    22-je nettoie l'assiette et le couteau
    23-je range l'assiette et le couteau
    24-j'ai fini

    PS: j'ai fait un oubli dans cet algo
    je n'ai pas sortie l'assiette du placard au début

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    février 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2023
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    excellent exemple. Oui je pense que plus on pratique plus "ca rentre" et ca devient automatique avec le temps...

  6. #6
    Membre expérimenté
    Profil pro
    Développeur Web
    Inscrit en
    février 2008
    Messages
    1 499
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : février 2008
    Messages : 1 499
    Points : 1 431
    Points
    1 431
    Par défaut
    Bonjour,

    Il y a aussi une variante où il faut couper la tranche de pain.
    La pesanteur ... c'est quand tout s'écroule ?

  7. #7
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    février 2010
    Messages
    4 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2010
    Messages : 4 121
    Points : 7 364
    Points
    7 364
    Billets dans le blog
    1
    Par défaut
    En algorithmie, "je recommence à l'étape 4" pour moi c'est une hérésie.

    En effet, ça équivait à un bon vieux GOTO des familles, qui posse aussi bien problème dans les langages de programmation qu'en algorithmie : l'ensemble des variables telles qu'elles sont prévues à l'étape 4 on potentiellement été modifiées de manière incompatible avec l'état attendu à l'étape 4 lorsque je reviens depuis un GOTO.

    Par exemple, si à la ligne 17 j'ai plus de beurre, recommencer à l'étape 4 va faire entrer l'algo dans un état incohérent.

    Donc pour moi l'étape 4 doit être réécrite sous forme de boucle, et la ligne 17 faire simplement référence à la fin de la boucle.

    Plus clair, et pas de cas imprévus.
    C'est en tout cas comme ça que j'ai appros l'algo.
    On ne jouit bien que de ce qu’on partage.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    septembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : septembre 2010
    Messages : 354
    Points : 515
    Points
    515
    Par défaut
    Effectivement, je n'ai pas prévu tous les cas possibles et imaginables pour le stock de beurre et de tartines (on peut rajouter ces tests dans les 1ères étapes).
    Après, pour la notion de boucle, on peut les mettre à la fin ou au début, de même que les tests de sortie.
    Et la notion de boucle fait tout de même référence à du GOTO (si on "traduit" un for ou un while, on aura un GOTO sous-jacent; d'ailleurs, en assembleur, les boucles sont faites à cout de branchement (avec ou sans tests)).

    Et de toute façon, il y a plusieurs façons d'écrire un algorithme (dans mon cas, je n'avais pas vraiment défini le contexte complet)

  9. #9
    Membre expérimenté
    Profil pro
    Développeur Web
    Inscrit en
    février 2008
    Messages
    1 499
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : février 2008
    Messages : 1 499
    Points : 1 431
    Points
    1 431
    Par défaut
    Il y a moyen de se faire une belle usine à gaz étanche, avec ça, si ça tente quelqu'un.
    Mais si on veut être sérieux, le GOTO existe encore en C#, mais devrait en principe être réservé à de la gestion d'erreur.

    L'assembleur accorde une priorité absolue à un code compact, puisqu'il est fait pour ça. Mais avec ça je ne sais pas si il va y avoir beaucoup de développeurs qui vont sortir une application complète en une journée.
    Alors que le C# peut être un peu plus verbeux, mais on est supposé s'intéresser à être capable de sortir autant d'applications que possible dans un temps donné, vu que c'est ça qui fait rentrer des sous.
    La pesanteur ... c'est quand tout s'écroule ?

  10. #10
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    mars 2005
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2005
    Messages : 2 324
    Points : 4 453
    Points
    4 453
    Par défaut
    Citation Envoyé par Gluups Voir le message
    mais on est supposé s'intéresser à être capable de sortir autant d'applications que possible dans un temps donné, vu que c'est ça qui fait rentrer des sous.
    Sur le court terme, peut-être.
    Mais sur du long terme, tu passes plus de temps à essayer démêler le plat de spaghetti et tu perd de l'argent.

    Je ne comprend pas qu'en 2023, il y a encore des gens qui pensent qu'écrire du code vite est mieux que prendre le temps de l'écrire correctement.

  11. #11
    Membre expérimenté
    Profil pro
    Développeur Web
    Inscrit en
    février 2008
    Messages
    1 499
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : février 2008
    Messages : 1 499
    Points : 1 431
    Points
    1 431
    Par défaut
    Ça j'ai vu faire en effet (plus avec d'autres langages d'ailleurs).
    Mais pour la classification je la verrais bien en sens inverse.
    On fait du spaghetti quand on est pressé et qu'on ne veut pas se donner le temps de faire du travail propre.
    À terme, on va plutôt réfléchir à une solution qui s'applique à un maximum de cas, de façon qu'à l'arrivée d'un prochain client il n'y ait plus qu'à sortir le joujou de son tiroir, et lui passer les paramètres qui vont bien. Je me rappelle l'air réjoui du commercial qui a annoncé avoir vendu dix jours sur un projet, et constater qu'on le fait en un. Essaie avec du spaghetti, pour voir.
    Effectivement, si on veut faire tourner la boite il faut que les sous entrent, mais ça peut difficilement se faire avec du spaghetti, ou alors on le vendra au prix du spaghetti.

    ***
    Ah tiens en relisant deux heures après, je vois que nous avons dit la même chose.
    La pesanteur ... c'est quand tout s'écroule ?

Discussions similaires

  1. [XL-2007] Condition jeu d'icone avec formule
    Par Eskalibur dans le forum Excel
    Réponses: 7
    Dernier message: 24/05/2017, 12h14
  2. [Débutant] Problème de condition pour le Jeu OXO
    Par boligo2009 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 17/06/2016, 17h06
  3. [AC-2007] Macro-commande, triple conditions, mise à jour.
    Par charlhub dans le forum Access
    Réponses: 2
    Dernier message: 23/12/2011, 16h06
  4. [XL-2007] Triple condition "OU" ?
    Par byloute dans le forum Excel
    Réponses: 3
    Dernier message: 06/03/2010, 08h56
  5. Debugger starts autom. / jeu de propriétés = condition
    Par Chavadam dans le forum NetBeans
    Réponses: 0
    Dernier message: 03/04/2009, 10h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo