> # ♻️ 资源
> **大小:** 3.94MB
> **文档链接:**[**https://www.yuque.com/sxbn/ks/100010247**](https://www.yuque.com/sxbn/ks/100010247)
> **➡️ 资源下载:**[**https://download.csdn.net/download/s1t16/87354326**](https://download.csdn.net/download/s1t16/87354326)
> **注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!**
> ![qrcode_for_gh_d52056803b9a_344.jpg](https://cdn.nlark.com/yuque/0/2023/jpeg/2469055/1692147256036-49ec7e0c-5434-4963-b805-47e7295c9cbc.jpeg#averageHue=%23a3a3a3&clientId=u8fb96484-770e-4&from=paste&height=140&id=u237e511a&originHeight=344&originWidth=344&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=8270&status=done&style=none&taskId=ud96bf5f7-fe85-4848-b9c2-82251181297&title=&width=140.1999969482422)
# 拼图游戏
## 一、 实验目的
本次实验目为练习 JavaScript 的程序编写,以实现 Web 页面的交互功能
## 二、实验内容
制作一个拼图游戏(3*3)
## 三、实验步骤
### 1.确定需求
一个拼图游戏要实现一个 3*3 的网格布局,其中一块为空白,剩余 8 块可以自由移动,当 8 块位置正确后,再添加剩余的一块,就可以完成拼图
要有完整图片的提示信息
记录游戏时间、步数
可以随机打乱拼图
### 2. 设计页面原型
根据需求,设计界面原型。
上方居中显示标题和主题部分分为两大块:游戏区和提示区。游戏区为一个 3*3 网格,每个格中填充一张图片块,其中一个块为空白。点击上、下、左、右四个方向有空白块的图片可以向空白块移动该图片。提示区上方为完整图片,下面是计时和步数。在最下面有重新开始的按钮和添加最后一块(检查胜利)的按钮,如果在所有图片位置正确时点击,则会自动填充最后一块,结束计时,显示成功的对勾提示。否则会显示错误提示。
底端显示作者信息
设计响应式页面以适应所有宽度的设备
### 3. 实现布局
编写 index.html、index.css
关键技术:
游戏区
![82c3553725ddfebc041fc26fc6254ff9.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1706318260850-2d888f93-70fa-40eb-a52b-4cf1e2066e55.png#averageHue=%23212020&clientId=u8dd09ff6-c02d-4&from=paste&height=230&id=uddcda4b7&originHeight=287&originWidth=383&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=61179&status=done&style=none&taskId=u488e886c-b90d-4aed-94f1-139adfede35&title=&width=306.4)
游戏区 game_block 中存在网格块 grid,其中包含九个子块 p0-p8,每个子块中有一张图片。
样式使用 flex 布局,设置固定宽度使得每行显示三个块,且中间不保留空隙
![165c531ffda90400e9a00497fe9bf10d.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1706318283779-1139e559-33bc-4534-b497-c74252ddb542.png#averageHue=%2321201f&clientId=u8dd09ff6-c02d-4&from=paste&height=436&id=u9bbce759&originHeight=545&originWidth=325&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=71174&status=done&style=none&taskId=u252d404b-8fb7-44bc-982d-0caff1ceb6f&title=&width=260)
菜单区
![d525a2485d6eaa9e8ab03f667e1ab61a.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1706318303505-30a5c6d3-5522-475b-b81a-42170993e9f5.png#averageHue=%23232121&clientId=u8dd09ff6-c02d-4&from=paste&height=329&id=uf14d1b02&originHeight=411&originWidth=554&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=113612&status=done&style=none&taskId=uf53d1417-1067-4d51-84ed-496e14742bb&title=&width=443.2)
样式不做过多赘述
伪类动作
![76e79700ad2004915b14fa18d6abd394.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1706318324406-1efaca7e-6526-4b2a-bf10-13ca1a4e13fa.png#averageHue=%23252421&clientId=u8dd09ff6-c02d-4&from=paste&height=138&id=ubcb9d6cd&originHeight=173&originWidth=264&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=23112&status=done&style=none&taskId=ud99288a6-927e-42a4-9104-9a81662c64d&title=&width=211.2)
对图片、按钮,使用:hover {cursor: pointer}使的当鼠标悬停时,变为指针
对拼图图片,使用:hover{transform.scale(1.1)}设置鼠标悬停在图片上方时,图片略微放大以指示该图片
响应式设计
![ecfd70dbfcba10c07f735f599d675c2d.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1706318352602-d54eab97-f972-41dc-b6be-c56c198bd344.png#averageHue=%2320201f&clientId=u8dd09ff6-c02d-4&from=paste&height=466&id=u392ee815&originHeight=582&originWidth=314&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=67391&status=done&style=none&taskId=uc7b69184-9196-48b2-b67f-0b088231036&title=&width=251.2)![e53ee7f99744b45e60bd8896c717da46.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1706318352636-f682068b-e453-46aa-9984-eaef8d005351.png#averageHue=%2322211f&clientId=u8dd09ff6-c02d-4&from=paste&height=402&id=u5b44aa4f&originHeight=503&originWidth=321&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=66314&status=done&style=none&taskId=u74d571ab-26df-41e4-8f0b-bd413d4d359&title=&width=256.8)
使用了媒体查询,确保在页面宽度改变时拼图显示正常
同时在中设置 viewport 视窗,限制移动端的视窗长度
### 4. 实现交互
编写 index.js,使用 jQuery 编写
核心交互功能
初始化页面:声明变量,启动定时器,初始化拼图
![eaba58c807fe1841e31cadfee27052ea.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1706318376754-3dd679f5-cdbd-46f5-8098-f7044173f59d.png#averageHue=%23232221&clientId=u8dd09ff6-c02d-4&from=paste&height=166&id=uaa7f67e9&originHeight=207&originWidth=654&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=69973&status=done&style=none&taskId=u835ea510-3cce-4cd1-a61a-9c9ce7ec722&title=&width=523.2)
Steps 记录步数,minute、second 为 HTML 页面上显示的时间,timer 是计时器,每 1 秒执行 updateTime 函数,更新页面上的时间:(判断秒数进位分钟,个位数的分、秒显示为两位)
![84eb35cb52dd1edc27cc8fd2f752ee4b.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1706318393791-84f45956-894c-460e-b08b-f7e65c038956.png#averageHue=%23232221&clientId=u8dd09ff6-c02d-4&from=paste&height=489&id=uf66ee931&originHeight=611&originWidth=459&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=134539&status=done&style=none&taskId=uf6f4e46e-8222-4d62-b9cd-f21af5a9f7d&title=&width=367.2)
Random 为游戏中缺少的图片块(0-8)编号,empty 为游戏中网格当前为空白的块(0-8)编号,pictures 是一个数组,下标为图片块编号,值为图片块当前的位置编号,如果图片块缺少,值为-1
resetPicture 函数对拼图重新进行排序
![fc0491c6de4b7d26d7ea3cf71ae2b8f0.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1706318410904-8dcff73b-1cf7-41b7-9f29-4966d316aae2.png#averageHue=%2320201f&clientId=u8dd09ff6-c02d-4&from=paste&height=442&id=ube0e75b6&originHeight=552&originWidth=524&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=112303&status=done&style=none&taskId=ud75f8291-7456-4465-a3e2-db46e175f57&title=&width=419.2)
首先先将 pictures 数组初始化为正确顺序,然后再调用 shuffle 函数按照随机交换方法打乱。之后,生成一个 0-8 的随机数,作为缺少的图片块的编号,并且更新 empty、pictures 的值
之后,要检查当前生成的随机打乱是否有解,调用 checkPossible 函数
![5a03e51b6b441c1f5bc8fd9be9a859a6.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1706318427048-227332bb-3759-4651-b7f8-f28b5811df84.png#averageHue=%2320201f&clientId=u8dd09ff6-c02d-4&from=paste&height=297&id=ucf138425&originHeight=371&originWidth=441&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=67674&status=done&style=none&taskId=u514ba4e4-4b5d-4a25-8399-7f73b0f30b0&title=&width=352.8)
原理为,首先建立棋盘数组,存储网格中每个块放置的图片块编号。初始数组为�
没有合适的资源?快使用搜索试试~ 我知道了~
基于JavaScript 实现拼图游戏【100010247】
共19个文件
jpg:10个
js:2个
svg:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 187 浏览量
2022-12-30
11:38:17
上传
评论
收藏 3.94MB ZIP 举报
温馨提示
详情介绍:https://www.yuque.com/sxbn/ks/100010247 一个拼图游戏要实现一个 3*3 的网格布局,其中一块为空白,剩余 8 块可以自由移动,当 8 块位置正确后,再添加剩余的一块,就可以完成拼图。本次实验目为练习 JavaScript 的程序编写,以实现 Web 页面的交互功能。
资源推荐
资源详情
资源评论
收起资源包目录
100010247-基于JavaScript 实现拼图游戏.zip (19个子文件)
pingtu
jquery-3.4.0.min.js 86KB
image
ok.svg 595B
2.jpg 27KB
6.jpg 39KB
1.jpg 24KB
no.svg 1KB
all.jpg 1.64MB
5.jpg 62KB
0.jpg 30KB
8.jpg 38KB
3.jpg 52KB
7.jpg 27KB
4.jpg 63KB
LICENSE 1KB
实验报告2.docx 1.98MB
index.html 2KB
index.js 7KB
README.md 12KB
index.css 2KB
共 19 条
- 1
资源评论
神仙别闹
- 粉丝: 2674
- 资源: 7640
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 第12章spring-mvc自定义类型转换器
- 基于PHP图书管理系统实验报告.docx
- Python爬取淘宝热卖商品并可视化分析
- 5152单片机proteus仿真和源码将按键次数写入AT24C02再读出并用1602LCD显示
- SE-SSD复现过程(Det3D的安装教程)
- 基于Python的在线学习与推荐系统设计与实现(论文+源码)-kaic
- 串口通过 YMODEM 协议进行文件传输
- 蓝桥杯2024年第十五届省赛真题-前缀总分
- com.qihoo.appstore_300101305-1.apk
- tensorflow-gpu-2.7.1-cp37-cp37m-manylinux2010-x86-64.whl
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功