18. 팀 프로젝트 과제

이규성·2023년 11월 17일
0

TIL

목록 보기
23/106

11/17 알고리즘 코드 카타와 팀 프로젝트 과제가 시작되었다..!

📌알고리즘 코드 카타 (Algorithm Code Kata)

제시한 결과값을 출력하기 위한 코드를 작성하고 검사 받는 일종의 코딩 테스트이다. 매일 오전 9시부터 10시까지 시간표가 배정이 되어 있다.

📖오늘의 코드 카타 !

짝수와 홀수

문제 설명
정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.

제한 조건
num은 int 범위의 정수입니다.
0은 짝수입니다.

입출력 예

numreturn
3"Odd"
4"Even"

작성한 코드

public class Solution
{
    public string solution(int num)
    {
        string answer = "";
        if (num % 2 == 0) 
        {
            answer = "Even";
        }
        else
        {
            answer = "Odd";            
        }            
        return answer;
    }
}

저렇게만 작성하고 코드 카타 사이트에서 실행을 누르면 성공 여부를 알려주며, 코드의 정확도를 메겨서 점수화시켜준다. 다른 사람들의 풀이도 볼 수 있다. 후에 코딩 테스트의 연습과 매일매일 이것을 쌓는다면 포트폴리오에 반영도 될 것 같아서 굉장히 중요도가 높다고 생각이 된다.

📌팀 프로젝트 과제 시작

개요

  1. 던전에 도착한 캐릭터가 전투를 하는 게임을 텍스트로 구현합니다. (C# - Console App)
  2. 여러 몬스터들과 상호작용하는게 핵심입니다.
  3. 캐릭터와 몬스터는 여러개의 데이터가 함께 있는 만큼 객체나 구조체를 활용하는 편이 효율적 입니다.
    (이름, 능력, 설명 등…)
  4. 캐릭터와 몬스터의 데이터를 변경했을때 어떻게 유지되는가에 대한 고민이 되면 좋습니다.

직접 작성한 와이어프레임 (Wireframe)

전체적인 흐름과 필요한 장면들을 가볍게 다이어그램으로 시각화하였다.

상태보기, 인벤토리, 장비 장착 화면은 팀원 각자 개인 과제로 제출했던 경험이 있으므로, 새로 추가된 장면들을 각자 분담하기로 했다.

새로 추가된 구현해야할 기능들

  • 몬스터 클래스
  • 몬스터를 랜덤 등장시키는 전투 시작 화면
  • 플레이어와 몬스터 간의 데미지를 입히는 메서드
  • 게임 종료 메시지 출력 메서드

회의를 통해 크게 4가지로 분류했으며, 바로 각자 맡아서 구현하기 보다는 각 기능들을 어떻게 구현할 것인가를 먼저 구상을 해놓고 파트를 나누기로 했다. 나중에 하나의 프로젝트로 합쳤을 때, 코드 진행의 흐름과 각 팀원의 역할 등을 명확하게 알기 위함이다.

협업을 위한 준비

우선 팀 프로젝트 용도로 깃허브를 하나 만들었고, 멤버들을 추가하여 메인 프로젝트를 각자 로컬에 저장하고 빌드가 잘되는지 확인하였다.
의견 중에 하나의 스크립트에 작성을 하다보면 직관성이 떨어지니 다른 스크립트에 각자 작성하고 메인 스크립트에서 호출하는 기능이 필요해 보인다는 것이 있었고, 모두들 동의했다. 이에 대해 튜터님의 Using Namespace;를 이용하라는 팁을 주셨고 내가 방법을 찾았다 !

스크립트 간의 참조

처음에 찾은 방법은 프로젝트 간의 종속을 통해 변수들을 참조 받는 것이었다. 하지만 이는 프로젝트를 새로 추가해야 한다는 번거로움이 있었고 다들 아쉬움을 토로했다. . .
하지만 곧바로 스크립트 간의 참조를 찾아내었다 !

우선 프로젝트에 새로운 스크립트를 추가해 준다.

Test2.cs로 명명했다.

// Test2.cs
namespace Training
{
    internal class Test
    {

    }
    public class Test2 // 다른 스크립트에서 참조하기 위해 public
    {
        public static void WriteGameOver() // 클래스명으로 호출하기 위해 static
        {
            int xOffset = 25;
            int yOffset = 22;
            Console.SetCursorPosition(xOffset, yOffset++);
            WriteText("============================", xOffset, yOffset++);
            WriteText("         GAME OVER", xOffset, yOffset++);
            WriteText("============================", xOffset, yOffset++);
        }
        static void WriteText(string text, int xOffset, int yOffset)
        {
            Console.SetCursorPosition(xOffset, yOffset);
            Console.WriteLine(text);
        }
    }
}
// Program.cs
using Training; // using 뒤에 붙는 Namaspace를 참조하겠다

Test2.WriteGameOver(); // 클래스명.메서드();로 호출해 준다.

디버그를 통해 확인해보니 잘되었고, 팀원 각자 스크립트를 생성하여 작업한 후 메인 스크립트에서 클래스와 메서드 호출로 코드를 깔끔하게 관리하자는 의견이 주를 이루었다.

🤸🏻‍♀️Feedback

알고리즘 문제를 오늘 처음 풀어보았는데 웹페이지에서 코드를 실행하는 거다 보니 조금 헤메었다. . . 예시로 준 코드가 문법이 조금 이상해서 알아보니 C++ 언어였고 C# 언어로 변경하니 그제서야 익숙한 문법들이 나와서 반가웠다. 첫인상은 매일매일 이것을 해내면 실력상승에는 당연히 도움이 되고 문제를 풀면 점수가 올라가는 방식이라 시각적인 지표로도 사용할 수 있겠구나라는 생각이 들어서 아주 꾸준하게 문제들을 풀어야겠다는 다짐을 했다.
팀 프로젝트 얘기를 해보면 어제까진 개인공부를 하며 서로 느낀점을을 피드백해오곤 했는데 하나의 목표를 가지고 대화하니 주제가 많이 바뀌었고 좀 더 가까워 지는 것을 느꼈다. 프로젝트가 끝나면 헤어진다는 것이 아쉬운 마음이 들었지만 이제 시작이니 잠시 접어두자. 팀원들 간의 이해도와 실력에 차이가 있음을 느끼지만 서로 끌어주고 당겨주며 모두가 윈윈할 것이라는 생각이 들었다.

0개의 댓글