[Black Jack Game]
[Black Jack Game]
자바로 구현한 간단한 블랙잭 게임입니다.
개발 기간
2025.01.~2025.02. (1개월)
언어
Java (JDK 20.0.1, Eclipse 4.32.0)
개발 목적
학교 Java 수업에서 과제로 콘솔 기반으로 작동하는 간단한 블랙잭 게임을 만들게 되었습니다. 이후 Java를 추가로 공부하면서, GUI 라이브러리를 이용해 사용자와의 상호작용으로 동작하는 게임으로 개선해보고 싶다는 생각을 하게 되어 본 프로젝트를 진행하게 되었습니다.
개발 목표
패키지화
콘솔 기반의 초기 프로젝트는 하나의 코드로 구현해도 문제가 없었으나, GUI로 확장하면서 코드가 길어지고 가독성이 떨어져 이를 해결하기 위한 패키지화가 필요했습니다.
그래픽 인터페이스(GUI) 구현
Java 라이브러리를 활용하여 그래픽 기반 인터페이스를 구현합니다. 콘솔 기반 게임에 비교해 GUI의 시각적 정보는 사용자 친화성을 높이고, 게임의 몰입도를 높입니다.
MVC(Model, View, Controller) 구조로 설계
MVC 구조는 코드를 Model, View, Controller 부분으로 구분합니다. 이는 다른 부분에 영향을 적게 주기에, 수정과 개선이 용이하고, 나중에 다시 봤을 때 어떤 의도로 코드를 짰는지 알아보기 쉬워집니다.
애니메이션 구현 (진행중)
딜러가 카드를 나눠주고, 카드를 내는 과정을 애니메이션으로 구현하여 게임 몰입도를 높입니다.
CPU 구현 (진행중)
3명의 플레이어 CPU를 구현하고, 난수 기반 알고리즘을 통해 의사결정을 하도록 설계하여 마치 실제 블랙잭 게임을 하는 듯한 현실적인 게임 흐름을 제공합니다.
진행 상황
첫번째, 패키지화
프로젝트 초기의 하나의 긴 코드
패키지화 이후 프로젝트 폴더
처음에는 하나의 긴 코드 파일로 구현했던 프로젝트를, 기능과 역할에 따라 Model, Main, Controller로 패키지화했습니다.
이를 통해 코드의 가독성을 높이고 각 클래스의 역할을 명확히 하며, 개선 과정에서 어디에 어떤 역할의 코드가 있는지 손쉽게 찾을 수 있었습니다.
두번째, 그래픽 인터페이스(GUI) 구현
초기의 콘솔 기반 게임
GUI 확장 이후
Java Swing 라이브러리를 사용하여 콘솔 기반 게임이었던 기존 프로젝트를 상호작용이 가능한 GUI로 작동하는 게임으로 개선했습니다.
세번째, MVC 구조로 재설계
Model 영역
View 영역
Controller 영역
프로젝트를 데이터를 담당하는 Model 영역, 게임의 흐름 제어를 담당하는 Controller 영역과 GUI 부분을 담당하는 View 부분으로 구분하는 MVC 구조로 설계했습니다.
Model에는 카드, 덱, 플레이어 데이터와 로직을 관리합니다.
View에서는 GUI를 통한 사용자 인터페이스를 구현합니다.
Controller에서는 사용자 입력을 처리하고, Model과 View 사이의 상호작용을 중재합니다.
이 구조는 각 부분이 다른 부분에 영향을 크게 주지 않기에 수정 및 개선이 용이합니다. 초기 프로젝트를 GUI로 확장하는 과정에서 Model 부분을 거의 그대로 사용할 수 있었습니다. 마찬가지로 다른 플랫폼으로 확장 시 Model, Controller 부분을 재사용하고 View 부분만 플랫폼에 맞게 수정해주면 되기에 확장성과 재사용성 또한 좋습니다.
개선할 점
카드를 나눠주는 과정을 애니메이션으로 구현
간단한 알고리즘으로 작동하는 딜러의 알고리즘을 기반으로 난수를 추가해 인간적인 선택을 하는 플레이어 CPU 추가
Android, Unity 등 다른 플랫폼으로의 확장