원래는 팀 미션으로 출제된건데 사전캠프 기간도 얼마 안남았고 각자 해야할 미션들이 아직 남은듯 하여 혼자서 작성하게 되었다.
해당 게임은 사용자가 맞춰야할 secretWord를 입력하고 secretWord를 한글자씩 총 6번의 기회로 맞춰야하는 게임이다.
입력한 문자가 해당 단어에 포함되어 있다면 포함된 결과를 알려주고
입력한 문자가 해당 단어에 포한되어 있지 않다면 기회를 한번씩 차감한다.
public class Quest7
{
/// <summary>
/// 맞춰야할 단어
/// </summary>
string secretWord;
/// <summary>
/// 사용자가 맞춘 문자를 저장 (초기에는 _로 표시)
/// </summary>
char[] guessWord;
/// <summary>
/// 사용자가 틀릴 수 있는 기회, 초기에는 6번
/// </summary>
int attempts = 6;
/// <summary>
/// 사용자 단어를 모두 맞췃는지를 나타내는 boolean 변수
/// </summary>
bool wordGuessed;
private void Reset()
{
secretWord = String.Empty;
guessWord = null;
attempts = 6;
wordGuessed = false;
}
public void InputWord()
{
Console.Write("영어 단어를 입력하세요: ");
Console.ForegroundColor = ConsoleColor.Green;
secretWord = Console.ReadLine();
// 콘솔의 현재 커서 위치를 저장
int currentLineCursor = Console.CursorTop;
// 현재 커서 위치에서 한 줄 위로 이동
Console.SetCursorPosition(0, currentLineCursor - 1);
// 현재 커서 위치에서 한 줄을 공백으로 채움
Console.Write(new string(' ', Console.WindowWidth));
// 커서를 다시 한 줄 위로 이동
Console.SetCursorPosition(0, currentLineCursor - 1);
Console.WriteLine($"단어를 입력했습니다. 단어를 맞춰보세요!");
}
public void Run()
{
Reset();
Console.WriteLine("---6. 행맨게임");
InputWord();
Console.ForegroundColor = ConsoleColor.White;
guessWord = new char[secretWord.Length];
for (int i = 0; i < secretWord.Length; i++)
guessWord[i] = '_';
while (true)
{
Console.Write("입력 문자: ");
// 문자 입력
string inputText = Console.ReadLine();
// 입력받은 문자가 공백이면 게임을 종료한다.
if (string.IsNullOrWhiteSpace(inputText))
{
Console.WriteLine("게임 종료");
break;
}
else if (inputText.Length > 1)
{
// 입력받은 문자가 2글자 이상이면 다시 입력받는다.
Console.WriteLine("한 글자만 입력해주세요.");
continue;
}
Console.WriteLine();
// 입력 단어를 찾았는지 확인
bool finded = false;
for (int i = 0; i < secretWord.Length; i++)
if (secretWord[i] == inputText[0])
{
guessWord[i] = inputText[0];
finded = true;
// 사용자가 입력받은 guessWord에서 _(언더바)가 없다면 wordGuessed를 true로 변경
wordGuessed = !guessWord.Contains('_');
}
// wordGuessed가 true면 단어를 맞췄으므로 게임 종료
if (wordGuessed)
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine($"축하합니다. 단어를 맞췄습니다. 정답: {secretWord}");
Console.ForegroundColor = ConsoleColor.White;
break;
}
if (finded) // 단어를 찾았다면
{
Console.WriteLine($"현재 단어 {string.Join("", guessWord)}");
}
else // 단어를 못찾았다면
{
// 기회를 감소하고 attempts가 0이 되면 게임을 종료한다.
if (--attempts < 1)
{
Console.WriteLine($"실패했습니다. 정답은 {secretWord} 입니다.");
break;
}
else
Console.WriteLine($"틀렸습니다. 남은 기회: {attempts}");
}
}
Console.WriteLine("------------------------------");
}
}