본문 바로가기

내일배움캠프TIL13

Text Dungeon - 세나몬 잡기 (5) 오늘은 발표 날이었다.진행한 프로젝트 내용에 대해 정리하는 시간을 가졌다.📜 이번 프로젝트에서 내가 담당한 기능1. 게임 시작 화면 구현     - 게임 시작 시 보여지는 화면 구현 2.  전투 시작 화면 & 플레이어 턴 구현    - 전투 시작시 보여지는 화면 구현     - 플레이어와 몬스터 간의 전투에서 플레이어의 턴을 구현 3. 치명타 기능 & 회피 기능 구현     - 플레이어 공격 시 치명타 & 회피가 뜨도록 구현 4. 스킬 기능 구현     - 플레이어 공격 시 스킬을 선택할 수 있도록 스킬 선택창 구현     - 플레이어 스킬 구현 5. 전투 중 포션 사용 구현     - 포션 사용 선택창 구현     - 전투 도중 포션 사용 구현 6. 전투 포기 기능 구현     - 전투 도중 포기 기.. 2024. 5. 7.
Text Dungeon - 세나몬 잡기 (4) 오늘은 게임 저장 기능을 구현하였다.개인 과제 때 게임 저장 기능을 구현한 경험이 있어 참고하여 구현했다. NuGet 패키지 관리 -> 찾아보기 -> Newtonsoft.Json" data-og-host="jeongeunji1127.tistory.com" data-og-source-url="https://jeongeunji1127.tistory.com/23" data-og-url="https://jeongeunji1127.tistory.com/23" data-og-image="https://scrap.kakaocdn.net/dn/PJqay/hyVZtdyPHY/4WhMmoqpgFVh6ffM3sMxO1/img.png?width=800&height=450&face=597_100_665_175,https://s.. 2024. 5. 3.
Text Dungeon - 세나몬 잡기 (3) 오늘은 코드 리팩토링을 진행하고 전투 포기기능, 전투 중 포션 사용 기능을 구현하였다. 코드 리팩토링우리 팀의 코드에 가장 큰 문제가 있었다.바로 중구난방으로 쓰인 static ....스크립트 간 쉬운 참조를 사용하기 위해 하나 둘 static을 사용하다보니 전체 코드가 static 범벅이 되어있었다. 팀 회의를 거치고, 튜터님의 자문을 얻어코드 리팩토링을 진행했다. 해결 방법 위는 우리 팀의 코드 파일이다우선 Manager폴더에 있는 여러 Manager 스크립트들을 총괄 관리해 줄 Manager.cs 스크립트를 생성하였다.이 Manager.cs의 인스턴스를 생성하고 그  안에서 각각의 매니저 스크립트의 생성자를 만들었다.  public class Manager{ private static Mana.. 2024. 5. 2.
Text Dungeon - 세나몬 잡기 (2) 오늘은 스테이지 구현을 담당했다. 스테이지 별 난이도 설정// 몬스터 확률int[] percent = { 0, 50 };Random random = new Random();if (stageNum == 1){ // 1층 - 3마리, 미니언 & 공허충 monsterCount = 3;}else if (stageNum == 2){ // 2층 - 3~4마리, 미니언 & 공허충 & 대포미니언 monsterCount = random.Next(3, 5); percent[0] = 40; percent[1] = 80;}else if (stageNum == 3){ // 3층 - 4~5마리, 공허충, 대포 미니언 나올 확률 up monsterCount = random.Next(4.. 2024. 5. 1.
Text Dungeon - 세나몬 잡기 오늘 내가 담당한 기능은 전투 스킬 구현이다. 회피 & 치명타 기능public static bool IsEvasion(){ Random random = new Random(); int percentage = random.Next(1, 101); if (percentage  - Random 함수 사용- 1~100 사이의 숫자를 뽑아 그 숫자가 확률보다 작거나 같으면 회피- 치명타 함수도 위와 같은 구조로 구현 (치명타 확률만 15%로 조정)  스킬 구현 public static void PlayerSkill(List monsterNum, int skillNum) { Console.Clear(); Console.WriteLine("Battle!! - 나의 턴\n"); C.. 2024. 4. 30.
[C#] Internal Class 비주얼 스튜디오를 사용하면서 궁금증이 생겼다. 새 스크립트를 생성하면  Program 클래스가 다음과 같이 internal class 로 생성이 된다.직접 코드를 작성할 때엔 public이나 private로 선언하여 쓰는데internal class로 그냥 써도 되는건지? 어떤 경우에 쓰이는지 궁금했다. 접근제한자더보기클래스, 필드, 메서드 등의 접근 가능한 범위를 지정. 지금까지 내가 알던 접근 제한자는 public, private, protected 세가지이다 public은 어디서든 접근 가능private는 클래스나 구조체 내에서만 접근 가능protected는 클래스나 구조체 & 상속받은 자식 클래스에서만 접근 가능 그러나 접근제한자에는 internal이라는 제한자도 존재한다고 한다!  Internal.. 2024. 4. 29.
[Algorithm] 정렬 알고리즘 선택 정렬1. 가장 작은 데이터를 선택 2. 맨 앞에 있는 데이터와 바꿈3. 그 다음 작은 데이터를 선택4. 앞에서 두 번째 데이터와 바꿈 -> 배열 끝날 때까지 반복 - 선택 정렬의 시간복잡도 : O(N^2)     -> 매우 비효율적 - 공간 복잡도: O(1) int[] arr = new int[] { 5, 2, 4, 6, 1, 3 };for (int i = 0; i 삽입 정렬- 특정한 데이터를 적절한 위치에 삽입 - 두 번째 데이터부터 정렬, 자기보다 작은 데이터를 만나면 바로 그 오른쪽에 삽입- 기준 데이터의 왼쪽에 있는 데이터들은 이미 정렬이 된 상태!!- 시간복잡도 : O(N^2)     -> 데이터가 거의 정렬되어 있는 최선의 경우 퀵정렬 보다 빠르고 O(N) 의 시간복잡도 - 공간 복잡도.. 2024. 4. 26.
[C#] 데이터 저장 C# 게임 저장- 앱을 껏다 켜도 사용되던 정보 유지- 파일 저장 & 파일 불러오기 Newtonsoft.Json을 사용하여 구현하였다. Newtonsoft.Json 설치 방법프로젝트 -> NuGet 패키지 관리 -> 찾아보기 -> Newtonsoft.Json 검색 & Install 코드 설명using Newtonsoft.Json;설치 후 위 구문을 통해 Newtonsoft.Json을 사용할 수 있다.  public static string path = "C:\\UnityProjects\\SpartaDungeon\\SpartaDungeon\\SpartaDungeon\\Json";먼저 내 컴퓨터에 Json 데이터 파일들을 저장할 폴더 경로를 설정한다.  bin > Debug  > net 8.0 위치에 생성되.. 2024. 4. 25.
[C#] 인터페이스 인터페이스- C#은 다중 상속 지원 X     -> 인터페이스는 다중 상속을 지원해줌- 이름 정의시 앞에 I를 붙이는 규칙을 가짐- 다른 클래스에서 해당 인터페이스를 구현하여 동일한 기능을 공유     -> 코드의 양이 많아질수록 효율성 증가interface IMyInterface{ void Method1(); int Method2(string str);}class MyClass : IMyInterface{ // 반드시 클래스 내에서 구현해주어야함 public void Method1(){} public int Method2(string str){return 0;}}static void Main(string[] args){ IMyInterface object = new My.. 2024. 4. 24.