Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从字符数组中删除字符串_C#_String_Char - Fatal编程技术网

C# 从字符数组中删除字符串

C# 从字符数组中删除字符串,c#,string,char,C#,String,Char,我自己在C#做一个刽子手,到目前为止我做得很好。游戏可以运行,但是字母的组织取决于用户的输入,我想在每次找到单词并出现在文本中时,都从字符中删除“u” 这是它在游戏中的外观: 正如您所看到的,只有第一个字母的“u”不显示,而其他字母的“u”不显示。如果用户正确地给出了正确答案,但有些单词在许多情况下会粘在一起,并且不会停留在原来的位置上。这是我的游戏代码: string word; char letter_inserted; int correc

我自己在C#做一个刽子手,到目前为止我做得很好。游戏可以运行,但是字母的组织取决于用户的输入,我想在每次找到单词并出现在文本中时,都从字符中删除“u”

这是它在游戏中的外观:

正如您所看到的,只有第一个字母的“u”不显示,而其他字母的“u”不显示。如果用户正确地给出了正确答案,但有些单词在许多情况下会粘在一起,并且不会停留在原来的位置上。这是我的游戏代码:

        string word;
        char letter_inserted;
        int correctanswer, incorrectanswer;
        int counter = 0;
        correctanswer = 5;

        Console.WriteLine("welcome to the game of hangman");
        Console.Write("First player please introduce the secret word: ");
        word = Console.ReadLine();

        Char[] sentenceChar = word.ToCharArray();

        Console.WriteLine("Second player you can already play.");
        foreach( char letter in senteceChar)
        {
            Console.Write(" _ "); 
        }
        Console.WriteLine("\n");
        Console.WriteLine("{0} correcct answers are allowed. \n",correctanswers); //lives
        Char[] correctletter = new Char[5];
        for (int i = 1; i > 0; i++)
        {
            Console.Write("\n\nWhat letter you want to play : ");
            letter_inserted = Convert.ToChar(Console.ReadLine());

            for (int j = 0; j < sentenceChar.Length; j++)
            {
                if (sentenceChar[j] != letter_inserted)
                {
                    incorrectanswer = correctanswer - 1; //lives
                    Console.Write(correctletter[j] + " _ ");                      
                }

                if (sentenceChar[j] == letter_inserted)
                {
                    correctletter[j] += sentnceChar[j]; //inserting the correct word
                    Console.Write(correctletter[j]);
                }
            }
        }

        Console.ReadKey();
    }
