前端菜鸟游戏篇,拼图游戏!
都说小时候盼着长大,长大了又念着童年。我怀念起,在那个简简单单的年代,似乎睡前能捧着个诺基亚玩会小游戏也算是当时孩生中一件趣事了,当时玩的比较多的是,拼图,贪吃蛇,桌上弹球等等。想到这里,我就渴望用自己所学的知识,做个拼图游戏出来……
游戏功能
1.游戏主体拼图
2.可更改的游戏难度
3.切换背景图片
4.来首轻松的BGM
游戏思想
从示例图中可以看出,拼图主体是一个网状的方形,我们需要移动拼块来完成图片的复原。我们在这里引入类比思想,我们可以用二维数组的操作去模拟拼块的移动,用增加二维数组的阶数来实现游戏困难程度的提升,那么这里的每一个拼块就是存在数组中的元素。
这是一个游戏刚开始时候的图片,图片中拼块是混乱的,我们需要写一个算法来模拟这种混乱。
(小插曲,我曾经想的很简单,我单纯的认为只是让数组乱序就行了,但是在我实现后,我 发现这是一个重大错误思想。正所谓杂乱无章的武功恰恰有其意想不到的章法,拼图的混 乱也是有规律的,如果给他随机的顺序,就会出现完成拼图后有拼块错位的问题,类似于魔方的角安错位置,因此我们要写的是模拟人为的混乱算法!)——用改变数组的下标来类比四个方位的移动。
- 脚本中的数组与HTML中盒子的连接,当盒子状态改变时,同时改变数组内容。
游戏实现
游戏初始
由于游戏中默认是最低难度,所以我们在这里就以最低难度为背景来制作。
在html中写一个容器container,在script里写一个3*3二维数组。使用循环给container添加9个类名为part-ease的div。给数组从1到8赋值,最后一个设为 "" 代表拼图的缺口。给part-ease类定义样式,定义9个类part-ease1到8最后一个为empty。
(注意事项:要将background-size,x,y方向都设为300%,因为part-ease的高度都定义为容器的三分之一,他的背景图理应也是1/3,所以,对放大3倍的图片进行position操作,才是原图的那一块图片,但是我不知道为何,就算不设置300%所得的图片也只是比原图少了一小部分……)。
效果图
自走算法
声明两个变量x,y,分别为二维数组的前置坐标和后置坐标的变化量。
向左走:x = -1,y = 0
向右走:x = +1,y = 0
向上走:x = 0,y = -1
向下走:x = 0,y = +1
使用switch来选择,将四种方向设为4个case,0到3,定义一个0到3的随机数来执行向哪个方向走。将switch选择置于while循环,定义一个计数器,每次执行有效步数,计数器+1,并同步数组值的交换操作,当计数器达到一定值后结束。
不同难度可以改变计数器的最大值已达到合理的混乱程度。(注意事项,避免数组越域,根据实际情况,可以设置一个值记录上次的走向,让拼块避免往返走节省循环浪费)
dom的操作
因为每一块的图片都是定义在类名里,所以改变拼块就是改变类名,对part-ease进行监听,发生鼠标事件,且是有效拼块时,将其part-ease(位置数字)与empty交换即可,同时改变二维数组的值。
这里插入一个一位数组位置转二维数组位置的算法,因为这个被点击的拼块返回的index是一个它在同为part-ease的一维数组的index所以需要转化。
二维前置坐标 = (index / 数组阶数) 的向下取整
二维后置坐标 = index - 二维前置坐标 * 阶数
拼图完成
只要数组的元素回到[1,2,3,4,5,6,7,8,""]的排列就可以判定拼图成功啦!拼图成功后,图片的缺口将会变成失去的那部分,并提醒。
按钮操作
在html中给container写一个兄弟盒子用来存储按钮,分别为重新开始,选择难度,更换图片,查看原图。
重新开始:重新调用自走功能 选择难度:出现简单,中等,困难选择按钮,点击后,数组和拼图盒子都将初始化
更换图片:更改类名随机切换图片,并阻止使用原来图片
查看原图:对比原图进行游戏,点击返回,隐藏图片
美化
最后我们更改css,将加个背景音乐,我们的拼图游戏就大功告成了!
功能函数
- init(num) 初始化html,和数组,不同难度传值不同。
- begin(arr) 根据数组的存值来操作div类名
- change(index) 根据div类名改变来操作数组
- go() 模拟人为打乱
- winner() 判断胜利条件
项目教训
jquery获取的类对象为静态获取,如果切换难度后将导致新生成的div没有添加click事件,所以不能单独拎出拼块对象,应该将click事件写在初始化里面
遇到了事件冒泡问题,我将难度按钮设置为选择难度的子元素,在点击时发生了事件冒泡,在查阅了资料后修正了Bug
类名与写在标签里的位置无关,与在css文件的位置有关如:
<div class="part-hard part-hard1 bg2"></div>
复制代码
这里part-hard1 和 bg2都定义了一个样式,我曾经以为bg2会覆盖part-hard1,但是事实恰恰相反,因为我在css文件里把bg2写在了part-hard1前面,所以一定要注意啊。
项目源文件都在我的githup里,需要的可以下载。
github.com/colddayer/l…
前端菜鸟游戏篇,拼图游戏!相关推荐
- 微信小程序(游戏)----拼图游戏(设计思路)
微信小程序(游戏)----拼图游戏(设计思路) 设计思路 1.将一张海报等分成 N*N 的矩阵 方法一:利用两个组件循环完成,view组件和image组件,view组件作为盒子规定大小--超出部分不显 ...
- 微信小程序开发的游戏《拼图游戏》
微信小程序开发的游戏<拼图游戏> 代码直接考进去就能用 pintu.js // pintu.js Page({/*** 页面的初始数据*/data: {},initGame: functi ...
- java拼图游戏Mian_Java拼图游戏源码 MainApp启动器
main():
创建主界面类对 联合开发网 - pudn.com...
Java拼图游戏源码 所属分类:其他 开发工具:Java 文件大小:1977KB 下载次数:3 上传日期:2019-05-18 10:44:10 上 传 者:李易峰1 说明: MainApp启动器 ...
- java 拼图游戏_Java 拼图游戏
Java 拼图游戏 2014-07-01·WeaponX 11359 次浏览 ## 效果图 ![pintu.png](https://image.xsoftlab.net/baike/articleI ...
- android拼图游戏报告,拼图游戏报告分析报告.doc
南京邮电大学计算机学院 2014/2015学年第1学期 <JAVA语言>课程报告 课题代号(单选)□课题1 □课题2 □课题3 课题名称: 拼图游戏 小组成员人数(单选)□1人 □2人 □ ...
- 沃拼图游戏软件测试,拼图游戏
/*软件名称: 拼图游戏 /*开发平台: microsoft Visual 6.0 /*测试环境: microsoft Visual 6.0 /*开 发 者: lin_miao /*开发时间: ...
- 沃拼图游戏软件测试,拼图游戏测试报告
QT,拼图游戏,软件工程,说明文档,软件测试 拼图游戏测试报告 目 录 1 测试报告模板........................................................ ...
- cs6制作拼图游戏 dreamweaver_Dreamweaver拼图游戏的实现
龙源期刊网 http://www.qikan.com.cn Dreamweaver 拼图游戏的实现 作者:罗月红 来源:<读与写 · 教育教学版> 2015 年第 08 期 摘要:随着计算 ...
- Java游戏开发——拼图游戏经典版
游戏介绍: 拼图游戏是一款经典的益智游戏,游戏难度分为 简单.正常.困难 三种难度,分别对应3*3,4*4,5*5布局,游戏开始前图片被随机打乱,空块位于最右下角,玩家通过点击空块周围图片或者按键方式 ...
- 两年前端菜鸟回忆篇(1)
如何掉入前端的坑 跟大学舍友讨论着毕业了该干什么工作,对未来充满迷茫,可能是因为到什么时间该考虑什么事情了,话题异常沉重.正当我们一筹莫展之时,学校给我们指了一条明路,计算机系两百个人,四个实习地方, ...
最新文章
- django之Ajax
- 维基解密揭秘CIA五种恶意软件用法
- Python基础篇【第6篇】: Python模块subprocess
- ldap客户端以及jenkins的配置
- [汇编语言]用[bx+idata]的方式进行数组的处理-字母大小写转换
- html中加减号怎么输入,jQuery 实现点击加减号改变input标签中的value值,该怎么解决...
- cp 过程中目录突然挂了_怎么解决管材激光切割机切管过程中出现的过烧及挂渣...
- php explore im,浏栏器-explore.class.php
- 基于Netty的RPC框架
- 后台图片验证码功能是什么实现的
- Linux 挂载华为存储,linux扫描挂载存储
- 企业园区网IPv6地址规划方案与应用
- 【考研政治】1. 导论和基本哲学问题
- 从浏览器直接转跳到APP具体页面---(魔窗)MagicWindow使用教程
- SQL数据库无法附加
- 〖TensorFlow2.0笔记21〗自定义数据集(宝可精灵数据集)实现图像分类+补充:tf.where!
- 文件操作系列之三——(windows中的文件操作)
- 撷英阁-东瀛扶桑之零起点生存日语学习笔记
- thinkphp5 注入 反序列化写文件 phar反序列化
- 2.2 STM32 RAM溢出分析(KEIL在Build的时候提示Error:L6406E:No space in execution)