2017-06-29 3 views
0

Donc im en faisant ce jeu de pendu, comme Im essayant d'apprendre C# mais maintenant im coincé avec System.Collection.Generic.List'1 [System.Char]. Qu'est-ce que Im essayant de faire est de sauver de mauvaises réponses dans la liste nepravilne, regardez en fonctions izpis et igraForeach ne renverra pas les éléments de la liste de char

class Program 
{ 
    static private int _sccore; 

    static void Main(string[] args) 
    { 
     string beseda; 
     int dolzina; 
     bool play=true; 
     char input; 

     do 
     { 
      beseda = izberi_besedo(); 
      dolzina = beseda.Length; 
      igra(beseda, dolzina); 

      Console.WriteLine("Vnesite Y za nadaljevanje ali N za zakljucitev igre."); 
      input = char.Parse(Console.ReadLine()); 

      if (input.Equals('y')) 
      { 
       play = true; 
       Console.WriteLine("play {0}",play); 
      } 
      if (input.Equals('n')) 
      { 
       play = false; 
       Console.WriteLine("play {0}", play); 
      } 
     } while (play == true);       
    } 

    static private string izberi_besedo() { 
     string[] besede = { "voda", "ladija", "letalo", "motor", "klavir", "harmonika", "saksofon", "oklep", "penkalo", "tiskalnik", "miza", "copat", "krogla", "klobuk", "gumb", "harfa", "kontrabas", "mandarina", "les", "knjiga", "vlak", "vijak", "struna", "kozarec" }; 
     Random rnd = new Random(); 
     int stevilka = rnd.Next(0, 23); 
     string beseda = besede[stevilka]; 
     return beseda; 
    } 

    static private void igra (string beseda, int dolzina){ 

     int i, poizkusi = 0; 
     int pravilne = 0; 
     bool endloop = false; 
     char crka; 
     List<char> nepravilne = new List<char>();//declaring char list for wrong words 

     string[] odkrite = new string[dolzina]; 

     for(i=0; i<dolzina; i++) { odkrite[i] = "_"; } 

     do { 

      izpis(odkrite,nepravilne); //izpis - function which returns just text, we are inputing list nepravilne, which are wrong answers 
      vpis(out crka); 

      if (!(beseda.Contains(crka)))//if word doesen't contain letter 
      { 
       poizkusi++; 
       _sccore--; 
       nepravilne.Add(crka);//add that letter to list 
      } 


      for (i = 0; i<dolzina; i++) 
      { 
       if (crka.Equals(beseda[i])) 
       { 
        odkrite[i] = Convert.ToString(crka); 
        pravilne++; 
        _sccore++; 
       } 
      } 
      Console.Clear(); 
      if (pravilne >= dolzina || poizkusi >= 4)endloop = true; 
     } while (endloop==false); 
    } 

    static private void vpis(out char crka) 
    { 
     string vpis; 
     bool stevilka=false, status; 

     Console.WriteLine("\nVnesite crko za ugibanje besede"); 
     vpis = Console.ReadLine(); 

     stevilka = IsNumeric(vpis); 

     if (vpis.Length == 1 && stevilka==false) 
     { 
      crka = Convert.ToChar(vpis); 
     } 
     else 
     { 
      do 
      { 
       status = false; 
       if (vpis.Length!=1) Console.WriteLine("Vnesli ste prevec crk, poizkusite ponovno"); 
       if(stevilka==true) Console.WriteLine("Vnesli ste stevilko, poizkusite ponovno"); 
       vpis = Console.ReadLine(); 
       stevilka = IsNumeric(vpis); 
       if (vpis.Length == 1 && stevilka == false) 
       { 
        status = true; 
       } 
      } while (status==false); 

      crka = Convert.ToChar(vpis); 
     } 

    } 



    private static bool IsNumeric(string vpis) 
    { 
     int number; 
     return int.TryParse(vpis, out number); 
    } 

    private static void izpis(string[] odkrite, List<char> nepravilne) 
    { 
     Console.Write("Rezultat {0} | ", _sccore); 

     foreach (char element in nepravilne)//write out char elements which contain letter 
     { 
      Console.Write("{0} ", nepravilne); 
     } 

     Console.WriteLine(); 

     foreach (string element in odkrite) 
     { 
      Console.Write("{0} ", element); 
     } 
    } 

} 

}

+1

Désolé, mais je ne comprends pas (je ne peux pas lire) le code. Son intention est assez obscure. Pourriez-vous traduire les noms pour comprendre ce que vous faites? Si vous ajoutez des explications sur ce que fait chaque partie de votre code, il est plus facile d'obtenir de l'aide. – SuperJMN

+1

Ouais ma mauvaise, bien appris la prochaine fois pour poster des commentaires quand je fais quelque chose dans ma langue. Merci pour le temps – renekton

Répondre

2

Je pense que vous avez une faute de frappe dans le code suivant, par exemple, je pense que vous avez l'intention de imprimer l'élément variables dans la boucle et non nepravilne:

foreach (char element in nepravilne) 
{ 
    Console.Write("{0} ", nepravilne); 
} 

devrait être la suivante à la place?

foreach (char element in nepravilne) 
{ 
    Console.Write("{0} ", element); 
} 
+1

Que Dieu vous bénisse mec, merci beaucoup, je me sens si stupide maintenant – renekton

+0

Ne vous inquiétez pas! tout le monde a le droit d'être enseigné :) – SuperJMN