字符串字;
插入字符字母_;
回答不正确,回答不正确;
int计数器=0;
正确答案=5;
Console.WriteLine(“欢迎来到刽子手游戏”);
控制台。写下(“第一位玩家请介绍密语:”);
word=Console.ReadLine();
Char[]sentenceChar=word.tocharray();
WriteLine(“第二个你已经可以玩的玩家”);
foreach(senteceChar中的字符)
{
控制台。写(“”);
}
Console.WriteLine(“\n”);
Console.WriteLine(“{0}允许正确答案。\n”,正确答案)//生活
Char[]correctletter=新字符[5];
对于(int i=1;i>0;i++)
{
控制台。写(“\n\n要播放的字母:”);
插入的字母=Convert.ToChar(Console.ReadLine());
for(int j=0;j
对此,我将使用不同的方法。创建两个阵列,一个用于解决方案:

var solution = new char[] {'H', 'A', 'N', 'G', 'M', 'A', 'N'};
一个用于当前提示。在开始时,您会将其初始化为:

var hint = new char[] {'_', '_', '_', '_', '_', '_', '_'};
猜测字母时,您可以循环使用
解决方案
,每次
解决方案[i]
等于猜测的字母时,请替换
提示中的相应索引

for(int i = 0; i < solution.Length; i++)
{
   if(solution[i] == guess)
      hint[i] = guess;
}
for(int i=0;i
在循环结束时,只需在屏幕上重新写入
hint
,屏幕将始终包含当前提示

您需要做的几件事:

  • 在循环中使用布尔值跟踪
    解决方案
    是否包含该字母的任何实例。如果不是,在循环结束时,你会减去一个生命。您也可以使用
    solution.Contains(guess)
    轻松完成此操作

  • 也许可以创建一个
    列表
    来跟踪已经尝试过的猜测。如果此列表已包含输入的字母,则可以显示“you haven guested that!”,否则将猜测添加到列表中


  • 这个答案是为了提示你朝着正确的方向前进,而不是一个完整的解决方案。然而,请随便问一下是否有任何部分不清楚。

    < P>我先从你的第一句开始——<代码>我自己在C中做一个刽子手,到目前为止我做得不错。实际上,你可以看到评论中有很多事情你想在这个精确的问题之前考虑,但是既然你问如何处理额外的问题。
    \uu
    我会跳到那一步

    以及一种方法:

    public static void printWord(char[] correctletters)
    {
      for (int j = 0; j < correctletters.Length; j++)
       {
        Console.Write(correctletters[j]);
       }
    }
    
    公共静态无效打印字(字符[]个字母)
    {
    对于(int j=0;j
    然后像这样重写代码:

    namespace Hangman
    {
        class Program
        {
        static void Main(string[] args)
        {
            string word;
            char letter_inserterd;
            int correctanswer = 5;
            int counter = 0;
    
            Console.WriteLine("welcome to the game of hangman");
            Console.Write("First player enter the secret word: ");
            word = Console.ReadLine();
    
            Char[] sentenceChar = word.ToCharArray();
    
            Console.WriteLine("Second player you can already play.");
            foreach( char letter in sentenceChar)
            {
                Console.Write(" _ "); 
            }
            Console.WriteLine("\n");
            Console.WriteLine("{0} correct answers are allowed. \n",correctanswer); //lives
            Char[] correctletter = new Char[sentenceChar.Length];
    
            for (int i = 0; i <sentenceChar.Length; i++)
            {
                correctletter[i] = '_'; 
            }
    
            while (correctanswer > 0)
            {
                Console.Write("\n\nWhat letter you want to play : ");
                letter_inserted = Convert.ToChar(Console.ReadLine());
                bool ContainsWord = false;
    
                for (int j = 0; j < sentenceChar.Length; j++)
                {
                    if (sentnceChar[j] == letter_inserted)
                    {
                        correctletter[j] = letter_inserted; //inserting the correct word
                        ContainsWord = true;
                    }
    
                }       
                if (!ContainsWord)
                {
                  correctanswer -= 1;
                }
                printWord(correctletter);
    
            }
    
        Console.ReadKey();
        }
    
    
        public static void printWord(char[] correctletter)
        {
            for (int j = 0; j < correctletter.Length; j++)
            {
                Console.Write(correctletter[j]);
            }
        }
    }
    }
    
    名称空间刽子手
    {
    班级计划
    {
    静态void Main(字符串[]参数)
    {
    字符串字;
    字符字母_inserterd;
    int=5;
    int计数器=0;
    Console.WriteLine(“欢迎来到刽子手游戏”);
    控制台。写(“第一个玩家输入密码:”);
    word=Console.ReadLine();
    Char[]sentenceChar=word.tocharray();
    WriteLine(“第二个你已经可以玩的玩家”);
    foreach(句子char中的char字母)
    {
    控制台。写(“”);
    }
    Console.WriteLine(“\n”);
    Console.WriteLine(“{0}允许正确答案。\n”,correctanswer);//生命
    Char[]correctletter=新字符[sentenceChar.Length];
    对于(int i=0;i 0)
    {
    控制台。写(“\n\n要播放的字母:”);
    插入的字母=Convert.ToChar(Console.ReadLine());
    布尔=假;
    for(int j=0;j

    另外,如果您想在
    printWord
    方法中更清楚一点,请更改
    Console.Write
    行,如下所示:
    Console.Write(letracorrecta[j]+)

    你真的应该试着在代码中使用英语。特别是在这里问问题的时候。如果你在代码中使用英语,那就容易多了。但是,让我们从头开始。为什么对(int)使用