
Project. 1 Minute레퍼런스 게임 : 60 Second!
다음 주에 있을 마지막 콘솔 프로젝트를 대비하여 간단히 curScene을 활용한 게임 진행을 구현하였다. 가장 1순위로 고려한 것은 확장성으로, 컷씬을 추가하는 것으로 신규 이벤트를 적용되도록 하고자했다. 아이템은 레퍼런스 게임 그대로 가져왔으며, 통조림과 물은 체력으로 대신하여, 이벤트 진행과정에서 닳도록 구현했다.
Mainstatic void Main(string[] args)
{
Game.Start();
Game.Run();
Game.End();
}
Game 클래스에서 구현한 Start , Run, End로 구성했다.
Gamepublic static class Game
{
public static int livPer;
public static bool gameOver;
public static List<string> items;
public static Scene CurScene;
public static Dictionary<String, Scene> _sceneDic;
public static Player player;
public static Player Player
{
get { return player; }
set { player = value; }
}
}
FieldlivPer : 이벤트가 지날 때마다 증가하며 livPer에 따라 탈출 이벤트 등장이 결정gameOver : 게임 오버 조건items : 초기 아이템 선택 화면을 구현하기 위한 아이템 목록CurScene : 이벤트 및 초기 화면 등의 컷씬을 의미sceneDic : 컷씬을 모아놓은 Dictionaryplayer : 플레이어의 체력을 구현하기 위한 player 인스턴스MethodStart() : 게임 초기 설정. 타이틀 컷씬 및 아이템 추가 기능 등이 포함Escape() : livPer에 따른 탈출 이벤트 등장 함수RandomScene() : 랜덤 이벤트 생성GameOver() : gameOver에 따른 문구 출력Run() : 이벤트 구동 순서 설정Playerpublic class Player
{
public List<string> inventory;
public int hp;
public void Print()
}
Fieldinventory : 플레이어의 인벤토리로 최대 4개의 아이템을 선택할 수 있다.hp : 플레이어의 체력. 3칸의 체력이 주어진다.MethodPrint : 플레이어의 인벤토리와 체력을 출력Scenepublic abstract class Scene
{
protected ConsoleKey _key;
public abstract void Render();
public abstract void Choice();
public virtual void Input()
public abstract void Result();
public void Wait()
public abstract void Next();
public void ChoiceAgain();
}
Curscene의 경우 추상 클래스 Scene을 구성하여 이벤트마다 반드시 필수 Method를 구현하도록 설정했다. 이벤트 진행 순서는 Method 순서와 동일하다.
MethodRender() : 이벤트 상황 설명 스크립트 출력Choice() : 상황에 따른 플레이어 선택지 출력Input() : 플레이어 선택 입력Result() : 입력 값에 따른 결과창 출력Next() : 결과에 따른 랜덤 이벤트 발생ChoiceAgain() : 아이템 보유 여부에 따른 재입력 설정Git이번 프로젝트는 혼자 진행한 것이 아닌, 1명의 협업자와 함께 했기에 Git과 Git-Hub 사용법을 익혀야했다.
Git, Git-Hub이전에 정리했듯이, 가장 많이 사용되는 버전 관리 시스템(VCS)으로 버전 별로 자료를 관리하여 백업 등 여러 돌발상황에 대비할 수 있는 시스템이라고 보면 된다. Git-Hub는 Git을 관리하는 서버로 우리는 자료를 Git-Hub에 Push 할 수 있고 Pull을 하여 가져올 수 있게된다.
Branchbranch는 협업시 많이 사용되는 것으로, 원래 코드와는 상관없이 독립적으로 개발을 진행하기 위해 독립적으로 개발하는 것이 브랜치이다. Git-Hub에서 Pull을 통해 소스코드를 가져왔을 때 해당 데이터는 원본데이터가 된다. 이때 원본 데이터에서 작업하는 것은 굉장히 위험한 일이기에 우리는 branch라는 사본을 만들어 작업을 하는 것이다.
Commit, Pushbranch에서 작업을 하면서 변경사항 등을 로컬 저장소에 반영하는 것을 commit이라고 하며, 해당 commit들을 Git-Hub의 원격 저장소에 반영하는 것을 Push라고 이해하면 편하다. 커밋은 언제든 할 수 있으며, 푸시를 통해 원격 저장소에도 사본(branch)을 생성하여 푸시를 하는 것이 가능하다.
Pull Requestbranch를 푸시할 경우 Git-Hub 홈페이지와 IDE에서 Pull-Request를 진행할 수 있는데, 이는 자신이 작업한 내용을 원본에 반영해달라는 의미로 이해하면된다. 협업자들끼리 해당 PR을 보면서 반영할지 말지 결정하고, 반영하기로 결정했다면 원본 데이터에 병합(Merge)하면 되는 것이다.
협업시 지켜야할 가장 중요한 것은 확실한 분업과 branch 생성이다. PR을 반영하여 원본데이터가 업데이트 됐다면, 작업을 하기 전에 반드시 원격에 저장된 원본 데이터를 Pull로 로컬 저장소의 원본에 업데이트 시켜야하며, 업데이트 된 원본 데이터를 기준으로 브랜치를 생성하여 작업하는 것이 중요하다. 또한 Merge-Conflict를 방지하기 위해 미리 작업을 분할하여 맡아야 할 것이다.
1 Minute Git-Hub게임의 원본 코드는 아래의 링크에서 확인할 수 있다.
Git Link
레퍼런스 게임 : 60 Seconds!