用JS简单实现拼图小游戏

简单实现js拼图
摘要由CSDN通过智能技术生成

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <style type="text/css">
        table{
            margin: 100px auto;
            border: 2px solid pink;
        }
        td{
            border: 2px solid palegreen;
            box-sizing: border-box;
            background: url(../img/6.jpg) no-repeat;
        }
    </style>
    <body>
        <button οnclick="kai()">开始</button>
        <button οnclick="xia()">下一关</button>
        <p class="p1">时间:<span>1000</span>秒</p>
        <p class="p2">步数:<span>0</span>步</p>
        <table></table>
    </body>
    <script type="text/javascript">
        let sj = document.querySelector(".p1 span");
        let bs = document.querySelector(".p2 span");
        let sjj =1000;
        let bss=0;
        let jsq;
        let btn=document.querySelectorAll("button");
        btn[1].disabled="disabled";
        let arr=[];
        let xx=3;
        let yy=600;
        创建格子();
    

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,我可以为您提供一个简单拼图游戏的示例代码。代码中使用了HTML5的canvas元素和JavaScript语言来实现。 HTML部分: ```html <!DOCTYPE html> <html> <head> <title>拼图游戏</title> <style> canvas { border: 1px solid black; } </style> </head> <body> <canvas id="canvas" width="400" height="400"></canvas> <button id="startBtn">开始</button> <script src="game.js"></script> </body> </html> ``` JavaScript部分: ```javascript var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); var img = new Image(); img.src = "puzzle.jpg"; var tileSize = 100; // 每个拼图块的大小 var rows = 4; // 拼图块的行数 var cols = 4; // 拼图块的列数 var tiles = []; // 存储所有拼图块的数组 var emptyTile = {row: rows-1, col: cols-1}; // 空白拼图块位置 img.onload = function() { init(); } function init() { drawImage(); createTiles(); shuffleTiles(); drawTiles(); } function drawImage() { ctx.drawImage(img, 0, 0, canvas.width, canvas.height); } function createTiles() { for (var r = 0; r < rows; r++) { for (var c = 0; c < cols; c++) { var tile = { row: r, col: c, x: c * tileSize, y: r * tileSize, imageX: c * tileSize, imageY: r * tileSize }; tiles.push(tile); } } } function shuffleTiles() { for (var i = tiles.length-1; i >= 0; i--) { var randomIndex = Math.floor(Math.random() * i); var temp = tiles[i]; tiles[i] = tiles[randomIndex]; tiles[randomIndex] = temp; } } function drawTiles() { ctx.clearRect(0, 0, canvas.width, canvas.height); for (var i = 0; i < tiles.length; i++) { var tile = tiles[i]; ctx.drawImage(img, tile.imageX, tile.imageY, tileSize, tileSize, tile.x, tile.y, tileSize, tileSize); } } function getClickedTile(mouseX, mouseY) { for (var i = 0; i < tiles.length; i++) { var tile = tiles[i]; if (mouseX >= tile.x && mouseX < tile.x + tileSize && mouseY >= tile.y && mouseY < tile.y + tileSize) { return tile; } } return null; } canvas.addEventListener("click", function(event) { var mouseX = event.clientX - canvas.offsetLeft; var mouseY = event.clientY - canvas.offsetTop; var clickedTile = getClickedTile(mouseX, mouseY); if (clickedTile) { if (isValidMove(clickedTile)) { moveTile(clickedTile); drawTiles(); if (isGameComplete()) { alert("拼图完成!"); } } } }); function isValidMove(tile) { if (tile.row == emptyTile.row && Math.abs(tile.col - emptyTile.col) == 1) { return true; } if (tile.col == emptyTile.col && Math.abs(tile.row - emptyTile.row) == 1) { return true; } return false; } function moveTile(tile) { var temp = { row: tile.row, col: tile.col, x: tile.x, y: tile.y }; tile.row = emptyTile.row; tile.col = emptyTile.col; tile.x = emptyTile.col * tileSize; tile.y = emptyTile.row * tileSize; emptyTile.row = temp.row; emptyTile.col = temp.col; emptyTile.x = temp.col * tileSize; emptyTile.y = temp.row * tileSize; } function isGameComplete() { for (var i = 0; i < tiles.length; i++) { var tile = tiles[i]; if (tile.row != Math.floor(i / cols) || tile.col != i % cols) { return false; } } return true; } document.getElementById("startBtn").addEventListener("click", function() { shuffleTiles(); drawTiles(); }); ``` 代码中首先加载一张拼图图片,然后创建一个指定大小和行列数的拼图块数组,并使用shuffleTiles()方法对拼图块进行随机打乱。在绘制拼图块时,可以根据拼图块的位置和大小,从图片中截取拼图块对应的部分并绘制到canvas中。 当用户点击canvas时,根据鼠标坐标获取点击的拼图块,如果该拼图块与空白拼图块相邻且可以移动,则进行移动并重新绘制拼图块。当拼图全部拼好后,弹出提示框告知用户游戏完成。 最后,为了让用户可以重新开始游戏,我们添加了一个开始按钮,点击该按钮可以重新打乱拼图块并进行游戏

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值