2017-06-29 4 views
0

だからこのハングマンゲームを作っています。私はC#を学びたいと思っていますが、今はSystem.Collection.Generic.List'1 [System.Char]で止まっています。私はつまり、私はあなたがしようとしていると思いますが、あなたは以下のコードにタイプミスがあると思う何イムやろうとしている機能のizpisに見て、リストnepravilneに間違った答えを保存することで、IGRAForeachは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

申し訳ありませんが、私はコードを理解できません(読むことはできません)。その意図はかなりわかりません。あなたは何をしているのかを理解するために名前を翻訳できますか?あなたのコードの各部分が何をしているのかについていくつかの説明を加えれば、助けを得るのが簡単です。 – SuperJMN

+1

私の言語で何かをしているときに私の悪い、よくレッスンは次の時間のためにコメントを投稿するために学んだ。時間ありがとうございました – renekton

答えて

2

代わりに、次のように

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

は次のようになります。変数要素ループ内なくnepravilneを印刷?

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

神はあなたに仲間を祝福します、ありがとう、とても愚かな気がします – renekton

+0

心配しないで!誰もが教えられる権利を持っています:) – SuperJMN

関連する問題