본문 바로가기
Coding/JavaScript

[JavaScript] 자바스크립트로 가위 바위 보 게임 만들기 !!

by 포스트it 2023. 4. 16.
728x90
반응형

 

[JavaScript] 자바스크립트로 가위 바위 보 게임 만들기 !!

아래 사진 다운 받아서 경로 지정 후 사용하시면 됩니다 :)

예제코드
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>library</title>
</head>
<style>
    body {
        text-align: center;
    }

    #computer {
        width: 170px;
        height: 280px;
        background: url('/game.jpg') 0 0;
        display: inline-block;
    }

    #init {
        display: none;
    }
</style>

<body>
    <section>
        <h1>가위바위보 게임</h1>
        <div>알파고를 이겨라!</div><br><br>
        <div id="computer"></div>
        <div>
            <button id="rock" class="btn">가위</button>
            <button id="scissor" class="btn">바위</button>
            <button id="paper" class="btn">보</button>
        </div>
        <br>
        <div id="result"></div>
        <br>
        <h3>5승 0패 인증시 경품 증정이...!?</h3>
        <p>무승부는 승패에 관여하지 않습니다.</p>
        <button id="init">초기화</button>
    </section>

</body>

</html>

<script>
    let imageCoordinate = '0';
    const dictionary = { // 딕셔너리 자료구조
        바위: '0',
        가위: '-200px',
        보: '-390px'
    };

    function computerPick(imageCoordinate) {
        return Object.entries(dictionary).find(function (v) {
            return v[1] === imageCoordinate;
        })[0];
    }

    let interval;

    function intervalMaker() {
        interval = setInterval(function () {
            if (imageCoordinate === dictionary.바위) {
                imageCoordinate = dictionary.가위
            } else if (imageCoordinate === dictionary.가위) {
                imageCoordinate = dictionary.보;
            } else {
                imageCoordinate = dictionary.바위;
            }
            document.querySelector("#computer").style.background =
                'url(/game.jpg) ' + imageCoordinate + ' 0';
        }, 100);
    }

    intervalMaker();

    const score = {
        가위: 1,
        바위: 0,
        보: -1
    };

    const result = document.getElementById('result');
    const init = document.getElementById('init');
    let playTime = 0;
    let winNumber = 0;
    let loseNumber = 0;
    let drawNumber = 0;

    document.querySelectorAll('.btn').forEach(function (btn) {
        btn.addEventListener('click', function () {
            clearInterval(interval);
            intervalMaker();
            playTime++;
            init.style.display = 'inline-block';
            const myPick = this.textContent;
            const myScore = score[myPick];
            const computerScore = score[computerPick(imageCoordinate)];
            const scoreGap = myScore - computerScore;
            if (scoreGap === 0) {
                alert('비겼다 !');
                drawNumber++;
            } else if ([-1, 2].includes(scoreGap)) {
                alert('이겼다 !');
                winNumber++;
            } else {
                alert('졌다 !');
                loseNumber++;
            }
            result.innerHTML = "플레이 횟수 = " + playTime + " 게임" + "<br>" + "<br>" +
                winNumber + " 승 " + loseNumber + " 패 " + drawNumber + " 무";
        });
    });

    function initRecord() {
        playTime = 0;
        winNumber = 0;
        loseNumber = 0;
        drawNumber = 0;
        result.innerHTML = "플레이 횟수 = " + playTime + " 게임" + "<br>" + "<br>" +
            winNumber + " 승 " + loseNumber + " 패 " + drawNumber + " 무";
    }

    init.addEventListener('click', initRecord);
</script>

결과값

가위바위보 게임

알파고를 이겨라!




5승 0패 인증시 경품 증정이...!?

무승부는 승패에 관여하지 않습니다.

728x90
반응형

댓글