728x90
게임설명
1. 하트,클로버,다이아,스페이드 4개의 문양과 A 2 3 4 5 6 7 8 9 10 J Q K가 적힌 총 52개의 카드가 있다.
2. 배팅을 함
3. 컴퓨터가 2장을 뽑음(랜덤)
4. 내가 한장을 뽑음(랜덤)
5. 컴퓨터가 뽑은 2장의 숫자 사이에 내가뽑은 숫자가 들어간다면 승리
/**
게임 월남뽕
52장
1. 컴퓨터가 2장을 랜덤으로 뽑음 : 하트5 스페이드7, 내가 뽑은 카드 : 클로버3, 5와7사이 값이 안나오면 짐,같은값도 짐)
2. 내가 쓴카드는 빼기
3. 종료조건 : 돈 다 잃거나 17판
A 2 3 4 5 6 7 8 9 10 J Q K
*/
//카드 모양 4개
const Shape = {
1: "♥",
2: "♠",
3: "♣",
4: "◆",
}
//전체 카드 갯수(결과값에 이용)
//카드 덱 배열 초기값
const deck = [];
//카드 52장 뽑아서 덱 셋팅
//문양반복 4번
for (let i = 1; i <=4 ; i++){
//숫자반복 13번
for (let k = 1; k<=13; k++ ){
if(k==1){
deck.push(Shape[i]+"A");
}
else if (k==11){
deck.push(Shape[i]+"J");
}
else if (k==12){
deck.push(Shape[i]+"Q");
}
else if (k==13){
deck.push(Shape[i]+"K");
}
else {
deck.push(Shape[i]+k);
}
}
}
//라운드 초기값
let round = 0;
//소지금 초기값
let userMoney = 10000;
//17라운드까지 하고 종료
while(round<17){
//매라운드 증가
round++;
//
//오류 잡기 warning = 1일때 오류 발생
let warning = 0;
//배팅받기
let betMoney = 0;
betMoney = Number(prompt("배팅하실 금액을 숫자만 입력해주세요. \n잔액 : " + userMoney + "원"))
if(betMoney>=0 && betMoney<=userMoney){
//정상적인 숫자 입력시 게임 진행
alert(betMoney+"원을 배팅하셨습니다. \n컴퓨터가 먼저 카드를 뽑겠습니다.")
}
else {
//최대 배팅값 초과시 라운드 스킵
//숫자가 아닌값 입력시
warning = 1;
}
if(warning == 1){
alert("잘못 입력하였습니다. \n화가난 컴퓨터가 판을 엎었습니다. \n처음부터 다시 도전하세요.")
break;
}
//뽑은카드는 따로 배열을 만들어서 결과 비교하기
let selectedCard = [];
// 중복없이 카드 3장뽑기
while(true){
//0~51 랜덤숫자 뽑기
let randNum = Math.floor(Math.random()*52);
//중복값 뽑을시 숫자 다시 뽑기
if (deck[randNum]==0){
continue;
}
//결과 비교를 위해 뽑은 넘버를 카드에 대입
selectedCard.push(randNum%13 + 1)
//덱에서 인덱스로 랜덤숫자 넣고 뽑기 : 컴퓨터의 경우와 유저의 경우 나누기
//컴퓨터의 경우(처음 2번)
if (selectedCard.length<=2){
console.log( "뽑은 카드 : " + deck[randNum])
alert( "뽑은 카드 : " + deck[randNum])
//뽑은 숫자 덱에서 제거후 그자리에 0을 넣어줌
deck.splice(randNum,1,0);
}
//유저일때
else {
alert("당신의 카드는.........");
console.log(" 내 카드 : " + deck[randNum]);
alert("내 카드 : "+ deck[randNum]);
//뽑은 숫자 덱에서 제거후 그자리에 0을 넣어줌
deck.splice(randNum,1,0);
break;
}
}
//오류시 라운드 스킵
if (warning == 1){
continue;
}
//결과 비교
let result = ""
// 경우 1. 뽑은카드가 첫번쨰 카드보다 큰경우
if(selectedCard[2]>selectedCard[0]){
//두번째 카드보다 작아야 승리
if(selectedCard[2]<selectedCard[1]){
result = "win"
}
//나머지 경우 패배 (비기거나 큰경우)
else {
result = "lose"
}
}
// 경우 2. 뽑은카드가 첫번째 카드보다 작은경우
else if(selectedCard[2]<selectedCard[0]){
//두번째 카드보다 커야 승리
if(selectedCard[2]>selectedCard[1]){
result = "win"
}
//나머지 경우 패배 (비기거나 작은경우)
else {
result = "lose"
}
}
// 경우 3. 비긴경우 = 패배
else {
result = "lose"
}
//이긴경우 배팅금액만큼 받음
if (result == "win"){
userMoney = userMoney + betMoney;
alert ("승리하셨습니다. " + betMoney + "원을 얻으셨습니다. \n현재 잔액 : " + userMoney + "원")
console.log("승리! 획득 금액 : " + betMoney + "원\n현재 잔액 : " + userMoney + "원")
}
//진경우 배팅금액 손실
else{
userMoney = userMoney - betMoney;
alert ("패배하셨습니다. " + betMoney + "원을 잃으셨습니다. \n현재 잔액 : " + userMoney + "원")
console.log("패배! 잃은 금액 : " + betMoney + "원\n현재 잔액 : " + userMoney + "원")
}
//종료 조건
//배팅금액이 0이하인 경우 게임종료
if (userMoney==0){
alert("가진돈을 모두 소진하셨습니다. 다시 도전하세요.");
break;
}
}
728x90
'개발 > html, css, js' 카테고리의 다른 글
[JavaScript] 객체란 (0) | 2022.05.30 |
---|---|
[JavaScript] 고차함수 (0) | 2022.05.29 |
[JavaScript] 야구게임 만들기 (0) | 2022.05.26 |
[JavaScript] 로또 번호 뽑기 (0) | 2022.05.25 |
[JavaScript] 배열 (0) | 2022.05.25 |