C# 프로그래밍 기초

Sungchan Ahn(안성찬)·2024년 9월 19일

내일배움캠프

목록 보기
27/104

숫자 맞추기 게임

C# 프로그래밍 기초 - 배열을 활용하여 중복되지 않는 랜덤 숫자 3개를 맞추는 콘솔 게임 만들기

Random random = new Random();
int guessNumLength = 3;
int[] numbers = new int[guessNumLength];

for (int i = 0; i < guessNumLength; i++)
{
    numbers[i] = random.Next(1, 10);
}

for (int i = 1; i < guessNumLength; i++)
{
    if (numbers[i] == numbers[i - 1])
    {
        numbers[i] = random.Next();
        i--;
    }
}

int attempt = 0;
while (true)
{
    Console.Write("Enter three numbers (1~9): ");
    string input = Console.ReadLine();
    char[] inputChars = input.ToCharArray();

    int[] guesses = new int[guessNumLength];
    for (int i = 0; i < guessNumLength; i++)
    {
        guesses[i] = int.Parse(input[i].ToString());
    }

    int correct = 0;

    for (int i = 0; i < guessNumLength; i++)
    {
        for (int j = 0; j < guessNumLength; j++)
        {
            if (numbers[i] == guesses[j])
            {
                correct++;
                break;
            }
        }
    }

    attempt++;
    Console.WriteLine($"Try {attempt}: You got {correct} numbers right. Try again!");
    Console.WriteLine();

    if (correct == 3)
    {
        Console.WriteLine($"Attempts: {attempt}, 
        					Answer numbers: {numbers[0]}, {numbers[1]}, {numbers[2]}");
        Console.WriteLine("Congratulations! You got all numbers right.");
        break;
    }
}

Tic-Tac-Toe Game

다차원 배열을 활용한 콘솔 틱택토(TicTacToe) 게임 만들기

int[,] map = new int[3, 3]
{
    { 0, 0, 0 },
    { 0, 0, 0 },
    { 0, 0, 0 }
};

Random rand = new Random();
int[] mapNumArr = {1, 2, 3, 4, 5, 6, 7, 8, 9 };

bool isPlay = true;
int turn;
int player = 1;
int computer = 2;
int attempt = 0;
int mapNum = 0;

Console.WriteLine("Let's play Tic-Tac-Toe game(VS Computer)");
Console.WriteLine("Map");
Console.WriteLine("1 2 3\n4 5 6\n7 8 9");

while (isPlay)
{
    Console.WriteLine();
    if (attempt % 2 == 0)
    {
        turn = player;
        Console.Write("Choose the number on map 1 ~ 9: ");
        mapNum = int.Parse(Console.ReadLine());
        mapNumArr = mapNumArr.Where(n => n != mapNum).ToArray();
    }
    else
    {
        turn = computer;
        Console.WriteLine("Turn of computer");
        int idx = rand.Next(mapNumArr.Length);
        mapNum = mapNumArr[idx];
        mapNumArr = mapNumArr.Where(n => n != mapNum).ToArray();
    }
    attempt++;

    switch (mapNum)
    {
        case 1:
            map[0, 0] = turn; break;
        case 2:
            map[0, 1] = turn; break;
        case 3:
            map[0, 2] = turn; break;
        case 4:
            map[1, 0] = turn; break;
        case 5:
            map[1, 1] = turn; break;
        case 6:
            map[1, 2] = turn; break;
        case 7:
            map[2, 0] = turn; break;
        case 8:
            map[2, 1] = turn; break;
        case 9:
            map[2, 2] = turn; break;
    }

    Console.WriteLine("Player: ▲ , Computer: ●");

    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            if (map[i, j] == 1)
            {
                Console.Write("▲ ");
            }
            else if (map[i, j] == 2)
            {
                Console.Write("● ");
            }
            else
            {
                Console.Write("□ ");
            }
        }
        Console.WriteLine();
    }

    if (attempt > 3 && attempt <= 9)
    {
        if (map[1, 1] != 0)
        {
            if ((map[1, 1] == map[0, 0] && map[1, 1] == map[2, 2])
                || (map[1, 1] == map[0, 2] && map[1, 1] == map[2, 0]))
            {
                if (map[1, 1] == 1)
                {
                    Console.WriteLine("Player Win!");
                    isPlay = false;
                    break;
                }
                else
                {
                    Console.WriteLine("Computer Win...");
                    isPlay = false;
                    break;
                }
            }
        }

        for (int i = 0; i < 3; i++)
        {
            int zeroCountInRow = 0;
            int zeroCountInColumn = 0;
            for (int j = 0; j < 3; j++)
            {
                if (map[i, j] == 0) zeroCountInRow++;
                if (map[j, i] == 0) zeroCountInColumn++;
            }
            if (zeroCountInRow != 0 && zeroCountInColumn != 0)
            {
                continue;
            }
            if (zeroCountInRow == 0)
            {
                if (map[i, 0] == map[i, 1] && map[i, 0] == map[i, 2])
                {
                    if (map[i, 0] == 1)
                    {
                        Console.WriteLine("Player Win!");
                        isPlay = false;
                        break;
                    }
                    else if (map[i, 0] == 2)
                    {
                        Console.WriteLine("Computer Win...");
                        isPlay = false;
                        break;
                    }
                }
            }
            if (zeroCountInColumn == 0)
            {
                if (map[0, i] == map[1, i] && map[0, i] == map[2, i])
                {
                    if (map[0, i] == 1)
                    {
                        Console.WriteLine("Player Win!");
                        isPlay = false;
                        break;
                    }
                    else if (map[0, i] == 2)
                    {
                        Console.WriteLine("Computer Win...");
                        isPlay = false;
                        break;
                    }
                }
            }
        }
    }
    else if (attempt > 9)
    {
        Console.WriteLine("Draw");
        break;
    }
}
profile
게임 개발 기록

0개의 댓글