Здесь немного странно.
Я делаю небольшое простое приложение для палача, используя Windows Forms, с. NET framework, предоставляемым Visual Studio, и столкнулся с необъяснимым проблема.
У меня есть функция, которая принимает догадки пользователей - строка с именем letter
в приведенном ниже скрипте. Он сравнивает это со словом угадать, и если слово содержит букву, он перебирает переменную display
- строку подчеркивания, с одним пробелом после каждого. Если пользователь правильно угадывает букву, соответствующее подчеркивание заменяется буквой. Если пользователь неверен, его предположение добавляется к тексту в метке guesses
, а если буква уже присутствует в этой метке, она игнорируется. По сути, моя проблема заключается в следующем:
Этот алгоритм отлично работает для всех букв, кроме «d», «e», «s» и «u». Я попробовал несколько разных слов, перезапустил Visual Studio, и, похоже, ничего не работает - письмо не добавляется в список догадок, если оно неверно, и не добавляется в текст, который будет отображаться, если он верен. Это только второй раз, когда я задаю вопрос здесь, и в прошлый раз я сделал несколько ошибок - любая конструктивная критика будет полезна. Спасибо! :)
Код (только функция «Угадай», остальные не показаны, хотя доступны по запросу):
private void Guess(string letter)
{
if (GuessedDisplay.Text.Contains(letter))
{
GuessBox.Text = "";
return;
}
if (word.Contains(letter))
{
string toDisplay = "";
for (int i = 0; i < displayed.Length; i+=2)
{
if (word[i/2].ToString() == letter)
{
toDisplay += letter + " ";
}
else
{
toDisplay += displayed[i] + " ";
}
}
displayed = toDisplay;
}
else
{
stage += 1;
GuessedDisplay.Text += "\n" + letter;
}
GuessBox.Text = "";
UpdateWindow();
}