TIL

· 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문 판정식도 이상해서 공격템과 방어템이 하나 씩만 장착돼야 하는데..
· TIL/C#
오늘 구현한 기능 던전 입장, 던전 이지, 노멀, 하드 스테이지, 던전 클리어 화면, 던전 실패 화면, 캐릭터 사망 화면, 강화 기능, 강화 선택, 강화 화면, 강화확률, 비용 구현, 스테이터스와 연동 어려웠던 점 우선 플레이어가 죽었을 때 플레이어 클래스에서 함수를 불러왔어야 했는데 인터페이스를 상속받는 플레이어 클래스 안에 그냥 함수를 선언하니 다른 클래스에서 접근이 불가능했다. 그래서 인터페이스에 함수를 다시 선언하고 상속받는 플레이어 클래스에 다시 재선언하여 구현했더니 접근이 가능해졌다. 내가 생각하기엔 인터페이스의 특징이 무조건 인터페이스 안에 있는 것은 무조건 구현해야 한다는 것인데 이것이 선언뿐만 아니라 접근할 때도 무조건 인터페이스에서 선언한것만 접근이 가능한가보다. 강화기능을 구현할 때는..
· TIL/C#
오늘 구현한 기능 인벤토리 크기 맞춤, 인벤토리 크기 정렬, 상점 구현, 상점 구매, 판매기능 구현, 아이템 장착 개선(공격과 방어 아이템은 하나만 장착 가능) 구현 하면서 어려웠던 점 아이템이 적었을 때는 단순히 배열을 하나 더 만들어서 관리 했지만 나중에 가서 다른 함수나 클래서에서 이 데이터에 접근을 하려면 for문을 이용하여 각 객체마다 고유한 값을 가지고 있었어야 됐다. 이를 해결하기 위해 기존의 배열을 삭제하고 객체 지향적으로 클래스에 프로퍼티를 추가하여 해결했다. 상점에서는 구입을 하면서 리스트에 정보값이 넘어가야 하고 구입함과 동시에 각 장비의 공격력과 방어력만큼 플레이어의 스텟을 변화시켜야 하고 상태보기와 인벤토리 관리에 모두 데이터가 연동해서 출력되야 하는 부분이 굉장히 까다로웠다. 판..
· TIL/C#
구현목록 게임시작화면, 상태보기, 인벤토리, 장착관리 게임시작화면 상태보기 인벤토리 장착관리 내일 구현해볼 기능 , 회고 어떻게 하면 더 간결하고 보기 좋게 만들 수 있는지 고민해봐야 겠다.
Sh_Blog
'TIL' 카테고리의 글 목록 (9 Page)