하루종일 md 문서에 데이터를 차곡차곡 @_@ …
기존의 300개 가량 되는 변수를
묶거나 이름을 좀더 알아보기 쉽게 정리해서
데이터를 다시잡는 작업을 하는 중이고,
이 모든 과정은 md 문서로 변환되어 깃에 올라간다.
나름대로 깔끔하게 데이터가 잡혀가고 있어서
리팩토링의 어떤 기틀을 마련하고 있는 것 같다.
급할 거 없이 차근차근 제대로 작업해나가야지 뭐 ㅠ_ㅠ
원래가 규모가 큰 작업이었으니 말이다.
오늘 아침에 5시에 일어나려고 했는데 조금 힘들더라 ㅎㅎ.
오늘도 산본에 숙소를 잡았다. 오늘은 새로운 숙소라 조금 기대 되는데
가서 씻고 바로 자야겠다. 놀더라도 내일 놀자. 아니면 중간에 깨서 놀자
마침 피곤하니 다행이다. 원래 오늘 일찍일어나서 머리감으려고 했는데 대 실패~~~
운동
push up 12
BigInt Condenser 만들기
굉장히 큰 수를 다루는 게임에서는 그 수를 보여주는 것 역시 고역이다.
10000000000000000000000000000000000 를 그대로 보여주다간
예쁘지도 않고, 편하지도 않으며 , 이로 인해 몰입이 크게 깨질 수 있다.
그래서 필요한 것이 Big Int Condenser 다. ( 가칭 내가 붙임 )
10000000000000000000000000000000000 => 1.22L
등으로 나타내는 것이다.
999 다음은 1.0 A 고… 뭐 이런 식이다 ( 적어도 우리 회사 게임에서는 그렇다 . )
한 3일 전에 회사에서 개발을 끝냈는데,
집에 온김에 시간은 남고
기존의 1000 단위마다 알파벳으로 바꾸고 소수점 1자리수까지 표현하던 것을
n 자리수의 단위마다 알파벳으로 바꾸고 , 소수점 m 자리수 까지 표현 하는 함수로 확장했다.
대략 함수는 이렇게 생겼다.
// bigIntStr 는 큰 숫자의 스트링 값 예를 들어 "22222222324234352626309999999" 등.
/// condenseStandardLength 는 알파벳으로 묶을 단위 자릿수
/// decimalPlaceLengthToShow 는 표시할 소수점 아래 자리수 ( 만약 해당 숫자의 소수점 아래 자리수가 저 숫자보다 작다면 . 가능한 만큼만 보이도록 함)
public string Condense(string bigIntStr ,int condenseStandardLength = 3, int decimalPlaceLengthToShow = 1){ }
다음과 같이 급하게 테스트 해보았다.
public class TestBehaivour : MonoBehaviour
{
BigIntCondenser BICondenser = new BigIntCondenser();
// Start is called before the first frame update
void Start()
{
Test("414141111111634263461111111", 2, 3);
Test("11111111111111", 2, 2);
Test("115215352111111111111", 6, 5);
Test("135351353211111111111111", 2, 11);
Test("111111111352345235211111", 2, 300);
Test("1234567745643646534523532", 2, 0);
Test("115215352111111111111", 10, 5);
}
void Test(string bigInt, int node, int dp)
{
var result = BICondenser.Condense(bigInt, node, dp);
Debug.Log(bigInt + "," + node + " , " + dp + "-> to ->" + result);
}
}
테스트 결과는 마이너한 버그 빼고 성공적이었고,
다 고쳤다. ( 소수점 자리수 관련 문제. 언제나 인덱스는 날 헷갈리게 하지 @_@ )
정작 테스트를 위한 코드 짜면서 … 현자타임 왔다.
유닛테스트 공부해서 자유자재로 테스트코드 짜고 싶다 ㅠㅠㅠㅠ.
말로만 이럴게 아니라 바로 달력에 넣는다.
나름 재밌는 하루였다.
너무 무리한건 아닐지 모르지만 내일이 주말이니 다 괜찮다
알이즈웰!