지난 포스트에서 플레이어를 구현하였으니, 이어서 이번에는 플레이어가 마을과 필드에 입장하고, 몬스터와 전투를 진행하는 부분까지 구현해 보려고 합니다. 완성된 형태의 출력 결과물은 다음과 같습니다. 우선 메인 함수에서 EnterGame() 함수를 만들어서 게임에 접속시키는 기능을 구현해 봅시다. EnterGame() 함수에서 구현해야 하는 기능은 다음과 같습니다. 1) 마을에 도착 2) 필드로 갈 것인지, 로비로 돌아가서 다시 캐릭터 선택창으로 갈 것인지 선택. 3) 필드로 갔을 때 몬스터와 전투를 진행하기 (EnterField() 메서드를 만들어서 구현할 예정) static void EnterGame(ref Player player) { while (true) { Console.WriteLine("시작의..
c#
직업을 골라 보았으니 이제 본격적으로 캐릭터를 생성해 봅시다. 다음은 캐릭터의 직업을 고르고, 직업에 따라 공격력과 HP를 다르게 설정해 주는 코드 전문입니다. namespace CSharp { class Program { enum ClassType { None = 0, Warrior = 1, Rogue = 2, Mage = 3 } struct Player { public int hp; public int attack; } static void Main(string[] args) { while (true) { ClassType playerClassChoice = ChooseClass(); if(playerClassChoice != ClassType.None) { //캐릭터 생성 Player player;..
간단하게 c#을 복습하며 예전에 했던 TextRPG 만들기를 가지고 놀아볼까 합니다. rpg를 시작하려면 플레이어 캐릭터를 만들어야 하겠죠? 다음은 플레이어 직업 고르기를 위한 코드 입니다. 전체 코드 namespace CSharp { class Program { enum ClassType { None = 0, Warrior = 1, Rogue = 2, Mage = 3 } static void Main(string[] args) { ClassType playerClassChoice = ClassType.None; while (true) { playerClassChoice = ChooseClass(); if(playerClassChoice != ClassType.None) break; } } static ..
https://nybot-house.tistory.com/92#comment15051682 함수/메서드 컴퓨터 과학에서 함수란? 함수(function), 서브루틴(subroutine), 루틴(routine), 메서드(method), 프로시저(procedure)는 소프트웨어에서 특정 동작을 수행하는 일정 코드 부분이다. 즉, '특정한 작업을 위해 nybot-house.tistory.com 위 게시글에서 ref 와 out을 잠시 언급했었다. 메서드에서 ref 와 out 키워드를 사용하면 pass by value가 아니라 pass by reference가 된다. 이는 메서드가 전달된 매개변수 값을 수정할 수 있다는 의미이다. (잘 모르겠다면 https://nybot-house.tistory.com/49). 1..
별것은 아니고 간단하게 입출력 기능과 조건문 활용해서 가위바위보 게임처럼 구성해 봤습니다. 게임이라고 하기는 좀 민망하지만 갑자기 심심해서; namespace CSharp { class Program { static void Main(string[] args) { //0: 가위 1:바위 2:보 const int SCISSOR = 0; const int ROCK = 1; const int PAPER = 2; Random rand = new Random(); int aiChoice = rand.Next(0, 3); // 0~2 사이의 랜덤 값 int choice = Convert.ToInt32(Console.ReadLine()); switch(choice) { case SCISSOR: Console.Writ..
Instantiate, PhotonNetwork.Instantiate 일반적으로 유니티는 게임 오브젝트의 생명주기를 관리해 주기 위해 Instantiate와 Destroy 함수를 사용한다. public GameObject obj; void Start() { //Instantiate(생성할 오브젝트, position, rotiation) //Quaternion.identity = rotation이 (0,0,0)임을 의미 Instantiate(obj, new Vector3(0,0,0), Quaternion.identity); } 생성하려는 오브젝트는 Scene에 오브젝트로 생성되어 있어야 선택이 가능하다. 게임 실행 후 Hierarchy창을 보면, 선택한 게임오브젝트이름(clone) 이라는 명칭으로 복사 생..
4인 멀티플레이어 게임에서 플레이어 캐릭터는 총 16명이다 게임 서버를 공부한 사람이라면, 이 문장을 이해할 수 있어야 한다. 각 클라이언트의 게임 월드는 네트워크상에서 평행우주처럼 동작한다. 클라이언트: 서버에 접속하여 서비스를 제공받는 단말기(컴퓨터), 프로그램, 사용자를 뜻함. 다음은 4인 멀티플레이어 게임에서 각 클라이언트의 게임 월드 모습을 그린 그림이다. 그림에서 네트워크에 존재하는 게임 월드는 총 4개이다. 위 그림에서 게임 월드 속의 a, b, c, d는 플레이어 캐릭터로 동작하는 게임 오브젝트입니다. 여기서 플레이어 A가 직접 조작하는 플레이어 캐릭터는 a라고 가정해 본다면, A의 컴퓨터, 즉 클라이언트 A에서 동작하는 게임 월드에는 a, b, c, d라는 4명의 플레이어 캐릭터가 존재한..
빠른 알고리즘은 느린 알고리즘보다 우수하다! 하지만... 빠름과 느림의 종류는 굉장히 다양하다. 알고리즘의 스피드를 어떻게 전문으로, CS적으로 표현하면 좋을까? 두 가지 알고리즘을 비교하는 방법? A가 B보다 "조금", "많이" 빨라요 -> 애매모호함. 어떤 환경에서는 a가 빠르고, 어떤 환경에서는 b가 빠르다면 애매하고 무의미해짐. 즉 시간으로 표현해서는 안됨. ex) 내 컴퓨터는 최신 컴퓨터라 너의 컴퓨터에서보다 알고리즘 실행이 빠르다. 입력이 적은 구간과 많은 구간 사이에서 성능 차이가 확연히 나는 경우도 있음 ex) 출퇴근 할 때 지하철이 빠른가 버스가 빠른가? 회사가 가까울 경우 버스가, 거리가 멀 수록 지하철이 좋은 선택이 되는 경우와도 같음. 두 가지 경우가 강점을 보이는 경우가 다른 상황..