Popular Posts
Enable SSL connection for Jsoup import org.jsoup.Connection; import org.jsoup.Jsoup; import javax.net.ssl.*; import java.io.IOException; import java.security.KeyManagement... javax.net.ssl.SSLHandshakeException: Connection closed by peer in Android 5.0 Lollipop Recently, there is a error occurs when access website via ssl connection like below although it worked fine several days ago. // Enable SSL... Tired of Hibernate? Try JDBI in your code JDBI Quick sample ICategoryDAO.java : create a data access interface (implement is not required) package com.prhythm.erotic.task.data....
Stats
Bomb Sweeper
<html>
<head>
    <title>Bomb Sweeper</title>
    <style type="text/css">
        body
        {
            background-color: #95B7DF;
        }
        #tableContainer td
        {
            width: 20px;
            height: 20px;
            text-align: center;
            vertical-align: middle;
            -moz-border-radius: 5px;
            -khtml-border-radius: 5px;
            -webkit-border-radius: 5px;
        }
    </style>

    <script type="text/javascript" src="jquery.js"></script>

    <script type="text/javascript">
        var BombSweeper = {
            result: true,
            bombMap: false,
            colSize: 0,
            rowSize: 0,
            locateBomb: function(rowSize, colSize, bombCount) {
                var bombArr = new Array(colSize * rowSize);
                var count = 0;
                var index;
                while (count < bombCount) {
                    index = Math.floor(Math.random() * bombArr.length);
                    if (!bombArr[index]) {
                        count++;
                        bombArr[index] = true;
                    }
                }
                this.colSize = colSize;
                this.rowSize = rowSize;
                this.bombMap = bombArr;
            },
            getSurroundedIndex: function(x, y) {
                var indexArr = [];
                for (var i = x - 1; i <= x + 1; i++) {
                    if (i >= 0 && i < this.colSize) {
                        for (var j = y - 1; j <= y + 1; j++) {
                            if (j >= 0 && j < this.rowSize) {
                                indexArr.push(i * this.colSize + j);
                            }
                        }
                    }
                }
                return indexArr;
            },
            getSurroundedBombCount: function(arr) {
                var count = 0;
                for (var i in arr) {
                    if (this.bombMap[arr[i]]) count++;
                }
                return count;
            },
            getTips: function(x, y) {
                var _x = parseInt(x, 10);
                var _y = parseInt(y, 10);
                if (this.bombMap[_x * this.colSize + _y]) {
                    return -1;
                } else {
                    return this.getSurroundedBombCount(this.getSurroundedIndex(_x, _y));
                }
            },
            isBomb: function(x, y) {
                var _x = parseInt(x, 10);
                var _y = parseInt(y, 10);
                return this.bombMap[_x * this.colSize + _y] == true;
            }
        };
        $(document).ready(function() {
            $("#generateTable").bind("click", function() {
                var colSize = parseInt($("#colSize").val(), 10);
                var rowSize = parseInt($("#rowSize").val(), 10);
                var bombCount = parseInt($("#bombCount").val(), 10);

                if (isNaN(colSize) || isNaN(rowSize)) {
                    $("#tableContainer").text("Not availible size.");
                } else {
                    BombSweeper.locateBomb(colSize, rowSize, bombCount);

                    // rewrite value
                    $("#colSize").val(colSize);
                    $("#rowSize").val(rowSize);
                    $("#col").text(colSize);
                    $("#row").text(rowSize);
                    $("#bomb").text(0);
                    $("#bombEmbed").text(bombCount);


                    // create bomb table
                    $("#tableContainer").html("");
                    $("<table/>").attr({
                        border: 0,
                        align: "center"
                    }).appendTo("#tableContainer");

                    for (var i = 0; i < rowSize; i++) {
                        var currentRow = $("<tr/>").appendTo("#tableContainer table");

                        for (var j = 0; j < colSize; j++) {
                            var currentCell = $("<td/>").css({
                                //textAlign: "center",
                                //verticalAlign: "middle",
                                //fontSize: "12pt",
                                border: "2px outset black",
                                //width: "20px",
                                //height: "20px",
                                backgroundColor: "gray"
                            }).attr({ x: i, y: j })
                            .html("&nbsp;")
                            //.html(BombSweeper.bombMap[i * colSize + j] ? "X" : "&nbsp;")
                            .click(function(e) {
                                if (e.ctrlKey && $(this).attr("x") && $(this).attr("y")) {
                                    if ($(this).attr("marked") == "true") {
                                        $(this).removeAttr("marked")
                                        .css({
                                            color: "black",
                                            fontWeight: "normal"
                                        })
                                        .html("&nbsp;");
                                        $("#bomb").text(parseInt($("#bomb").text(), 10) - 1);
                                    } else {
                                        if (parseInt($("#bomb").text(), 10) < parseInt($("#bombEmbed").text(), 10)) {
                                            $(this).css({
                                                color: "blue",
                                                fontWeight: "bold"
                                            })
                                            .attr("marked", true)
                                            .text("P");
                                            $("#bomb").text(parseInt($("#bomb").text(), 10) + 1);
                                            if (parseInt($("#bomb").text(), 10) == parseInt($("#bombEmbed").text(), 10)) {
                                                var marked = $("#tableContainer td[marked]");
                                                for (var i = 0; i < marked.length; i++) {
                                                    if (!BombSweeper.isBomb($(marked.get(i)).attr("x"), $(marked.get(i)).attr("y"))) return;
                                                }

                                                // unbind all click event
                                                $("#tableContainer td").unbind("click");
                                                // finish game
                                                if (confirm("Congratulations!\nYou finish this game.\nWould you like to play again?")) {
                                                    $("#generateTable").click();
                                                }
                                            }
                                        }
                                    }
                                } else {
                                    if (!$(this).attr("marked") && $(this).attr("x") && $(this).attr("y")) {
                                        var x = parseInt($(this).attr("x"), 10);
                                        var y = parseInt($(this).attr("y"), 10);
                                        var tips = BombSweeper.getTips(x, y);

                                        if (tips == -1) {
                                            $(this).css({
                                                border: "2px inset black",
                                                backgroundColor: "transparent",
                                                color: "red"
                                            })
                                            .text("X")
                                            .removeAttr("x")
                                            .removeAttr("y");

                                            // unbind all click event
                                            $("#tableContainer td").unbind("click");
                                            if (confirm("Sorry, you lose this game.\nWould you like to play again?")) {
                                                $("#generateTable").click();
                                            }
                                        } else {
                                            $(this).css({
                                                border: "2px inset black",
                                                backgroundColor: "white"
                                            })
                                            .html(tips == 0 ? "&nbsp;" : tips)
                                            .removeAttr("x")
                                            .removeAttr("y");

                                            // extended action
                                            if (tips == 0) {
                                                $("#tableContainer td[x][y][marked!='true']")
                                                .filter(function(index) {
                                                    return ($(this).attr("x") == x - 1 || $(this).attr("x") == x || $(this).attr("x") == x + 1)
                                                    && ($(this).attr("y") == y - 1 || $(this).attr("y") == y || $(this).attr("y") == y + 1);
                                                })
                                                .each(function(index) {
                                                    $(this).click();
                                                });
                                            }
                                        }
                                    }
                                }
                            })
                            .appendTo(currentRow);
                        }
                    }
                }
            });
        });
    </script>

</head>
<body>
    <div style="text-align: center;">
        <input id="colSize" type="text" size="5" value="10" />
        x
        <input id="rowSize" type="text" size="5" value="10" />
        @
        <input id="bombCount" type="text" size="5" value="30" />
        <input id="generateTable" type="button" value="New Game" />
    </div>
    <div style="text-align: center;">
        Size of grid : <span id="col">0</span>/ <span id="row">0</span>
        <br />
        Marked bombs : <span id="bomb">0</span> / <span id="bombEmbed">0</span>
    </div>
    <div id="tableContainer">
    </div>
    <div style="text-align: center; font-size: 9pt;">
        (To mark bomb, press ctrl key and click.)</div>
</body>
</html>