본문 바로가기

분류 전체보기

(96)
[C#] 클래스, 직렬화, 메서드 수식자 이번 주차에 진행한 개인프로젝트를 돌아보며 쓰는 회고록 겸 추가로 궁금했던 사항들에 대해 정리하는 글이다.  목   차  GPT가 알려주는 C# 코너상속, 추상클래스, 인터페이스 각각을 사용할 상황.지난 금요일(24.04.26)에 튜터님한테 배운 내용을 생각해보니, 내가 아직 클래스들에 대한 이해도가 부족한 것을 느끼고 이에 대해 다양한 예를 들어 물었다. #일반 부모클래스ex) 사람 클래스의 자식 클래스로 학생 클래스, 직장인 클래스가 있을 수 있지만 둘 모두에 속하지 않는 사람도 존재해야 할 때.공통의 기능이 있는 경우: 부모 클래스의 메서드/속성을 자식이 이어받게.확장성이 필요할 때 구체적 관계 표현#추상 클래스ex) 사람 클래스를 직접적으로 사용하지 않고 만약 현재 만들어진 클래스 중 내가 만드려..
[TIL 24.04.26] 개인 프로젝트: 스파르타 던전(完) 과제 제출이 끝난 후 우리조에서 서로의 코드를 보며 리뷰를 했다. 이번 글은 그 와중에 배운 내용에 대해 쓴다. 목   차 #regionVS Community에서 범위를 정해 토글을 만들 수 있는 기능이다. 비트 플래그(bit flag)enum eEquipType { HELMET = 1, CHESTARMOR = 2, AMULET = 4, WEAPON = 8}위와 같이 enum의 값을 2진수로 표현할 수 있게 2의 제곱수들로 열거를 하는 방식이다. 강동욱 튜터님은 실무자들도 잘 안쓰는 경우가 많기에 주의하라고 하셨다. 생성자를 받아오는 또 다른 방법이건 몰랐다기보단 반쯤 잊고 있는 방법이라 default 매개변수랑 함께 연결해서 설명한다. 생성자의 가장 마지막 인자부터 n개의 변수에 (in..
[TIL 24.04.25] 개인 프로젝트: 스파르타 던전(2) 목   차 이벤트 처리이벤트 하는 법이벤트 핸들러를 Namespace에 선언한다. (public delegate void [이벤트 핸들러 이름] (매개변수) )[객체1] 에서 이벤트 변수를 선언한다. ( public event [이벤트핸들러 이름] [이벤트 이름] )[객체1]에서 필요한 곳에 이벤트를 발생시킨다. ( [이벤트]?.Invoke(전달할 변수) )[객체2]에서 이벤트를 통해 어떤 상호작용을 할건지 그 함수를 작성한다.[객체1].[이벤트] += [객체2].[이벤트 작동함수] 를 통해 이벤트가 전달되도록 한다. 버그 리포트1-Console.Clear()상점에 아이템을 9개 가량 추가했는데 이게 화면에 모든 글씨가 나오지 않는다면 Console.Clear()가 작동하지 않는 문제가 있다. 사용해본 ..
[TIL 24.04.24] 개인 프로젝트: 스파르타 던전(1) 이번 주차에는 스파르타 던전을 혼자서 한 번 만들어보고, 이걸 기반으로 발전시켜 다음 주차에 팀프로젝트를 진행할 예정이다. 목   차 플레이어 클래스모든 개인 저장데이터는 결국 여기로 모여 Player 객체 하나만 저장하면 게임 전체가 저장이 될 것이다. 또한, 플레이어 참조를 통해서 플레이어에서 선언된 객체들끼리도 상호작용이 가능하다.아이템 자료구조내 게임에 있는 아이템 데이터가 어떤 구조로 되어있는지 설명한다. 아이템 클래스아이템 객체를 생성하고 아이템이 속성을 보유하게 해주는 클래스이다. 여기에는 5개의 필드가 있는데, 다음과 같다:public ItemType type { get; set; }string itemName { get; set; }int typeValue { get; set; }int ..
[TIL 24.04.23] 3주차 과제1: Snake Game 3주차의 첫 번째 과제인 뱀 게임이다. 문제에서 기본으로 제공되는 코드소스가 있긴 했으나, 그것과 강의내용만으로는 초보 개발자가 이 과제를 이루기가 힘들 것 같다는 생각을 했다. 또 3주차 과제의 해설은 참고한 적이 없고, 기본제공된 코드소스의 일부 역시 임의로 수정했기에 해설과는 다른 점이 있을 수 있다. (당신이 코딩 뉴비라면)이 글은 맨 위에서부터 차근차근 읽기보다는 필요할 때마다 글의 위 아래를 오가면서 클래스끼리 어떻게 상호작용을 하게 되는지 따라가며 읽는 것을 추천한다.   목   차 $(function(){ $("#toc").toc({ content: ".tt_article_useless_p_margin", ..
[TIL 24.04.23] 2주차 과제2: Tic Tac Toe C#문법 종합반의 과제로 나온 2번째 문제, Tic Tac Toe를 내가 직접 구현한 내용이다. 이 코드는 어제 구현했지만, 정리는 하지 못한 관계로 오늘 작성한다. 목 차 코드 개요 틱택토는 Player1과 Player2가 번갈아가며 3 * 3의 보드에서 한 칸을 자신의 표식으로 물들이고, 최종적으로 먼저 한 줄 빙고를 만드는 사람이 이기는 게임이다. 추가적으로 비정상적인 입력(ex: 이미 입력한 부분을 다시 입력하거나 아무것도 입력하지 않고 Enter를 칠 때 등.)시 패널티로 차례가 상대에게 넘어간다. 우선, 내가 만든 코드에는 전역에서 선언된 변수가 하나 있다. //틱택토 보드의 각 칸에 들어가는 값에 대한 배열. static char[] boardArr = { '1', '2', '3', '4',..
[TIL 24.04.22] 1주차~2주차 강의 필기노트 .목   차 1주차 강의            1.클래스, 매서드, 변수 등의 이름 입력할 때 Tab으로 자동완성 가능.             Console.WriteLine("C#");             2.메서드나 변수 입력 도중 자동완성이 끊겼다면, Ctrl + Space로             IntelliSense 부르기.             Console.WriteLine("Study");             3.코드 템플릿을 사용하여 더 빠른 코드 가능.             for (int i = 0; i             {                 코드 템플릿(Tab 2회)으로 만든 for문.             }             4. Debug 모드 vs Rele..
[TIL 24.04.19] ChillySauceCode 회고록 목   차 팀원 소개 팀장: 정승연우선 저에 대해 간단히 소개하겠습니다. 캠프에 오기 전에는 주로 C++ 알고리즘을 공부했고, 이번 캠프를 통해 팀플 경험을 쌓고 싶어 참여하게 되었습니다. 팀장으로써 팀 SA 노션을 정리하고, 프로젝트의 방향성을 설정하고 각 팀원의 작업을 조율하는 역할을 맡았습니다. 이번 프로젝트에서는 주로 에셋 찾아오거나 만들어오기와 UI 구현, SFX 작업을 맡았습니다. 구현한 UI로는 매칭 판넬과 시도횟수 판넬, 시간 슬라이더, 레벨 증가 시의 방해물 생성, 인게임 화면 구성과 영선님이 만들어주신 스타트 화면의 UI 개선이 있습니다. 또 구현한 효과음에는 버튼 클릭 시의 효과음, 게임 스타트 음, 카드 뒤집을 때의 flip 소리, 카드매치 성공 시와 실패 시의 각기 다른 효과음, ..
[TIL 24.04.18] 추가 이펙트 + 팀원의 코드 리뷰 .목   차 레벨 올라갈 때 효과 추가Unity에 올라와 있는 무료 에셋을 사용했다. 밑의 2개의 효과는 하나의 에셋 안에 함께 있었다. Explosion 효과 추가Level 2 이상부터 나오는 방해 이펙트이다. 폭발음과 함께 애니메이션이 등장하며, 잔여물을 남겨서 화면을 살짝 가리게 했다. 처음에는 한 번에 여러 개가 나타나게 했으나, 효과가 거의 없는 것 같아 Invoke를 활용해 3번에 걸쳐 나타나게 했다. 그리고 레벨이 오를수록 Explosion 효과가 나타나는 개수를 늘렸다. Fireball 효과 추가Level 4에서는 추가로 파이어볼이 0.2초에 한 번씩 x좌표 랜덤 위치에서 떨어지게 됐다. y 6에서 생성되어 떨어지기 시작하고, y가 -6이 되면 Destroy 함수를 이용해 사라지게 했다. ..
[TIL 24.04.17] 인게임 UI 개선 + 코드 리팩토링 오늘은 UI 작업과 클린코드로 바꾸기 위주로 했다.  목   차 UI 변경더 깔끔한 UI로 바꾸어 사용자가 보기 편하게 했다. 필요한건 추가하기도 했다. 그리고 배경화면에 쓸 이미지를 찾아오고 인게임 화면은 내가 직접 바꿨다. 아웃라인과 쉐도우 변경스타트 씬에서는 Pause 버튼, 제목, 스타트 버튼, 그리고 가운데에 계속 바뀌는 카드 3개에 각각 Outline 컴포넌트와 Shadow 컴포넌트를 추가해 깔끔한 UI를 만들었다. Main씬에서는 일부는 Outline을 추가해주었지만, 일부는 그림자만 넣는 편이 더 깔끔해서 Shadow만 있다. 마찬가지로 Pause버튼도 추가해주었고, 끝 판넬의 요소들에도 필요한 요소를 추가해주었다. 대기중 화면 배경색은 흰색인 편이 더 깔끔한 것 같아 흰색으로 바꾸어주고 ..
[TIL 24.04.16] 카드 매치 & 효과음 +Notion 게임의 기본적인 틀은 모두 구현했으니 이제 미니 프로젝트를 하면서 구현하라고 한 과제들을 수행할 시간이다. 목   차 내가 구현한 기능 목록.조원과 함께하는 프로젝트에서 내가 주가 되어 구현한 기능들로, 다른 사람이 업로드한걸 아주 약간 수정해주는 것은 생략했다. 서로서로 업로드 미스가 났거나 실수한 것을 자기가 수정하다가 conflict 날까봐 간단한 문제들은 수정해야 하는 스크립트를 현재 작성중인 사람에게 대신 부탁하는 식으로 매꿨다.  카드 매치 사인 만들기.1쌍의 카드를 선택했을 때 같다면 그 카드 주인의 이름을, 틀렸다면 "실패..." 사인을 출력하는 기능이다.#UI 구현처음에는 MainScene의 한가운데에 구현을 하려 했으나, 그렇게 하면 내가 방금 뒤집은 카드가 뭐였는지 확인할 수 없는 문..
[TIL 24.04.15] 첫 협업-카드뒤집기 카피캣 이미 해본 적 있는 스파르타 게임개발종합반의 강의 내용을 토대로 4인의 조원이 각자 역할을 맡아 자기 파트를 개인 브랜치에 업로드한 후, Main에 합치는 작업을 했다. 내가 맡은 파트는 에셋 수정과 BGM 작업이다. 목 차 에셋 작업 이 작업은 사실 제일 간단해서 가장 빨리 끝났다. Zep에 있는 조원들의 캐릭터와 Slack에 있는 프로필 사진을 3:4 비율에 맞게 수정해서 공유방에 업로드하기만 하는 되는 작업이었다. 이외의 것은 아직 논의된 것이 없거나 기본 제공된 것을 사용하기로 했기 때문에 바로 다음 작업으로 넘어갔다. 음악 삽입하기 BGM 삽입하는 법 복습하는 차원에서 5주차 BGM 부분을 정리한다. 음원은 스파르타에서 제공한 것을 우선 그대로 가져다 사용했다. #flip 소리 삽입하기 Card..
[2D 플랫포머] Raining Money 스파르타코딩클럽에서 제공된 게임개발종합반의 여러 예시에서 배운 것을 응용해 만들어보는 게임이다. 최대한 배운 모든 요소를 활용하려 한다. 우선, 이 글에서는 1주차 강의의 내용만을 활용해 게임을 만든 후, 새 주차마다 배우는 내용을 덧붙이는 방식으로 게임을 보완해 나가겠다. 목   차 1. 기본 씬 구성처음 Unity를 켜고 하는 기본적인 세팅 방법이다. 레이아웃 및 기본 세팅프로젝트 생성 후 레이아웃 2 by 3으로 바꾸기.project를 one column layout으로 하기.SampleScene을 MainScene으로 이름 바꾸기Game 씬 사이즈 바꾸기: Phone 세로사이즈(760 * 1280)유니티 개발 화면 개념Scene: 실제 게임의 구성요소를 보는 곳. 실질적인 게임 개발 씬.Game:..
[C++, C#] C#과 다른 컴퓨터 언어의 차이점들5~7(完) 이번 글의 코드는 기초적인 구현에 시간낭비하지 않기위해  ChatGPT를 활용해 작성된 코드가 많다. 목   차   5. 배열 배열의 선언c와 cpp는 선언을 다음과 같이 한다:int intArr[5]; c#과 java는 선언을 다음과 같이 한다:int[] intArr = new int[5];new int는 cpp에서 동적배열을 할 때 사용했지만, 여기서는 오히려 5 대신 변수를 넣어버리면 C#은 오류가 난다. java는 그대로 이용하면 되지만 c#에서 동적배열을 쓰고 싶다면 cpp에서 vector와 비슷한 기능을 하는 List를 써야한다. 여기서 T는 type을 의미하며, T 대신 int 등 자료형을 입력하면 된다. 한편, 파이썬은 정적배열과 동적배열의 분리가 딱히 없다.my_list = []my_li..
[C++, C#] C#과 다른 컴퓨터 언어의 차이점들3~4 연산자와 제어문은 프로그래밍의 기본이다. 그에 따라 거의 모든 언어가 비슷한 연산자와 제어문을 공유한다. 따라서 프로그램 언어가 처음이라면 노션에서 배울 항목은 많아도, 이미 다른 언어를 어느정도 배운 적이 있다면 이 챕터들은 아마 수월하게 배울 수 있다.목   차 3. 연산연산자는 거의 모든 언어가 공유한다. 내가 배운 언어들(C, C++, C#, java, python)은 파이썬을 제외하고는 거의 차이가 없다고 봐도 무방하다.  이건 산술연산자, 논리연산자나 비트연산자 모두에 해당하는 이야기다. 특히 비트연산자는 다 같은 것으로 알고 있다. 산술연산  +, -, *, /, %, ++, --는 보기의 모든 언어가 공유한다. 어셈블리는 *, /, %가 함수로 구현되고, 파이썬은 추가로 //(정수연산)과 ..
[C++, C#] C#과 다른 컴퓨터 언어의 차이점들1~2 내가 기존에 알고 있던 C++언어 중에 몰랐던 것을 기술하는 글이다. VS Community의 '콘솔앱' 템플릿 차이 는 일부 생략한다. 목   차 1. 시작하기첫 프로그램 만들기 using System; class Program { static void Main(string[] args) { Console.WriteLine("Hello, world!"); } } 1. 원래 cpp에서도 using이 있긴 했지만, 주 #include를 통해 각종 기능을 추가했었다. 이 기능이 C#으로 오면서 using으로 바뀐듯 하다. 원래 cpp에서도 using이 있긴 했지만, 나는 "using n..