Forum d'entraide à la création de jeux d'aventure
 
PortailPortail  AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment :
Cdiscount : -30€ dès 300€ ...
Voir le deal

 

 Pendu

Aller en bas 
2 participants
AuteurMessage
Shai-la
Ouvrière en Chef de la Grande Tasse Bleue
Ouvrière en Chef de la Grande Tasse Bleue
Shai-la


Nombre de messages : 6018

Age : 45

Localisation : Montpellier

Date d'inscription : 17/04/2006


Pendu Empty
MessageSujet: Pendu   Pendu EmptyMar 30 Avr 2013 - 21:22

Bonjour bonjour sourire
j'aurais un petit challenge à vous proposer !
Qui serait capable de pondre un petit module de jeu de Pendu?
J'ai tenté mais à part faire une liste de mots découpés un par un, lettre par lettre, ce qui va être hyper fastidieux... je vois pas comment confus
Merci d'avance pour vos suggestions !
Revenir en haut Aller en bas
http://marionpoinsot.fr/video
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
Kitai


Nombre de messages : 2907

Date d'inscription : 01/08/2006


Pendu Empty
MessageSujet: Re: Pendu   Pendu EmptyMer 1 Mai 2013 - 9:53

Aucun besoin de découper les mots "un par un" ou "lettre par lettre".
Tout d'abord rappelle-toi qu'on a une belle base de données avec LibreMotus, on peut donc la réutiliser sans soucis.

Enfin, pour scruter les lettres du mot et les afficher au fur et à mesure, il y a tout un tas de fonctions sur les chaînes de caractères qui te seront d'une grande aide (en attendant la sortie de mon module pour utiliser les expressions régulières sous AGS, info exclusive et tellement attendue !).

Pour t'avancer un peu, je te propose le code suivant (non testé et qui ne fait pas tout, mais l'idée est là) :
Code:
// AFFICHAGE représentera les tirets et les lettres trouvées
String MotATrouver, Affichage;

// La fonction pour initialiser un nouveau mot
function NouveauMot(String mot) {
  // Si le mot est vide, on arrête là
  if (String.IsNullOrEmpty(mot)) return;
  // Si le mot contient un '_', on arrête là
  if (mot.IndexOf("_") > -1) return;
  // MOT est le nouveau mot à trouver
  MotATrouver = mot;
  // On va mettre des tirets séparés par un espace
  // pour chaque lettre de AFFICHAGE
  Affichage = "";
  int i = 0;
  while (i < mot.Length) {
    Affichage = Affichage.AppendChar(mot.Chars[i]);
    Affichage = Affichage.AppendChar(' ');
    i++;
  }
  // On a ajouté un espace de trop à la fin : on tronque
  Affichage = Affichage.Truncate(Affichage.Length-1);
  /*
    Ici d'autres commandes éventuelles
    (comme la gestion des GUI par exemple)
  */
}

// Cette fonction est à appeler à chaque tentative
// avec le texte entré par l'utilisateur (une lettre ou un mot entier)
bool Tentative(String texte) {
  // Si on passe du texte vide, on arrête là
  if (String.IsNullOrEmpty(texte)) return false;
  // Si la longueur vaut 1, on a affaire à une simple lettre
  if (texte.Length == 1) {
    // Si la lettre ne se trouve pas dans le mot, FALSE
    if (MotATrouver.IndexOf(texte) == -1) return false;
    // Sinon, on va afficher toutes les lettres correspondantes
    int n = 0;
    while (n < MotATrouver.Length) {
      // Si la n-ième lettre de MotATrouver correspond, on l'affiche
      if (MotATrouver.Chars[n] == texte.Chars[0])
        Affichage = Affichage.ReplaceCharAt(n*2, texte.Chars[0]);
      n++;
    }
    // L'utilisateur a trouvé une lettre : TRUE
    return true;
  }
  // Sinon, si + d'une lettre, on a un mot
  else {
    // Si ça ne correspond pas, faux
    if (texte != MotATrouver) return false;
    // Sinon, on affiche chaque lettre
    int n = 0;
    while (n < MotATrouver.Length) {
      Affichage = Affichage.ReplaceCharAt(n*2, MotATrouver.Chars[n]);
      n++;
    }
    // Et on retourne TRUE
    return true;
  }
}
Maintenant, il ne te reste plus qu'à gérer le nombre de tentatives, l'affichage du pendu, etc.
Tu pourras par exemple utiliser Tentative dans un onActivate concernant une zone de saisie nommée txtPendu :
Code:
// Si l'utilisateur n'a pas trouvé
if (!Tentative(txtPendu.Text)) {
  /*
    - On affiche un trait en plus au pendu
    - On incrémente une variable correspondant au nombre de tentatives
    - Si le nombre de tentatives est épuisé, GAME OVER (on peut éventuellement
      relancer un nouveau mot avec NouveauMot)
  */
}
// S'il a trouvé
else {
  // On affiche la progression dans une zone de texte nommée lblPendu par exemple
  lblPendu.Text = Affichage;
  // S'il ne reste aucun tirets, l'utilisateur a gagné
  if (Affichage.IndexOf("_") == -1) /* VICTOIRE ! */
}
Bien sûr tout ça reste à tester et implémenter, mais je pense qu'on est sur la bonne voie clin d'oeil
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Shai-la
Ouvrière en Chef de la Grande Tasse Bleue
Ouvrière en Chef de la Grande Tasse Bleue
Shai-la


Nombre de messages : 6018

Age : 45

Localisation : Montpellier

Date d'inscription : 17/04/2006


Pendu Empty
MessageSujet: Re: Pendu   Pendu EmptyMer 1 Mai 2013 - 16:41

Merci beaucoup, je vais tester ça sourire
Revenir en haut Aller en bas
http://marionpoinsot.fr/video
Shai-la
Ouvrière en Chef de la Grande Tasse Bleue
Ouvrière en Chef de la Grande Tasse Bleue
Shai-la


Nombre de messages : 6018

Age : 45

Localisation : Montpellier

Date d'inscription : 17/04/2006


Pendu Empty
MessageSujet: Re: Pendu   Pendu EmptyMer 1 Mai 2013 - 17:35

C'est trop complexe pour moi triste
Revenir en haut Aller en bas
http://marionpoinsot.fr/video
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
Kitai


Nombre de messages : 2907

Date d'inscription : 01/08/2006


Pendu Empty
MessageSujet: Re: Pendu   Pendu EmptyMer 1 Mai 2013 - 18:49

Tu peux toujours poser des questions sur les étapes qui te bloquent le plus !
J'avoue ne pas avoir testé le code donc il peut fort bien présenter de sérieux problèmes, mea culpa. Mais du reste, si la partie avec les fonctions est bonne, l'implémentation ne devrait pas poser trop de soucis.

Je regarde ça plus tard sous AGS et je te fournis quelque chose de plus propre.
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
Shai-la
Ouvrière en Chef de la Grande Tasse Bleue
Ouvrière en Chef de la Grande Tasse Bleue
Shai-la


Nombre de messages : 6018

Age : 45

Localisation : Montpellier

Date d'inscription : 17/04/2006


Pendu Empty
MessageSujet: Re: Pendu   Pendu EmptyMer 1 Mai 2013 - 21:05

Non mais je me suis débrouillée finalement sourire merci sourire
Revenir en haut Aller en bas
http://marionpoinsot.fr/video
Contenu sponsorisé





Pendu Empty
MessageSujet: Re: Pendu   Pendu Empty

Revenir en haut Aller en bas
 
Pendu
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Adventure Games Studio fr :: CREATION DE JEUX :: La Boîte à Souhaits-
Sauter vers: