부트캠프/사전캠프

[내일배움 사전캠프_2025JUN11] 유니티 퀘스트 개인과제

Young_A 2025. 6. 11. 17:21

오늘의 학습 키워드: C# 걷기반 및 달리기반 개인학습 완료

 

 

오늘 학습 한 내용을 이하, 접은 글 내에 제출한 과제들을 첨부해두었다.

 

 

더보기

걷기반
----
2. 연산자 실습

Q. 논리 연산 
    int ten = 10;
    bool result_1 = ten == 10; //true
    bool result_2 = ten != 11; //true
    bool result_3 = ten < 20; //true
    bool result_4 = ten > 5; //true

Q. 사칙연산간 우선순위가 어떻게 될까요?
사칙연산간의 우선순위는 실제 수학에서 계산하는 방법과 동일하다.
왼쪽에서 오른쪽 순서(LTR)로 계산하며, *, /, %는 +, - 보다 우선 계산된다.
()를 이용해 일부 계산을 우선할 수 있다.
----
3. 본격 프로그래밍 시작
Q. 입력받은 데이터가 숫자라면 짝수인지 홀수인지 알려주는 프로그램 만들기

Console.WriteLine("원하는 값을 입력해주세요: ");
string input = Console.ReadLine();
bool isNum = int.TryParse(input, out int num);

if(isNum) //input이 숫자임.
{
    if(num % 2 == 0) //나누기2 나머지가 0
    {
        Console.WriteLine(num + "은(는) 짝수입니다.");
    }
    else
    {
        Console.WriteLine(num + "은(는) 홀수입니다.");
    }

}
else
{
    Console.WriteLine("숫자가 아닙니다.");
}

Q. 언제 if 를 쓰고 언제 case 를 쓸까요?
if 문은 다양한 조건을 범위, 관계 혹은 논리 연산자로 처리하거나 적은 수의 조건 혹은 조건 속의 조건과 같은 복잡한 조건을 비교할때 case에 비해 깔끔한 가독성으로 주로 사용된다. bool 결과를 이용하므로 이용자의 재량에 따라 모든 타입을 비교할 수 있다.
switch-case 문은 단순한 값 비교가 많을 때 코드의 가독성을 높일때 유리하게 사용되며, bool 결과 뿐만 아니라 int, string, char와 같은 변수를 이용할 수도 있다. 결과 값이 딱 떨어지는 고정된 여러 값 중 하나를 이용할 때 적합하다. (요일, 숫자 등)
----
4. 숫자..인가요?

Q. 숫자를 두번 입력받아서 두번 다 숫자인지 하나만 숫자인지 확인
    Console.WriteLine("첫 번째 수를 입력해주세요");
    string input1 = Console.ReadLine();
    Console.WriteLine("두 번째 수를 입력해주세요");
    string input2 = Console.ReadLine();

    bool isNum1 = int.TryParse(input1, out int num1);
    bool isNum2 = int.TryParse(input2, out int num2);

    if(isNum1 && isNum2)
    {
        Console.WriteLine("두 데이터는 모두 숫자입니다.");
    }
    else if(isNum1 || isNum2)
    {
        Console.WriteLine("하나의 데이터만 숫자입니다.");
    }
    else
    {
        Console.WriteLine("두 데이터 모두 숫자가 아닙니다.");
    }
----
5. 대한민국의 수도는?
Q. 퀴즈를 내서 정답을 맞추는 프로그램을 작성하기
Console.WriteLine("Q. 대한민국의 수도는 어디인가요?");
Console.WriteLine("1.인천 2.평창 3. 서울 4. 부산");

string input = Console.ReadLine();

bool isNum = int.TryParse(input, out int num);

if (isNum)
{//number
    if (num >= 1 && num <= 4) //1 <= num <=4
    {
        if (num == 3)
        {
            Console.WriteLine("정답입니다.");
        }
        else
        {
            Console.WriteLine("오답입니다.");
        }
    }
    else
    {//num is out of range
        Console.WriteLine("1-4의 숫자를 입력해주세요.");
    }
}
else
{//not number
    Console.WriteLine("숫자가 아닙니다.");
}

----
6. 여행을 떠나요.
Q. 주어진 보기를 선택하면 해당하는 선택지에 맞는 메시지 출력해주세요.
    Console.WriteLine("Q. 어디로 여행을 가고 싶나요?");
    Console.WriteLine("1.제주도 2.코타키나발루 3. 싱가포르 4. 태국");

    string input = Console.ReadLine();

    bool isNum = int.TryParse(input, out int num);

    if (isNum)
    {//number
        switch (num) 
        {
            case 1:
                Console.WriteLine("제주도는 한국의 섬으로 비교적 방문이 쉽고 다양한 놀거리/먹거리가 준비되어 있습니다.");
                break;
            case 2:
                Console.WriteLine("코타키나발루는 말레이시아 사바주의 주도로, 말레이시아 동부 보르네오섬 최대의 도시입니다.");
                break;
            case 3:
                Console.WriteLine("싱가포르는 동남아시아, 말레이 반도의 끝에 위치한 섬나라이자 항구 도시로 이루어진 도시 국가입니다.");
                break;
            case 4:
                Console.WriteLine("태국은 중국문화, 말레이문화, 불교문화, 힌두문화, 이슬람 문화가 혼재되어 있습니다. 불교적인 모습을 많이 띄지만, 문화 자체는 색다르고 스펙트럼이 넓은 형태를 띄고 있어요.");
                break;
            default:
                Console.WriteLine("1-4의 숫자를 입력해주세요.");
                break;
        }
    }
    else
    {//not number
        Console.WriteLine("숫자가 아닙니다.");
    }

----
7. 이름 찾기!
Q. 이름 입력(3글자이상 10글자 이하) 시도 계속 시키기
    int length = 0;
    bool isValid = false;
    string input;
    while (!isValid)
    {
        Console.WriteLine("이름을 입력해주세요. (3-10글자)");
        input = Console.ReadLine();
        length = input.Length;
        isValid = length >= 3 && length <= 10;
        if (isValid)
        {
            Console.WriteLine("안녕하세요! 제 이름은 chad 입니다.");
        }
        else
        {
            Console.Clear();
            Console.WriteLine("이름을 확인해주세요.");
        }
    }

----
달리기반
----
1. 홀수 출력: for, while, do-while 이용
    Console.WriteLine("for 문 이용해서 홀수 출력하기");
    for (int i = 1; i <= 100; i++)
    {
        if (i % 2 == 1)
        {
            Console.WriteLine(i);
        }
    }

    Console.WriteLine("while 문 이용해서 홀수 출력하기");
    int j = 1;
    while (j <= 100)
    {
        if (j % 2 == 1)
        {
            Console.WriteLine(j);
        }
        j++;
    }

    Console.WriteLine("do-while 문 이용해서 홀수 출력하기");
    int k = 1;
    do
    {
        if (k % 2 == 1)
        {
            Console.WriteLine(k);
        }
        k++;
    } while (k <= 100);


----
2. 배열을 사용한 합계 및 평균 계산
    int[] nums = {10, 20, 30, 40, 50};
    int sum = 0;
    int average = 0;

    for (int i = 0; i < nums.Length; i++)
    {
        sum += nums[i];
    }
    average = sum / nums.Length;

    Console.WriteLine("Sum: " + sum);
    Console.WriteLine("Average: " + average);
----
3. 팩토리얼 계산
    int number;
    int result = 1;
    bool isNum;
    do
    {
        Console.WriteLine("Enter a number: ");
        isNum = int.TryParse(Console.ReadLine(), out number);
        if (!isNum)
        {
            Console.WriteLine("It is not a number");
        }
    } while (!isNum);

    while (!(number == 0))
    {
        result = result * number--;
    }
    Console.WriteLine(result);
----
4. 숫자 맞추기 게임

    Random random = new Random();
    int randomNumber = random.Next(1, 101); //1-100
    int inputNum = 0;
    bool isNum;
    do
    {
        Console.Write("Enter your guess (1-100): ");
        
        //checking validation
        isNum = int.TryParse(Console.ReadLine(), out inputNum);
        if (!isNum)
        {
            Console.WriteLine("It is not a number");
        }
        else
        {
            //validating answer
            if (inputNum == randomNumber)
            {
                Console.WriteLine("Congratulation! You guessed the number.");
            }
            else if (inputNum < randomNumber)
            {
                Console.WriteLine("Too low! Try again.");
            }
            else
            {
                Console.WriteLine("Too high! Try again.");
            }
        }

    } while (randomNumber != inputNum);

----
5. 이중 반복문을 이용한 숫자 구구단 출력

    Console.WriteLine("구구단을 세로로 출력합니다.");
    for (int i = 1; i < 10; i++) //i 수 j 단
    {
        for (int j = 2; j < 10; j++)
        {
            Console.Write(j + " * " + i + " = " + j*i + '\t');
        }
        Console.WriteLine();
    }

    Console.WriteLine("구구단을 가로로로 출력합니다.");
    for (int i = 2; i < 10; i++) //i 단 j 수
    {
        for (int j = 1; j < 10; j++)
        {
            Console.Write(i + " * " + j + " = " + j * i + '\t');
        }
        Console.WriteLine();
    }

----
6. 배열 요소의 최솟값과 최댓값 구하기

    int[] numbers = { 10, 20, 30, 40, 50 };
    int min = numbers[0];
    int max = numbers[0];

    for (int i = 1; i < numbers.Length; i++)
    {
        if (min >= numbers[i])
        {
            min = numbers[i];
        }
        if (max <= numbers[i])
        {
            max = numbers[i];
        }
    }
    Console.WriteLine($"Max: {max}");
    Console.WriteLine($"Min: {min}");

 

 

과제를 진행하다보니, 컬리지에서 공부할때와는 다르게 한글을 입력해야해서... 그게 조금 거슬렸다. 한영키를 바꾸는 게... 생각보다 귀찮더라. 그래도 한글짱!

!. 이름을 3-10자로 제한해서 받는 문제를 풀면서 한글과 영문 둘 다 길이 갯수를 1로 카운트하나? 궁금해서 찾아봤는데

string.Length는 문자수를 의미하고 일반적인 문자는 각 1개의 char로 표현되므로 길이는 동일하게 계산된다고 한다.
하지만 파일 크기나 네트워크 전송용 바이트 수를 계산할 때는 인코딩에 따라 한글은 영어보다 더 많은 바이트를 차지할 수 있다고 한다.

 

 

 

팀과제를 제외한 개인과제는 다 끝내고 역기획 하나만 남았다. 

게임은 내가 제일 애정하는 Factorio로 결정했고, 개요 정도만 정리했다.

오랜만에 기획서를 작성하려니 정말 하~~나도 모르겠어서 역기획서 템플릿을 조사해봐야겠다.

 

더보기

게임명: 팩토리오 (Factorio)
개발사: Wube Software
출시일: 2020년 8월 정식출시, 2016년 얼리액세스
장르: 자동화 시뮬레이션, 전략, 생존
플랫폼: PC (Windows, Linux, macOS)
플레이 방식: 싱글/멀티플레이/코옵, 탑다운2D

 

역기획은 좋아요를 많이 받은 5명에게는 캠프 종료시 선물을 준다고 한다!

빨리 완료하면 노출도 더 많이 될테니, 추후 수정이 가능하다면 일단 내일 중으로 완료하고 차차 수정하면 좋을 것 같다.

 


 

느낀점

오랜만에 학습하다보니 읽을때는 이미 다 아는 내용이어도 질문을 풀때는 한번 멈칫하게 된다.

나는 practical learner이므로 무엇이든 잘 이해가 안가는 내용은 손으로 직접 해보고, 질문도 직접 찾아보는 노력이 필요하다.

 


 

내일 학습 할 것은 무엇인지

1. 역기획서 작성 완료 및 업로드

2. 유니티 게임 개발이 처음이어도 쉽게 배우는 모바일 게임 개발 1-3까지 학습 완료.

역기획서는 얼마나 걸릴지 잘 모르겠어서 일단은 유니티 강의를 1-3까지 학습한 뒤, 역기획서를 작성하려고 한다.

분명 진행하다보면 에셋을 다운로드 받거나 하는 일이 있을 듯하니 그런 시간 또한 역기획서 작성에 활용할 수 있겠지!