I'm FanJae.
[C# 리마인드] 콘솔 스네이크 게임 만들기 본문
1. 시작에 앞서
꽤 긴 연휴 기간이었다.
수업이 있는 5월 4일. 이전까지 도전해 볼 만한 것이 무엇이 있을까 생각하다가 스네이크 게임을 구현하기로 했다.
수업 진도상 클래스를 이제 막 다루기 시작했지만,
이전에 C++을 했던 경험도 있고, Unity도 다룬 적이 있기에 큰 무리는 없었다.

2. 주요 클래스 설명
1) 스네이크
- 스네이크는 자신의 몸 정보와 자신이 현재 이동 중인 방향 정보를 가진다.
- 자신의 몸 좌표 값 정보, 이동 중인 방향 교체, 다음에 뱀의 머리가 가는 위치 등의 메서드를 제공하도록 처리하였다.
- 이동 관련 메서드는 기본적으로 앞쪽 머리를 추가, 뒷쪽 꼬리를 삭제하는 방식으로 처리하였다.
- 먹이를 먹었으면, 뒷쪽 꼬리가 삭제되지 않는 방식으로 길이가 늘어나는 방식이다.
2) Node & MyList
- C#에서 List를 제공하지만, 연결 리스트의 구현을 연습하기 위해서 직접 만들었다.
- 맨 앞쪽 데이터 추가, 맨 뒷쪽 데이터 삭제 방식으로 처리하였다.
3) Board
- 게임 보드판이다. 자신의 보드판과 행,열 크기, 먹이 위치 랜덤 출력을 위한 Random 클래스, 상하좌우 머리값에 따른 출력표 정보를 가지고 있다.
- 게임 보드판 내 있는 벽,먹이,스네이크의 몸체 정보를 확인 가능하다.
- 게임 보드판을 출력하는 기능과 먹이를 만드는 함수도 이곳에 있는데 이는 분리할 여지도 있다.
4) Game
- GameManager로, gameBoard 객체와 Snake 객체의 정보를 가지고 있다.
- 입력이 있는 경우 Snake에게 방향 조정을 요청하고, 게임 관련 정보를 Board에서 받아와 처리를 진행하는 방식으로 처리하였다.
3. 클래스 다이어그램 (주요 기능 관점)

- 주요 기능 관점으로 보면, 다음과 같은 형태로 이뤄져있다.
- Game에 대해 Board와 Snake는 has-a 관계이며, Snake는 MyList와 has-a 관계이다.
4. C# Source Code
- https://github.com/fanjae/SnakeGame
GitHub - fanjae/SnakeGame: C# 콘솔 기반 스네이크 게임 구현
C# 콘솔 기반 스네이크 게임 구현. Contribute to fanjae/SnakeGame development by creating an account on GitHub.
github.com
5. 플레이 화면




6. 회고
역할별로 클래스를 나누고 각 객체에게 기능을 맡기기 위해 분리를 많이 하였다.
다만, 아직도 리팩토링할 여지가 많이 있는 코드인 것 같다.
클래스를 나누는 것도 중요하지만, '각 클래스가 무엇을 몰라도 되는가'에 대한 고민을 더 많이 해야할 것 같다.
'Unity > Unity 초격차캠프' 카테고리의 다른 글
| [20260506] C# (캡슐화, 상속, 다형성) (0) | 2026.05.06 |
|---|---|
| [20260504] C# (프로퍼티, 생성자, 메서드 II) (0) | 2026.05.04 |
| [C#] 콘솔 월남뽕 게임 만들기 (1) | 2026.05.01 |
| [20260430] C# 얕은 복사(Shallow Copy) vs 깊은 복사(Deep Copy) (0) | 2026.04.30 |
| [20260430] 클래스(Class) (0) | 2026.04.30 |