본문 바로가기

TIL

[TIL]2024-1-12 / 15일차 - 컨플릭트 해결사, 체력 포션 구현, 인트로 만들기

 

오늘은 팀플 작업 3일차

 

다른 팀원들도 슬슬 작업물이 올라오기 시작했다.

 

그러면서 발생한 문제

 

 

오늘은 머지 컨플릭트의 잔칫날 이었다.

No-Base, 경험이 적은 팀이다 보니 컨플릭트를 잘 생각하지 못하는 경향이 있고 이를 고칠 인원이 나 말고 마땅치 않아

컨플릭트를 고봉밥으로 먹게 되었다.

 

머지 한번 당 100~200줄씩 빨간색이 뜨는 모습을 보면 아찔해졌다.

 

팀원들도 아직 깃 경험이 부족한지 부주의하게 메인 브랜치로 머지되는 경향도 있었기에 대규모 잔치가 벌어진 것으로 보인다.

 

컨끼아아아악

 

불평은 이쯤 하고 오늘 한 일들을 적어보자.


 

1. 알고리즘 코드 카타

2. 콘솔 꾸미기, 인트로 추가

3. 치유 물약 구현

 


 

1.알고리즘 코드 카타

 

코트카타 깃허브 주소 : https://github.com/Orknology/DailyAlgorithmCodeKata

 

GitHub - Orknology/DailyAlgorithmCodeKata: This is a auto push repository for Baekjoon Online Judge created with [BaekjoonHub](h

This is a auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - GitHub - Orknology/DailyAlgorithmCodeKata: This is a auto push rep...

github.com

 

오늘은 1시간에 어제보단 많이 풀었다. 조금 더 익숙해 진 것일까? 내용이 좀 되어서 코드 설명은 생략하겠다.

 

1-1 배열의 평균값

더보기

 

using System;
using System.Linq;

public class Solution {
    public double solution(int[] numbers) {
        double answer = 0;
        return answer = numbers.Average();
    }
}

 

1-2 짝수와 홀수

더보기

1-2 짝수와 홀수

 

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

 

1-3 평균 구하기

더보기

1-3 평균 구하기

using System;
using System.Linq;

public class Solution {
    public double solution(int[] arr) {
        double answer = 0;
        answer = arr.Average();
        return answer;
    }
}

1-4  자릿수 더하기

더보기

1-4 자릿수 더하기

using System;

public class Solution {
    public int solution(int n) {
        int answer = 0;
        while(n>0)
        {
            answer += n % 10;
            n = n / 10;
        }
        return answer;
    }
}

1-5 약수의 합

더보기

1-5 약수의 합

public class Solution {
    public int solution(int n) {
        int answer = 0;
        int i = 1;
        while(n >= i)
        {
            if (n % i == 0)
                answer += i;  
            i ++;
        }
        return answer;
    }
}

다음엔 여러개 풀게 되면 그냥 적는걸 적당히 스킵해야 할 것 같다...


 

2. 콘솔 꾸미기, 인트로 추가

 

다른 조원의 코드가 끝나길 기다려야 할 때, 사실 이성적으로는 지금 꾸미면 안좋다고 외치지만 감성적으로는 내가 그나마 좋아하는 꾸미기라도 하고 싶다는 욕구를 참지 못했다.

 

우선 텍스트 색깔을 바꿀 수 있는 ColorText()라는 메소드를 만들었다.

앞으로 색깔을 입힐 때 코드가 좀 짧아지도록 준비했다.

 

또한 게임처럼 천천히 나오는 텍스트 구현을 위한 메소드도 검색하여 따라서 만들어 보았다.

결과적으로 foreach를 이용해서 짧게 완성할 수 있었다.

 

상점 등을 구현하며 콘솔창에 띄울 텍스트가 많아져서 시작 화면 또한 조절하였다.

 

그리고 심심한 창에 사이트에서 아스키 아트를 만들어 추가하였다.

그래서 결과적으로 나온 창들은 

 

 

이런 식으로 만들어졌다. 이후 시간 남으면 더 바꾸겠지만 우선 생각하던 것들은 구현해 볼 수 있었다.

이제 좀 게임 같지 않은가?

 

 

다른 화면들도 보다 보기 좋게 바뀌었다. (공용) 부분은 곧 직업별 아이템을 추가하려는 부분이다.

 


3. 치유 물약 구현

 

치유 물약 구현 때는 원시인 같은 코딩이지만, 어쩔 수 없는 타협을 했다.

Item 클래스와 Character클래스 두 개를 건들여야 하는데 두 클래스 모두 다른사람들이 작업중인 파트이다.

 

그래서 최대한 아무것도 안 건들이면서 만들 수 있는 방법을 강구했다.

 

바로 다른 아이템이 무기인지 방어구인지 판단하는 법이 공격력과 방어력 수치가 0보다 클때로 체크하는 방법이기에 소모품은 음수값으로 만들기로 한 것이다.

 

 

이걸 기존 아이템 장착창에서 음수값 체크를 해서 소모품 사용 메소드를 불러들이는 것으로 아이템 사용을 구현했고

 

해당 메소드에서 체력 회복을 진행하며 캐릭터 클래스 부분에 MaxHp를 추가하고 싶지만 아직 작업중인 부분이라 이렇게 직업별로 체력 회복 제한을 걸어두었다.

 

그리고 치유 물약은 기존 장비템과 똑같은 판매, 구매 메소드에서 다뤄지는데

이렇게 되면 치유 물약도 한 개만 구매하고 가지고 다닐 수 있게 된다.

 

이걸 어떻게 할까 하다가 선택문에서 음수 스탯(소모품)을 체크하면 이 물품은 isbuy(구매완료 체크)값을 그대로 false로 유지한 채로 아이템만 장비 리스트로 넣어주도록 하였다. (상점 부분은 내 담당이어서 맘대로 바꿀 수 있었다.)

 

기존 장비 판매에서도 isbuy = true인 상태의 아이템을 띄우는 방법에서 캐릭터의 인벤토리 리스트를 불러오는 방법으로 바꿔 문제없이 판매상태로 출력할 수 있게 되었다.

 

이런 방법으로 기존 코드를 최대한 변형없이 추가하는 식으로 구현하였다.

굉장히 석기시대 코딩 이었지만 지금은 기능 구현에 성공한 것으로 만족하고자 한다.

 

이 구현을 마지막으로 이제 내게는 남은 체크리스트가 많이 남지 않았다.

월요일 마무리하고 화요일 마지막 머지 후 발표자료 준비를 해야할 것이다.


 

오늘은 기능 구현 보다도 컨플릭트만 떠오른다.

 

PTSD 걸릴 것 같으니 쉬러 가도록 하겠다. 오늘 하루도 힘들었지만 알찼다.