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