c#hangman-如何向每一行显示在正确位置尝试过的字母

c#hangman-如何向每一行显示在正确位置尝试过的字母,c#,list,C#,List,下图描述了到目前为止我得到的输出。。 它漏掉了被试过的旧字母。 因此,如果一个字母猜对了,那么所有字母(包括旧的猜字母)都需要显示在点上…… 现在它只显示给定的字母,而不显示旧字母 // //这是我到目前为止得到的代码 class Program { static void Main(string[] args) { Program myProgam = new Program(); myProgam.St

下图描述了到目前为止我得到的输出。。 它漏掉了被试过的旧字母。 因此,如果一个字母猜对了,那么所有字母(包括旧的猜字母)都需要显示在点上……
现在它只显示给定的字母,而不显示旧字母

//

//这是我到目前为止得到的代码

class Program
    {
        static void Main(string[] args)
        {
            Program myProgam = new Program();
            myProgam.Start();
            Console.ReadKey();


        }
        void Start()
        {
            GalgjeSpel galgje = new GalgjeSpel(); 
            galgje.Init("eetlepel");

            List<string> woordenlijst = WoordenLijst();
           string nieuwwoord= SelecteerWoord(woordenlijst);
            galgje.Init(nieuwwoord);

           ToonWoord(nieuwwoord);Speelgalgje(galgje);

            //Console.WriteLine("Het geheime woord is: " + galgje.geheimWoord);
            //Console.WriteLine("Het geraden woord is: " + galgje.geradenWoord);
        }
        List <string> WoordenLijst()
        {
            List<string> Woordenlijst = new List<string>();
            Woordenlijst.Add("slapen");
            Woordenlijst.Add("poepen");
            Woordenlijst.Add("eten");
            Woordenlijst.Add("vakantie");
            Woordenlijst.Add("reizen");
            return Woordenlijst;
        }
       string SelecteerWoord(List<string> woorden)
        {
            GalgjeSpel gaglje = new GalgjeSpel();

            Random rnd = new Random();
           int randomwoord = rnd.Next(1, 5);
            string nieuwwoord = woorden[randomwoord];
          gaglje.geheimWoord = nieuwwoord;

            return nieuwwoord;
        }

        void ToonWoord(string woord)
        {
            GalgjeSpel galgje = new GalgjeSpel();

            Console.Write($"het geheime woord is: ");
            char[] letter = woord.ToArray();
            for (int i = 0; i< woord.Length; i++)
            {
                galgje.geheimWoord += letter[i];
                Console.Write($"{letter[i]} ");
            }
            Console.WriteLine(); 

            Console.Write("het geraden woord is: ");
            for (int i = 0; i < woord.Length; i++)
            {
                galgje.geradenWoord += (". ");
                Console.Write(". ");
            }
            Console.WriteLine();

        }
        void ToonLetter(List<char> letters)
        {
            int i = 0;
            Console.Write("Ingevoerde letters zijn: ");
            foreach (var element in letters)
            {

                Console.Write($"{letters[i]} ");
                i += 1;
            }
            Console.WriteLine();

        }
        char LeesLetter(List<char> geheimeletters)
        {

            char letter;
            List<char> ingevoerdeletter = new List<char>();
            string tletter ="";

            do
            {  Console.WriteLine();
                Console.Write("voer een letter in: ");
                 letter = char.Parse(Console.ReadLine());

                tletter =tletter + " "+  letter ;
                return letter;

            } while (geheimeletters.Contains(letter));
                {

                }

        }
        bool Speelgalgje(GalgjeSpel galgje)
        {
            //char lijst van ingevoerde letters
            List<char> ingevoerdeLetters = new List<char>();

            // char lijst van geheime letters
            List<char> geheimeletters = new List<char>();

            // zet elke geheime letter in een char array
            char[]geheimewoord = galgje.geheimWoord.ToArray();

            // voeg elke char letter toe aan lijst van geheime letters
            for (int i=0; i<geheimewoord.Length; i++)
            {
                geheimeletters.Add(geheimewoord[i]); 

                if (galgje.geradenWoord == galgje.geheimWoord)
                 {
                      return true;
                 }
                 else
                  {  char letter = LeesLetter(geheimeletters);
                      ingevoerdeLetters.Add(letter);
                      ToonLetter(ingevoerdeLetters);
                      galgje.Raadletter(letter);

                     }

            }return false;





        }
    }


////

namespace galgje2
{
    class GalgjeSpel
    {       

