[JavaScript] 월남뽕 게임(카드게임)

2022. 5. 27. 17:55·개발/html, css, js
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] 배열  (1) 2022.05.25
'개발/html, css, js' 카테고리의 다른 글
  • [JavaScript] 객체란
  • [JavaScript] 고차함수
  • [JavaScript] 야구게임 만들기
  • [JavaScript] 로또 번호 뽑기
TeTedo.
TeTedo.
  • TeTedo.
    TeTedo 개발 일기
    TeTedo.
  • 전체
    오늘
    어제
    • 분류 전체보기 (319)
      • 개발 (274)
        • Article (4)
        • 정리 (21)
        • Spring Boot (17)
        • JPA (2)
        • JAVA (6)
        • Database (4)
        • 자료구조 (11)
        • 알고리즘 (32)
        • React (20)
        • Docker (10)
        • node.js (18)
        • Devops (11)
        • Linux (4)
        • TypeScript (3)
        • Go (10)
        • HyperLedger (4)
        • BlockChain (43)
        • html, css, js (48)
        • CS (3)
        • AWS (3)
      • 모아두고 나중에 쓰기 (3)
      • 팀프로젝트 (18)
        • SNS(키보드워리어) (9)
        • close_sea (9)
      • 개인프로젝트 (1)
        • Around Flavor (1)
        • CHAM (13)
        • ethFruitShop (5)
      • 독서 (0)
        • 스프링부트와 AWS로 혼자 구현하는 웹 서비스 (0)
  • 블로그 메뉴

    • 홈
    • 개발일기
    • CS
    • 실습
    • 코딩테스트
    • 웹
    • Go
    • node.js
    • 팀플
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    30일챌린지
    nodejs
    node.js
    ERC721
    erc20
    30일 챌린지
    하이퍼레저
    React
    go언어
    mysql
    go
    명령어
    블록체인
    프로그래머스
    js
    도커
    node
    html
    CSS
    컨테이너
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
TeTedo.
[JavaScript] 월남뽕 게임(카드게임)
상단으로

티스토리툴바