Dictionary는 '특정 분류에 해당하는 객체를 모아놓은 집합'(이하 '사전')을 작성하기 위한 컬렉션으로, Key와 Value의 조합의 집합체로 구성된다. [리스트와는 다른 방식.]다만, 본문에서는 C#에서의 Dictionary 기능 보다는 Dictionary로 구현할 수 있는 '사전'이라는 구조 자체에 대해서 작성해 볼까 한다. [사전을 구현한다고 한다면 관련 데이터를 클래스로 묶어 리스트로 만드는 등, 다른 방식도 있기 때문.] 그 전에 C#의 Dictionary의 사용법 부터 확인하고 넘어가자면,C#의 Dictionary 사용법Dictionary dict = new Dictionary(); // Dictionary 선언dict.Add(key1, val1) ..
앞서, Day 9에서 콘솔창 UI를 다루는 방법에 대하여 서술한 바 있다.[Day 9 [콘솔창 UI 작업에 관하여] - URL: https://lsu0503.tistory.com/58]오늘은 이 사항에 대해서 추가로 알게된 부분이 있어, 간략하게 작성하고자 한다.[관련 사항은 Day 9에도 적용이 되어 있다.] 손쉽게 글자를 정렬하는 법day 9에서 콘솔창의 글자는 전각과 반각 모두 1칸으로 적용되기에, 전각과 반각이 같이 쓰일 경우, 혹은 띄어 쓰기에 의해서 동일 좌표에 대한 커서 위치가 불명확하다고 언급한 바 있다.때문에 콘솔창에서 우측 정렬을 하기 위해서는 전각 글자의 개수를 일일히 세어서 추가로 빼거나, 혹은 숫자나 영어가 아니면 추가로 감소시키는 방법을 제시했었다. 금일은 조금 다른 방법을 소개..
금주에는 개인 프로젝트로 TextRPG 게임을 제작했습니다.사실 전투가 들어간다거나 그런 거 까진 아니고, 그냥 던전 들어가면 확률 성공이 과제였는데, 원하는 기능을 추가하라고 해서 전투 시스템을 비롯한 몇몇 시스템을 추가해 버렸어요.좀 잠을 많이 줄여서 만들었긴 하지만, 나름대로 재미있었고 유익했던 시간이었던 거 같습니다. ※ 사실, 이 게임이 2주차 과제인데, 추석 3일 휴일으로 기간이 꼬여서 3주차에 작성하게 된 거랍니다. [그래서 잘못적었다가 수정했어요.] [Git URL: https://github.com/lsu0503/TextRPG_Project2nd.git] GitHub - lsu0503/TextRPG_Project2nd: Wonder to the Fallen StellaWonder t..
오늘은 제너릭에 대해서 정리해 볼 까 합니다.사실은 개략적으로는 알고있었지만, 안쓴 지가 꽤 되다 보니 가물가물해서...이번 프로젝트에 쓰이기도 했고 해서 정리를 해 보려고 합니다. 제너릭에 대하여제너릭이란 코드를 입력할 때 타입을 정하는 것이 아닌, 컴파일을 할 때 타입을 정하는 방식을 말하는 것으로, 타입 선언을 가변화 하기 위해 사용하는 기능이다.이러한 구성을 통해서 코드에 유연성을 더해줄 수 있고, 이 유연성을 통해서 재사용 능력도 높아지게 되는 기능이라고 보면 좋다.특히 인터페이스 같은 상속 요소의 역량을 높여줄 수 있는 기능이기도 하기 때문에 익혀둔다면 유용하게 쓰일 것이다. 제너릭 사용법public class Class: Interface{ public ValueType Function(va..
델리게이트도 인터페이스와 마찬가지로 처음 봤을 때에는 '저거 왜 쓰지?' 싶은 요소였다.그냥 함수를 대리해서 불러와서 사용할 수 있는 요소 정도로만 느꼈었고, 그렇게 내 기억에서도 흐려져 갔다. 그러다가 팀원의 '델리게이트 활용하면 이런 문제도 해결 가능하다'는 말에 한 번 검색 해 보았다.생각보다 훨씬 활용도가 높았다. '함수 포인터 하나로 할 수 있는 게 이렇게 많아진다니...!'라는 생각 까지 들었을 정도.그러니 오늘은 이 델리게이트의 사용 방법에 대해서 알아보자. 델리게이트 사용법delegate val_1 Delegate(val_2 param) // 델리게이트 선언val_1 Function_1(val_2 param) // 델리게이트로 포인팅할 함수 1val_1 Function_2(val_2 pa..
프로그래밍을 하다 보면 처리한 내용을 저장하거나 가져오는 용도로 파일 입출력을 자주 사용하게 된다.이럴 때 쓰이는 자주 쓰이는 것들이 json, xml, csv인데, 이 중 json으로 입출력 하는 방법에 대해서 서술해 볼 까 한다. ※ json 파일을 입출력하고 싶다면 System.Text.Json 패키지를 using으로 가져와야합니다.[정확히는 필수 까지는 아닌데, 관련 패키지 없이 진행하면 난이도도 그렇고 복잡도도 그렇고 엄청나게 뜁니다.]출력(저장)1. 저장할 자료들을 담고 있는 구조체 혹은 클래스를 제작한다.사실상 저장할 자료들을 선별하는 단계. 동시에 후술할 직렬화 과정과 더불어서 오류의 발생 원인 1위인 영역이다.이유는, 이 작업이 은근히 예민하기 때문. 잘못하면 nullException이..
콘솔창으로 게임을 만드는 경우, UI 제작이 상당히 난해하다.물론, 연습이 아닌 한에야 콘솔창으로 작업을 게임을 만들 일은 없겠지만, 굳이 게임이 아니더라도 활용할 수 있는 요인이기도 하기에 한번 정리 해 보고자 한다.Console.Write와 Console.Read에 관해서는 사전 지식에 해당하기 때문에 서술하지 않는다.[참고 URL: https://lsu0503.tistory.com/8] (사전 캠프) C# 기초 문법 톺아보기 - 1공부할 내용 [수업자료와 순서를 소폭 변경하여 구성하였습니다.]입출력반복문조건문배열클래스상속추상 클래스가상 메서드남은 내용인터페이스난수 생성문자열 처리참조형 인수 [out / ref]자lsu0503.tistory.com 1. Consol.SetCursorPosition(..
이전에 사전캠프에서 문법 톺아보기를 하면서 정리했었던 인터페이스를 더 자세하게 파고들어가 볼까 한다.[기초 문법 톺아보기 - 2 URL: https://lsu0503.tistory.com/12] (사전 캠프) C# 기초 문법 톺아보기 - 2공부할 내용 [수업자료와 순서를 소폭 변경하여 구성하였습니다.]인터페이스난수 생성문자열 처리참조형 인수 [out / ref]자료형 확인 및 캐스팅 [is / as] 인터페이스(Interface)클래스나 구조체를 'lsu0503.tistory.com 사용법은 위 글에 정리되어 있으니, 이 문서에는 활용법 위주로 작성한다. 1. 인터페이스는 다중 상속이 가능하다.기초 문법 톺아보기에서도 나왔던 요소. 하지만, 생각 보다 훨씬 유용한 기능이었다.단순히 인터페이스의 항목을 상..
※ 본 기획은 스파르타 코딩 클럽 내일배움 캠프의 과제로 활용하기 위한 기획입니다.※ 원래 과제에서 요구한 제목은 '스파르타 던전'이나, 임의로 수정하였습니다.※ 매니저님께 여쭤본 뒤에, 이거 유니티로 재작업 하면 어떠려나... 장르: 텍스트 RPG컨셉: [다크 판타지] [종교적] [소울라이크] [지역 별 스테이지 방식] 구성성리게임을 시작할 때 설정할 수 있는 요소. 캐릭터 특성이라고 봐도 무방하다.성리에 따라서 스킬이나 마법이 형성되기도 한다.스킬: 각 스킬 마다 스킬 카운터가 형성된다.마법: 각 마법 마다 잔량이 개별 적용된다.제약사항이 생기는 대신 그에 따른 이점을 부여한다. [아래는 그 예시.]다완의 다릴무기 슬롯이 3개로 증가한다.스킬 카운터 충전량이 2배.매 턴 다음 무기로 교체한다.쌍완의 ..

제작한 작품 목록자잘한 게임 및 코드들(숫자 맞추기, 계산기 등등)틱택토스네이크 게임블랙잭 [기본적인 룰(스플릿 제외) 만 적용] 틱택토[URL: https://lsu0503.tistory.com/53] Today I Learned - Day 6 [틱택토 제작하기]금일은 C#의 기본 문법에 대해서 공부하였습니다. 얼마 전 문법 톺아보기로도 한번 접했기도 한 지라, 전체적으로 복습한다는 느낌에 추가로 스파게티 코드 예방을 위해 '쉽게 알아볼 수 있게끔lsu0503.tistory.com해당 게임은 예외적으로 TIL로 작성되어 있습니다. 스네이크 게임코드 전문더보기 using System;using System.ComponentModel;using System.Data;using System.Diagnosti..