IT/HTML

[HTML] 줄 수를 설정 가능한 빙고

잿호 2023. 9. 4. 23:00

 

 

실행화면

 

 

     

    설계

    1. 빙고의 줄 수를 원하는대로 설정 가능하다.

    2. 가로 세로 대각선 한줄이 모두 채워졌을 경우 빙고알림이 나온다.

     

     


    코드

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>bingGo</title>
        <style>
            #wrap {
                width: 500px;
                height: 500px;
                border: 1px solid #ccc;
                margin: 0 auto;
                margin-top: 100px;
                text-align: center;
            }
    
            #bingGo {
                width: 95%;
                height: 350px;
                border: 1px solid #ccc;
                margin: 0 auto;
            }
    
            #input_number {
                width: 100%;
                margin-top: 15px;
    
            }
    
            #input_number>input {
                width: 50px;
                height: 25px;
                font-size: 24px;
                text-indent: 15px;
            }
    
            button {
                width: 60px;
                height: 30px;
            }
    
            table {
                position: relative;
                top: 10px;
                left: 10px;
                width: 400px;
               
                border: 1px;
                border-collapse: collapse;
    
            }
    
            td {
                height: 40px;
                width: 40px;
                border: 1px solid #ccc
            }
    
        </style>
        <script>
            var bingo;
            var bing;
            //빙고 섞기
            function bingSuffle() {
                var temp;
                for (var i = 0; i < 100; i++) {
                    var x = Math.floor(Math.random() * bing.length);
                    var y = Math.floor(Math.random() * bing.length);
                    temp = bing[0][0];
                    bing[0][0] = bing[x][y];
                    bing[x][y] = temp;
                }
                console.log(bing);
            }
    
            //빙고 테이블 만들기
            function bingDisplay() {
                html = "";
                html += "<table>";
                for (var i = 0; i < bing.length; i++) {
                    html += "<tr>";
                    for (var j = 0; j < bing.length; j++) {
                        html += "<td>";
                        html += bing[i][j];
                        html += "</td>";
                    }
                    html += "</tr>";
                }
                html += "</table>";
                bingGo.innerHTML = html;
            }
    
            //빙고 5x5 배열 만들기
            function bingGoCreate(bc) {
                bing = new Array(bc);
                for (var i = 0; i < bc; i++) {
                    bing[i] = new Array(bc);
                    for (var j = 0; j < bc; j++) {
                        bing[i][j] = i * bc + j + 1;
                    }
                }
                bingSuffle();
            }
    
            function bingGoResult() {
                //가로방향 체크
                for (var i = 0; i < bing.length; i++) {
                    var count = 0;
                    for (var j = 0; j < bing.length; j++) {
                        if (bing[i][j] == 'O') {
                            count += 1;
                        }
    
                    }
                    if (count == bing.length) {
                        alert('빙고!!!!');
                    }
                }
                //세로방향 체크
                for (var i = 0; i < bing.length; i++) {
                    var count = 0;
                    for (var j = 0; j < bing.length; j++) {
                        if (bing[j][i] == 'O') {
                            count += 1;
                        }
    
                    }
                    if (count == bing.length) {
                        alert('빙고!!!!');
    
                    }
                }
                //왼쪽방향 대각선 체크
                var count = 0;
                for (var i = 0; i < bing.length; i++) {
                    if (bing[i][i] == 'O') {
                        count += 1;
                    }
                }
                if (count == bing.length) {
                    alert('빙고!!!!');
                }
                //오른쪽방향 대각선 체크
                var count = 0;
                for (var i = 0; i < bing.length; i++) {
                    if (bing[i][(bing.length-1) - i] == 'O') {
                        count += 1;
                    }
                }
                if (count == bing.length) {
                    alert('빙고!!!!');
                }
            }
    
            //빙고 O표시 해주기
            function bingTest() {
                console.log(no);
                for (var i = 0; i < bing.length; i++) {
                    for (var j = 0; j < bing.length; j++) {
                        if (bing[i][j] == no) {
                            bing[i][j] = 'O';
                        }
                    }
                }
                bingDisplay();
                bingGoResult()
            }
    
            window.onload = function() {
                var test = document.getElementById("test");
                var id = document.getElementById('id');
                var bingo = document.getElementById('bingGo');
                var bingGoCount = Number(prompt('빙고 행수 입력'));
                bingGoCreate(bingGoCount);
                bingDisplay();
                test.onclick = function() {
                    no = id.value;
                    bingTest(no);
                    id.value = "";
                    id.focus();
                }
            }
        </script>
    </head>
    
    <body>
        <div id="wrap">
            <h1>빙고 게임</h1>
            <div id="bingGo"></div>
            <div id="input_number">
                <input type="text" id="id">
                <button id="test">확인</button>
            </div>
        </div>
    </body>
    </html>

     

     


     

    실행

    0123
    실행결과

     


    마무리

    빙고입니다. 한 줄 빙고 후에는 다시 재실행을 해줘야 정상 작동됩니다.

     

     

     

    반응형

    'IT > HTML' 카테고리의 다른 글

    [HTML] 벽돌깨기  (0) 2023.10.19
    [HTML] 테트리스  (30) 2023.10.15
    [HTML] 저의 개발 사이트 입니다. (Jaihoo!)  (0) 2023.10.12
    [HTML] 동기화 달력  (0) 2023.10.06
    [HTML] 글쓰기 가능한 게시판 제작  (73) 2023.09.03