본문 바로가기
Development(개발)/JAVA

[개발/JAVA] 부루마블 프로그램 개발 프로젝트

by wonkidoki 2023. 10. 9.
반응형

- 고전 보드게임 부루마블을 만들어보자.
- PC와 대결구도(AI라고 써놨지만 자동 학습기능은 없다.), 회원가입, 로그인, Thread 활용하기.

 

- Java Swing, Thread 활용, mairaDB연동 
- User와 AI 간에 역할을 번갈아 주는 것이 어려움.
- 영역에 도착할 때마다 화면을 새로 띄워야함.
- 보드영역(Border Center), 우측 AI,User 정보영역 (Border East)을 계속 재생성 시켰음.

 

- 소스 코드는 첨부파일 참고

Marble_Project.zip
0.55MB



1. DB 설계

area > 부루마블 보드, 각 영역 정보
member > 회원과 PC의 정보

area table에 저장된 정보


2. UI 설계 및 구현

- 로그인, 회원가입 페이지 지원
- 상대는 AI 이며 정해진 로직으로 수행한다

AI 로직
- 파란색 영역이 AI의 영역
- 땅을 사면서 주택만 건설함
- KTX로 이동시 무조건 시작 위치로 이동
- 나머지는 User의 행동과 같다.

- 주사위는 1~6까지 랜덤수로 나옴
- 기본 자금은 1억으로 시작
- 빨강색 영역은 User, 파랑색 영역은 AI
- 기부금 영역에 들어오면, 100만~1000만까지 랜덤하게 기부하며
  기부된 상태로 다시 들어오면, 그 돈을 받아간다.
- 비트코인 영역에 들어오면, 2턴 쉰다.
- KTX 영역에 들어오면, 원하는 위치로 입력해서 들어갈 수 있다.
  (단 그 영역을 사거나 팔 수 없음)
- 상대방 영역에 들어왔는데 돈이 없는 경우, 자동으로 비싼 땅 순으로 판다.
- 처음 위치를 지나면 200만원을 지원한다.
- 땅도 없고 돈도 없으면 패배
- 승리, 패배는 구현 안하기로 함.(로그인,회원가입도 사실 필요 없음)

User가 땅을 살 때, 팝업창


3. DB 쿼리 추가
-- 회원
CREATE TABLE member (
id      VARCHAR(10) NOT NULL, -- 아이디
pwd     VARCHAR(10) NOT NULL, -- 비밀번호
winCnt  INTEGER     NOT NULL, -- 승리횟수
loseCnt INTEGER     NOT NULL, -- 패배횟수
money   INTEGER     NOT NULL, -- 돈
restCnt INTEGER     NOT NULL, -- 쉬는턴
areaNo  VARCHAR(10) NOT NULL  -- 지역번호
);

-- 회원 기본키
CREATE UNIQUE INDEX PK_member
ON member ( -- 회원
id ASC -- 아이디
);

-- 회원
ALTER TABLE member
ADD
CONSTRAINT PK_member -- 회원 기본키
PRIMARY KEY (
id -- 아이디
);

-- 새 테이블
CREATE TABLE area (
areaNo    VARCHAR(10) NOT NULL, -- 지역번호
areaName  VARCHAR(10) NOT NULL, -- 이름
areaPrice INTEGER     NOT NULL, -- 가격
areaHost  VARCHAR(10) NOT NULL, -- 주인
areaBuild VARCHAR(10) NOT NULL, -- 건물
areaUser  VARCHAR(10) NOT NULL, -- 유저위치
areaAI    VARCHAR(10) NOT NULL, -- AI위치
areaTurn  VARCHAR(10) NOT NULL  -- 현재턴
);

-- 새 테이블 기본키
CREATE UNIQUE INDEX PK_area
ON area ( -- 새 테이블
areaNo ASC -- 지역번호
);

-- 새 테이블
ALTER TABLE area
ADD
CONSTRAINT PK_area -- 새 테이블 기본키
PRIMARY KEY (
areaNo -- 지역번호
);

-- 회원
ALTER TABLE member
ADD
CONSTRAINT FK_area_TO_member -- 새 테이블 -> 회원
FOREIGN KEY (
areaNo -- 지역번호
)
REFERENCES area ( -- 새 테이블
areaNo -- 지역번호
);