분류 전체보기

· TIL/잡담
이번주는 팀원들과 같이 콘솔로 게임을 만드는 프로젝트를 진행했다. 팀은 총 4명으로 팀장인 나와 팀원 3명으로 구성됐다. 팀원들은 우선 협업과 코딩이 미숙하다고 먼저 답해주었다. 그 후 팀원과 대화를 나누며 프로젝트를 어떻게 진행할지 생각해봤다. 고민했던 점 1. 클래스를 하나로 두고 기능을 담당하는 함수를 모두 적을까 ? -> 그렇게 되면 Git에서 병합을 할 때 엄청난 충돌과 너무 많은 코드 양 때문에 오히려 프로젝트 진행이 안좋아질 수 있다. 2. 그러면 싱글톤 패턴을 적용해서 클래스를 세분화하여 관리할까? -> 그렇게 하면 클래스와 인터페이스를 이용해서 간단하고 깔끔하게 관리할 수 있고 객체의 불안정성을 해결할 수 있다. 하지만 코딩이 미숙한 팀원이 싱글톤 패턴을 이해하고 잘 사용할 수 있는지에 ..
· TIL/C#
List를 쓰는 이유 List는 배열과 유사한 기능을 가지고 있다. 그렇다면 왜 리스트와 배열이 나눠져있을까? 여기서 가장 중요한 차이점은 배열은 동적 크기 할당이 불가능하고 리스트는 동적 크기 할당이 가능하다. 더군다나 리스트는 배열과 비교해서 입출력이 더욱 자유롭다. List와 Array의 성능 차이 앞서 말한 내용만 봐서는 무조건 리스트를 쓰는게 이득이라고 생각하지만 성능으로 비교를 했을 때 배열이 더 나은점도 있다. 배열은 리스트에 비해 메모리가 효율적이고 속도가 굉장히 빠르다. 하지만 고정된 크기의 공간을 할당으로 인하여 메모리 낭비가 심하다. 리스트는 배열에 비해 메모리가 비효율적이고 속도가 느리지만 동적할당이 가능하고 입출력이 자유롭다. 참고로 메모리와 메모리 관리는 다른 관점이다. 결론 L..
· TIL/C#
Dictionary란? 키와 값으로 이루어진 컬렉션이다. 선언 추가 Key값으로 Value 불러오기 사용하는 이유 컬렉션을 만드는 과정이면 그냥 List를 쓰면 해결될 것이라고 생각할 수 있다. 하지만 List의 큰 단점은 무조건 인덱스 "번호"로만 값을 얻을 수 있다는 것이다. 그럴 때 Dictionary를 사용한다면 본인이 원하는 형태의 타입을 키 값으로 지정하여 필요로 하는 값을 불러올 수 있다.
· TIL/C#
Random 일반적으로 확률이나 난수를 생성할 때 쓰는 기능이 Random 이다. Random 변수명 = new Random(); 으로 선언하여 사용하며 변수명.Next()로가 자주 쓰인다. 예를들어, 변수명.Next(0, 5) 라고 한다면 0부터 5까지 즉, "0, 1, 2 ,3, 4" 중에서 랜덤하게 값이 나온다. 하지만 특정 값을 제외하고 난수를 생성해야만 하는 때가 올것이다. 나같은 경우엔 몬스터가 여러마리 있을 때 랜덤한 두 마리를 공격해야 하는 기능이 제시됐는데 몬스터가 죽어버린다면 난수를 돌릴 때 죽은 몬스터 인덱스는 제외해야한다. 하지만 위에 기능대로 사용한다면 불가능하다. 그래서 나는 구글링을 하여 방법을 알아냈다. var deadExclude = new HashSet(); // 죽은 몬..
· TIL/C#
일반적으로 5 / 10을 코드로 입력하여 실행해보면 0이 나온다. double val = 5 / 10; 출력 값 : 0 하지만 double val = 5 / (double)10의 형태로 나눠 준다면 값이 소수까지 나오게 된다. 출력 값 : 0.5 이것을 반올림하거나 올림, 버림을 하고 싶다면 반올림 Math.Round(val); 올림 Math.Celling(val); 버림 Math.Truncate(val); 반환 값은 double이기 때문에 필요에 따라 캐스팅을 진행해야 한다.
· TIL/C#
알고리즘 기초 문제들을 풀다보면 String값을 사용하는 문제들이 굉장히 많다. 그래서 이번에 String 변환에 대해 정리하고자 한다. 숫자 문자열을 int값 변환 string val1 = "12345"; -> int val2 = int.parse(val); 문자열을 char값 변환 string val1 = "123abc"; -> char val2 = val1[n]; 문자열 원하는 길이의 값 얻기 string val1 = "123abc"; string val2 = val1.Substring(0, 3); -> index 0번째 부터 3칸 (val2의 값은 "123") 역순서는 (length, - n); (
· TIL/C#
LINQ 란? 데이터 질의 기능을 가능하게 하는 것 즉, C#에서 배열, 컬렉션, XML, DataSet의 데이터를 가져오고 싶을 때 람다식으로 가능하게 한다. 사용법 int[]arr = new int[] {"1, 2, 3, 4, 5"};나는 이 배열에서 3을 뺀 배열을 만들고 싶다 !-> int[]arr2 = arr.where(x => x != 3).ToArray(); 원래대로라면 굉장히 복잡한 단계를 거쳐야 만들 수있는 과정을 람다식 하나로 깔끔하게 해결할 수 있다. 나도 마찬가지로 코딩을 처음 시작하는 사람이 봤을 때 람다식은 정말 복잡하고 어려운 것 처럼 보인다. 그래서 잘 안쓰게된다.하지만 모든 기능은 간편하라고 만든것이다. 개발자들의 노력을 헛되이 하지 말자. 내일 할 것 LINQ와 같은 좋은..
· TIL/C#
오늘은 콘솔로 만드는 RPG 게임 개인과제를 마무리하는 날이다. 오늘 한 것 버그 목록 작성 후 수정, 함수들을 클래스로 세분화 버그 목록 1. 스테이지 실패 시 플레이어 체력의 반을 깎아야 하는데 플레이어의 고정체력이 아닌 실시간으로 변하는 체력 기준에서 반을 깎아버림 -> 고정된 HP50을 깎도록 수정 (기존 최대체력 100) 2. 아이템을 장착할 때 공격템을 처음 장착할 때, 방어템을 처음 장착할 때, 공격템을 장착 후, 다른 공격템을 장착할 때, 방어템을 장착 후 다른 방어템을 장착할 때, 공격템을 장착 후, 방어템을 뺄 때, 방어템을 장착 후 공격템을 뺄 때 이러한 경우를 잘 고려해서 코드를 짰어야 했는데 쓸데없는 코드가 있고 if문 판정식도 이상해서 공격템과 방어템이 하나 씩만 장착돼야 하는데..
Sh_Blog
'분류 전체보기' 카테고리의 글 목록 (24 Page)