게임을 만들다보니 Map 정보를 Snake나 Food가 모르면 어떤 위치에 생성되게 할지 결정할 수 없으니 Map이 필요한데 그러자니 클래스 계층 구조가 꼬여서 맘에 안들어지기 때문에 그냥 Map에서 Snake와 Food 둘 다 만드는 것으로 결정했다.
덕분에 Map코드가 바뀌어서 만들기1 게시물도 수정하게 되었다.
Snake 클래스는 다음과 같이 구성했다.
public class Snake
{
public List<Point> body = new List<Point>();
public Point? snakeHead;
public string headSymbol = "◆";
public string bodySymbol = "≡";
public void MoveBody()
{
for (int i = body.Count - 1; i > 0; i--)
{
body[i].x = body[i - 1].x;
body[i].y = body[i - 1].y;
}
}
public void EatFood()
{
body.Add(new Point(body.Last().x, body.Last().y, bodySymbol));
}
public void Draw()
{
for (int i = body.Count -1; i >= 0; i--)
{
body[i].Draw();
}
}
}
이것 이외에 뱀 생성, 푸드 생성은 Map에서 동작한다.
원래는 FoodGenerator클래스를 만드려고 했었지만 음식 종류가 다양한 것도 아니고 따로 관리할만큼의 필요성도 없는데 클래스 구조까지 서로 참조를 들고있는 복잡한 구조가 되어버리기 때문에 생략하게 되었다.
'부트캠프' 카테고리의 다른 글
콘솔앱으로 TextRPG 만들기 (0) | 2023.08.18 |
---|---|
BlackJack 게임 (0) | 2023.08.17 |
간단한 Snake 게임 만들기1 (0) | 2023.08.16 |
C# 제네릭과 var, dynamic (0) | 2023.08.14 |
미니프로젝트 마무리 (0) | 2023.08.11 |