# 최종 웹 프로젝트 제작 기간 (19.04.22 ~ 19.05.01) 9일

# 최종 웹 프로젝트 발표 : 19.05.02

# 주제 : 블랙잭 게임 프로그래밍

 

@ 표지, 목차

@ 특징 소개

블랙잭 게임 특성상 사행성이라는 이미지를 없애기 위해

배팅 기능을 없애고 다른 기능을 구상해 보았습니다.

기본적인 게임으론 다소 재미가 떨어져

승부욕을 자극하기 위해 연승기록 기능을 추가 하게 되었습니다.

 

@ 시연

실시간 플레이는 실제 발표 중에 진행하였습니다.

실제 플레이 화면을 예시로 스크린샷을 보여드리겠습니다.

실제 웹 상에서는 Hit버튼을 누르면 카드가 위에서 차례대로 날라오고

딜러 카드 한장을 뒤집혀 진채로 날라옵니다.

모든 카드들은 랜덤이며

다음 스크린샷은 여러 결과들을 보여드리기 위해

엄청 나오기 희박한 결과물들을 보여드립니다.

@ 구조 및 알고리즘

웹 상에 게임 버튼은 총 3개로

Share 버튼을 누르게 되면 딜러 두장 플레이어 두장 카드를 나눠주며 게임을 시작하게 되고

플레이어가 Hit버튼을 누를 때 마다 한장씩 추가로 받게 됩니다.

만약 플레이어의 현재 카드가 21이 넘지 않는다는 조건 하에 Stand 버튼을 누르게 되면

자동적으로 딜러는 17이상이 될때까지 카드를 받게 되고

최종적으로 숫자를 비교하여 웹상 가운데 결과를 보여주게 됩니다.

먼저 웹이 작동 되면 52장의 카드 중 게임에 사용할 16장의 카드를 뽑아 페이지 상 안보이는 공간에 불러옵니다.

다음 캡쳐는 카드를 셔플하는 알고리즘과 Share버튼을 눌렀을 때 보여지는 애니메이션 코드입니다.

다음은 HIT 버튼의 알고리즘입니다.

HIT버튼을 누를때마다 자동적으로 숫자가 계산되며

빨간색 줄로 표시 된 곳은

뽑은 카드 중 ACE를 1로 계산할지 11로 계산 할지

판별해주는 알고리즘입니다.

기본적으로 ACE는 11로 계산 하되 자신의 카드가 21이 넘어갈 시

만약 자신의 카드 숫자 값중 11이라는 존재 한다면 그 갯수 만큼 10을 빼는 구조 입니다.

다음은 STAND 버튼 알고리즘입니다.

STAND버튼을 누르면 게임이 종료 되면서 자동적으로 딜러 카드가 17이상이 될때까지 뽑아야하기 때문에

HIT버튼과 ACE 판별하는 알고리즘은 비슷하지만

계산 부분은 다른것을 확인 할 수 있습니다.

다음은 SHARE 버튼으로 현재 연승 횟수를 다음 페이지로 넘기는 알고리즘을 가지고 있습니다.

다음은 게임의 승패 결과를 판별해내는 알고리즘입니다.

위의 승패 판별결과로 딜러가 승리하게 되면 자동적으로 프롬프트창을 띄워 플레이어의 ID를 받도록 만들었습니다.

이 때 연승횟수가 0회일 때를 제외하도록 만들었습니다.

 

@ 실패사례

다음은 실폐사례로

처음 의도는 연승 횟수가 1승 이상일 때만 프롬프트 창이 뜨게 하려고 했습니다.

하지만 0승인 상태에도 계속해서 프롬프트 창이 뜨는 문제가 발생하게 되었습니다.

이러한 문제들을 계속해서 공부한 결과 논리 구조를 변경하여 간단하게 해결 할 수 있었습니다.

문제를 해결하여 더이상 0승 일때는 프롬프트 창이 뜨지 않게 되었습니다.

다음 실패 사례는 ID 중복 문제 입니다.

만약 플레이어가 자신의 기록을 갱신할 경우

같은 ID로 기입하면 다음과 같이 같은 ID로 기록창에 나타나는 현상이 있었습니다.

다음 문제의 해결 방안으로는

애초에 데이터 베이스에서 데이터를 가져올 때

ID를 그룹으로 묶어 가장 높은 연승 횟수만 가져오도록 만들었습니다.

다음 실패 사례는 카드 분배 효과 표현입니다.

처음에 모든 기능은 작동했지만

마지막으로 카드가 날라오는 듯한 표현을 해주기 위해

애니메이션을 넣으려고 했습니다.

ppt 발표 상으로는 카드가 날라가는 효과를 애니메이션으로 표현하였습니다.

이러한 애니메이션 효과를 웹에서 나타내기 위해 날라오는 카드들에 각자 딜레이를 주어

마치 딜러가 한장한장 나눠주는 효과를 나타내었습니다.

+ Recent posts