본문 바로가기

TIL

[TIL]2024-1-26 / 25일차 - 팀 과제 맵 이동 구현

야발...

1. 오늘의 알고리즘 코드카타 - 약수의 개수와 덧셈

 

답안 :

using System;

public class Solution {
    public int solution(int left, int right) {
        int answer = 0;
        int count; //약수의 갯수
        
        for (int i = left; i <= right; i++) //left와 right사이의 수
        {
            count = 0; //갯수 초기화
            for (int n = 1; n <= i; n++) // 현재 숫자의 약수 구하기
            {
                if (i % n == 0)
                {
                    count++; //약수 카운트
                }  
            }
            if (count % 2 == 0) //짝수 홀수 확인
                answer += i;
            else
                answer -= i;
        }
        return answer;
    }
}

 


2. 오늘의 팀 과제

 

 

방 로직에 대한 구상은 사실 이미 되어있었지만,

실제로 구현하려니 내가 코딩, 코드를 쓰는 법 자체에 너무 무지했다는 것만 입증되었다.

 

구조나 흐름은 어느정도 이해하더라도 그걸 실제로 쓰는 법을 모르는 것이다.

프로그래밍 공부를 시작한 기간이 아직 한달도 안되었으니 당연하다면 당연한 것이겠지만,

 

그래서 결국 오늘은 하루 종일 공부만 계속 했었다.

 

여러가지 방법을 계속 시도해보고 실패하고

 

위에 있는 길다란 주석처리 된 코드들도 전부 시도해보았다가 제대로 안되거나, 내가 원하던 방법과는 거리가 멀거나 하는 이유로 버려진 코드들이다.

 

다양한 강좌를 들어보고 여러 내용을 보았지만, 내가 원하는 정확한 느낌은 찾기가 어려웠고

결국 간단한 구조만 배껴와서 내가 구현할 수 있을 정도로 간단하고 쉬운 방법으로 구현해야 했다.

 

훨씬 활용성이 좋은 코드를 만들고 싶었지만,

결국 머리를 쥐어싸다 시간에 촉박감을 느껴 다 갈아엎고 당장이라도 할 수 있는 미리 태그에 방을 넣어두고 LoadScene으로 방을 넘기는 방식으로 해야했다.

 

원하던 방식은 아니었지만 그래도 작동은 한다는게 다행인걸까?

 

결국 해당 태그를 가진 맵들의 랜덤 소환 방식에서 보다 간단한 정해진 맵 소환으로 바꿔야 했다.

 

각 맵은 Room Controller를 가지고 있게 되었고

현재 방의 타입은 나중에 보상 매니저를 만들 때 필요할 것 같아 고를 수 있게 해두었다.

여기서 다음 난이도에 해당하는 씬의 이름을 적어두면 그 씬을 불러오는 단순한 방식이다.

 

 

문들 또한 도어 매니저에서 문의 난이도 타입을 맵에다 전달 할 수 있게 해주었다.

없어도 작동하는 랜덤을 만들려던 흔적이지만 우선은 굳이 없애두지 않았다.

 

문에 있는 콜라이더에서 위에서 보이다 싶이 플레이어가 닿은 문의 정보를 SendMessage를 통해 RoomController로 보내는 방식이다. 닿는 순간 position을 초기화 시키고 맵을 가진 씬을 불러오게 하여 맵에 이상한 곳에 플레이어가 소환되는 일은 없게 하였다.

 

사실 이것도 스폰포인트라는 코드를 통해 자동으로 정해진 스폰 지점을 체크하여 그곳으로 텔레포트 시키는 기능을 준비하고 있었으나 이도 좀 일이 꼬여서 우선은 폐기되었다.

 

 

 

그래도 그나마 주게된 귀여운 변화로

 

 

기존의 칙칙한 문에다가

 

아기자기한 진짜 '문'을 달아주었다.

 

이는 이후에 게임 매니저에서 맵에 남은 몬스터를 카운트하여 아래와 같이 자동으로 열릴 예정이다.

 

 

 


 

오늘은 정말 많은 시간을 소모했지만 별로 해낸 건 없었다는 점이 공부를 하는 것 보다 힘들었다.

팀 과제란 마감기한과 목표가 모두 존재하는 만큼 해내지 못했다는 상실감이 생긴 듯 하다.

 

결국 구현된 기능의 움짤로 글을 마무리 하겠다.