구현 목표

행멘 게임은 사용자가 문자를 하나씩 입력하여 숨겨진 단어를 맞추는 게임이다.
사용자는 알파벳을 하나씩 입력하고, 맞출 때마다 단어의 해당 위치에 문자가 표시된다.
사용자는 총 6번의 기회를 가지며, 문자를 맞추면 횟수는 차감되지 않는다.

char[] secretWord = { 'h', 'a', 'n', 'g', 'm', 'a', 'n' };
char[] guessWord = new char[secretWord.Length];
Array.Fill(guessWord, '_');
int attempts = 6;
bool wordGuessed = false; //사용자가 정답을 맞췄는지 판별
bool isIncluded = false; //사용자의 입력마다 틀렸는지 판별

while (attempts > 0) //남은 기회의 수가 0보다 많으면 반복
{
    isIncluded = false;
    foreach (char c in guessWord)
    {
        Console.Write(c);
    }
    Console.WriteLine("  남은 오답 가능 횟수 : " + attempts);

    char word = Console.ReadKey().KeyChar;

    Console.WriteLine();

    for(int i = 0; i <= secretWord.Length - 1; i++)
    {
        if(word == secretWord[i])  //새로운 문자를 맞춘 경우
        {
            guessWord[i] = word;
            isIncluded = true;
        }
    }

    if(compareArr(secretWord, guessWord))
    {   //사용자가 단어를 모두 맞춘 경우
        wordGuessed = true;
        break;
    }

    if (!isIncluded)
    {   //사용자가 틀린 경우
        attempts--;
    }
}

if (wordGuessed)
{
    Console.WriteLine("축하합니다! 정답입니다!");
}
else
{
    Console.WriteLine("실패했습니다.");
}

bool compareArr(char[] arr1, char[] arr2)
{   //두 개의 문자 배열을 비교해주는 메서드
    if(arr1.Length != arr2.Length)
    {
        return false;
    }

    for(int i = 0; i < arr1.Length - 1; i++)
    {
        if (arr1[i] != arr2[i])
        {
            return false;
        }
    }
    return true;
}

결과

image1

태그:

카테고리:

업데이트:

댓글남기기