게임 개발 프로젝트
오늘도 이어서 맞고 게임 개발을 이어나갔다. 오늘은 어제 설명한 Game 클래스의 이름을 Turn 클래스로 변경하고 이를 부모 클래스로 하는 자식 클래스 TurnStart, TurnMiddle, TurnDecision, TurnEnd 클래스를 생성하였다. 사실상 우리는 게임을 할 때 자신의 차례를 한 턴이라 생각하고 카드의 변경이 그 때 한 순간에 이루어진다고 생각하지만 컴퓨터는 이를 한 번에 처리하지 못한다. 특히!!! 똥 싼 경우를 처리 할 때, 턴을 쪼개서 생각하지 않으면 이 카드가 플레이어의 손에 있던 카드인지, 바닥에 있던 카드인지 컴퓨터는 모른다. 말해주지 않으면 기억을 할 줄 모르니까! 그래서 Turn 클래스를 세분화하게 되었다. 그리고, 기억해야하는 모~든 정보들을 다음 단계의 Turn 클래스로 전달해준다. 이때 말하는 다음 단계의 Turn 클래스를 간단히 말하자면, 우리가 생각하는 한 턴은 TurnStart -> TurnMiddle이 기본으로 이루어지며, Go 또는 Stop을 외칠 수 있는 경우 TurnDecision으로 이동하며 Stop을 외칠 경우 TurnEnd 클래스로, Go를 외칠 경우 다음 플레이어의 TurnStart로 이동하는 것이다. 즉, 다음 단계의 Turn 클래스로 모든 정보를 전달해준다는 것은 내가 내려 놓은 카드가 짝이 있다면 획득 가능한 카드이므로 그 카드가 내가 딴 카드가 되었음에 대한 정보를 TurnStart 클래스에서 TurnMiddle 클래스로 전달해주는 것이다.
TurnStart 클래스
해당 클래스는 턴이 시작했을 때의 상태를 의미하는데, 구성되는 함수로는 현재 턴의 주인인 player의 손에 있는 패와 바닥 패 짝을 맞춰주며 가져올 수 있는 카드에는 뭐가 있는지 확인하는 함수와, 어떤 카드를 냈다면 그 카드가 짝이 맞았는지 확인하고 내 점수 패로 변경하거나 바닥에 내려놓는 함수가 있다.
TurnMiddle 클래스
해당 클래스는 어떤 카드를 손에서 내려놓은 후부터 덱의 맨 위 카드를 뒤집고 내려놓는 상태까지를 의미하는데, 구성되는 함수로는 바닥 패와 뒤집은 패의 짝을 확인하는 함수와, 짝이 맞았는지 확인하고 내 점수 패로 변경하거나 바닥에 내려놓으며 점수를 체크하여 점수가 났다면 현재 상태를 TurnDicision으로 변경하고, 그렇지 않으면 상대방의 TurnStart 상태로 변경하는 함수가 있다.
TurnDicision 클래스
해당 클래스는 Go 또는 Stop을 외칠 수 있는 상태를 의미하는데, 구성되는 함수로는 Go를 선택할 경우 현재 상태를 상대방의 TurnStart 상태로 변경하고, Stop을 선택할 경우 상태를 TurnEnd로 변경하고 winner를 현재 턴인 player로 지정하는 함수가 있다.
TurnEnd 클래스
해당 클래스는 사실상 턴이 아닌 게임이 끝났음을 알린다.
화면 구성
1. 시작화면
2. 게임 내 화면