         public string geheimWoord;
        public string geradenWoord;
        public void Init(string geheimwoord)
        {
          this.geheimWoord = geheimwoord;
           this.geradenWoord="";
            char[] letter = new char [geheimwoord.Length];
            for (int i =0; i< letter.Length; i++)
            {
                this.geradenWoord += ".";

            }
        }
        public bool Raadletter(char letter)
        {

            char[] secretword = geradenWoord.ToArray();

            if (geheimWoord.Contains(letter))
            {
                for(int i=0; i<geheimWoord.Length; i++)
                {
                    if (geheimWoord[i]==letter)
                    {
                        secretword[i] = letter;
                        Console.Write($"{letter} ");  
                    }
                    else
                    {
                        Console.Write($". ");
                    }

                }
                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("------------------------------");
                Console.ResetColor();
                Console.WriteLine();


            }
            else
            {
                Console.WriteLine("letter does not match secretword");
            }


           return false;
        }
    }
}
类程序
{
静态void Main(字符串[]参数)
{
程序myProgam=新程序();
myprogram.Start();
Console.ReadKey();
}
void Start()
{
GalgjeSpel galgje=新的GalgjeSpel();
galgje.Init(“eetlepel”);
List woordenlijst=woordenlijst();
字符串nieuwwoord=SelecteerWoord(woordenlijst);
高尔杰·尼特(nieuwwoord);
图恩沃德(尼乌沃德);斯佩尔加尔吉(加尔吉);
//Console.WriteLine(“Het geheime woord是:“+galgje.geheimWoord”);
//Console.WriteLine(“Het geraden woord是:“+galgje.geradenWoord”);
}
列表WoordenLijst()
{
List Woordenlijst=新列表();
Woordenlijst.添加(“slapen”);
Woordenlijst.添加(“poepen”);
Woordenlijst.添加(“eten”);
添加(“vakantie”);
Woordenlijst.添加(“reizen”);
返回Woordenlijst;
}
字符串选择器Woord(列表woorden)
{
GalgjeSpel gaglje=新的GalgjeSpel();
随机rnd=新随机();
int randomwoord=rnd.Next(1,5);
字符串nieuwwoord=woorden[randomwoord];
gaglje.geheimWoord=nieuwwoord;
返回nieuwwoord;
}
void ToonWoord(字符串woord)
{
GalgjeSpel galgje=新的GalgjeSpel();
控制台。写($“het geheime woord是:”);
char[]字母=woord.ToArray();
对于(int i=0;i对于(int i=0;i而言,问题在于Raadletter函数中只显示控制台中的当前字母


if (geheimWoord[i]==letter)
 {
    secretword[i] = letter; // you store the letter in the char array
   //you should print the array
    Console.Write($"{letter} ");  
  }
   else
   {
     Console.Write($". ");
   }
如果您想打印所有猜测字母,您的代码应该具有类似的内容:

public bool Raadletter(char letter)
        {

            char[] secretword = geradenWoord.ToArray();

            if (geheimWoord.Contains(letter))
            {
                geradenWoord = ""; //clear the sring only if contain letter
                for (int i = 0; i < geheimWoord.Length; i++)
                {
                    if (geheimWoord[i] == letter)
                    {
                        secretword[i] = letter; //store good letter to array
                    }


                }
                foreach (var c in secretword)
                {
                    geradenWoord += c;// save the word
                    // print guesses letters
                        Console.Write($"{c} ");
                }
                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("------------------------------");
                Console.ResetColor();
                Console.WriteLine();


            }
            else
            {
                Console.WriteLine("letter does not match secretword");
            }


            return false;
        }
public bool Raadletter(字符字母)
{
char[]secretword=geradenWoord.ToArray();
if(Geheimwood.包含(字母))
{
geradenWoord=“;//仅当包含字母时才清除sring
for(int i=0;i
问题在于Raadletter函数中,您在控制台中仅显示当前字母


if (geheimWoord[i]==letter)
 {
    secretword[i] = letter; // you store the letter in the char array
   //you should print the array
    Console.Write($"{letter} ");  
  }
   else
   {
     Console.Write($". ");
   }
如果您想打印所有猜测字母,您的代码应该具有类似的内容:

public bool Raadletter(char letter)
        {

            char[] secretword = geradenWoord.ToArray();

            if (geheimWoord.Contains(letter))
            {
                geradenWoord = ""; //clear the sring only if contain letter
                for (int i = 0; i < geheimWoord.Length; i++)
                {
                    if (geheimWoord[i] == letter)
                    {
                        secretword[i] = letter; //store good letter to array
                    }


                }
                foreach (var c in secretword)
                {
                    geradenWoord += c;// save the word
                    // print guesses letters
                        Console.Write($"{c} ");
                }
                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("------------------------------");
                Console.ResetColor();
                Console.WriteLine();


            }
            else
            {
                Console.WriteLine("letter does not match secretword");
            }


            return false;
        }
public bool Raadletter(字符字母)
{
char[]secretword=geradenWoord.ToArray();
if(Geheimwood.包含(字母))
{
geradenWoord=“;//仅当包含字母时才清除sring
for(int i=0;i