别踩白块游戏java项目总结_学习小游戏别踩白块总结
### 最近学习了一个原生js的小游戏,现在总结一下,巩固和复习学到的知识。 首先,要知道一个项目的基本结构和原理,别猜白块是一个简单的小游戏,它的结构和原理也很简单,先要有一个主体盒子给它加一个class叫wrapper,所有的元素都应该包含在这个盒子里,游戏的主体思想是有两个盒子,一个是用户看到的界面,我们给它一个class叫go,另一个是产生方块并带着方块向下运动的盒子,我们给他一个class叫main,我们在go里加一个按钮用来启动游戏
游戏开始
基本的css样式就不具体的讲了,主要就是为wrapper、go和main设置css,特别的是main的top要比go的top小上一个白块的距离,为了保证白块下移到go界面时已经创建好了。
{ margin: 0; padding: 0;} .wrapper { width: 400px; height: 600px; margin: 150px auto; border: 1px solid #000000; position: relative; overflow: hidden; } __#go { width: 100%; position: absolute; top: 0; text-align: center; z-index: 99; } __#go a { display: block; width: 400px; height: 100px; border-bottom: 3px dashed #bbb; text-decoration: none; font-size: 32px; font-weight: 300; color: lightskyblue; line-height: 100px; }
.main { width: 400px; height: 600px; position: relative; top: -150px; /* border: 1px solid blue */ }
然后,就开始js部分了,我们要清楚用户的操作,用户要玩这个游戏第一步肯定是点击开始按钮让游戏开始,所以我们先给go里的开始按钮添加点击事件,
function clickStart() { go.addEventListener('click', function() { go.style.display = 'none'; move(); }) }
用户点击完之后,按钮消失,白块开始下移,move()方法就是白块运动的方法,我们知道方块运动是一个连续的过程,所以我们需要一个定时器来让它在游戏未结束之前一直向下运动。要清楚的是,我们看到的是白块在向下运动,其实不是,真正运动的应该是装着白块的盒子,白块只是被装在盒子里被带着向下,而向下运动也不过是改变main盒子的top值,如果想要加速效果可以添加一个速度speed,达到条件一个让speed+=某个数值就行。main的高度不可能是无限长的能一直向下运动,所以肯定是运动到某个地方它又回去了
var step = parseInt(main.offsetTop) + speed; main.style.top = step + 'px'; if (parseInt(main.offsetTop) >= 0) { cDiv(); main.style.top = '-150px'; }
main开始运动之后,白快也要开始产生了,因为白块是不断产生的,所以我们只能在定时器里动态添加,这里还要清楚一个点,到底什么时候开始生成白块,是一点击开始按钮就开始产生,还是等main运动到go的位置才开始产生,应该是运动到go的位置时,不然白块在go页面之上就开始显示了。先将方块添加到一行中,再将一行添加到盒子中,利用随机数产生黑块的位置,并给它加上class=‘i’用来标记,同时给每一行的方块加上样式
.row { width: 400px; height: 150px; } .row div { width: 99px; height: 149px; float: left; border-left: 1px solid #222; border-bottom: 1px solid #222; }
将一行添加到盒子中应该先看一下盒子中是否已经存在方块了,因为我们要保证新产生的一行是在最上面一行
function cDiv() { var oDiv = document.createElement('div'); var index = Math.floor(Math.random() * 4); oDiv.setAttribute('class', 'row'); for (var j = 0; j < 4; j++) { var iDiv = document.createElement('div'); if (j == index) { iDiv.style.backgroundColor = "#000"; iDiv.setAttribute('class', 'i'); } oDiv.appendChild(iDiv); } if (main.childNodes.length == 0) { main.appendChild(oDiv); } else { main.insertBefore(oDiv, main.childNodes[0]); } }
产生方块后就要为方块绑定点击事件,但方块是不断产生的,所以我们用事件委托将事件绑定到main上,只在main区域里点击才有效,当点击到class为i的方块时说明点击的时黑色方块,这时就加一分,让被点击的方块背景颜色改变,除此之外就是点击到白色方块了,游戏结束,清空定时器,方块停止运动,弹出得分
function bindEvent() { main.addEventListener('click', function(e) { if (flag) { var tar = e.target; if (tar.className == 'i') { num++; tar.style.backgroundColor = '#bbb'; tar.classList.remove('i'); } else { alert("游戏结束,得分:" + num); clearInterval(timer); flag = false; } } }) }
还有一种情况是未点击或者漏点,这时就要判断运动到main盒子下面的方块里是否有黑色的方块,如果有就游戏结束,没有说明全部点到了,游戏继续运行。怎么判断方块是否运动到main下面了呢?可以设置main的高度刚好为页面显示的方块数加上go比main高的哪一行加上运动到main下面一行的数值,我这里设置的6行,页面显示4行,当main的子节点长度为6时就判断最后一行里是否有class为i的子元素,如果有说明没点或漏点,这也游戏结束。运行到main下方的行除了要判断的那一行其他的就移除,这样不会发生方块一直存在不断被往下挤的情况。
var len = main.childNodes.length; if (len == 6) { for (var i = 0; i < 4; i++) { if (main.childNodes[len - 1].children[i].classList.contains('i')) { alert("游戏结束,得分:" + num); clearInterval(timer); flag = false; } } main.removeChild(main.childNodes[len - 1]);
到此所有要实现的功能就完成了,最后还可以加一个锁,当游戏结束后方块不能被点击。 运行结果:
别踩白块游戏java项目总结_学习小游戏别踩白块总结相关推荐
- java项目---全民飞机大战小游戏
项目素材下载地址:https://download.csdn.net/download/m0_51152186/83604685 源码地址:https://download.csdn.net/down ...
- 小游戏策划案例精选_趣味小游戏活动方案_趣味游戏活动策划书
举办活动的时候通常会有一些趣味小活动来活跃气氛,你有玩过哪些趣味小游戏呢,下面学习啦小编给大家整理了一些趣味小游戏活动方案,希望对您有所帮助. 趣味游戏活动方案 活动主旨: 每年农历的正月十五,春节刚 ...
- python小游戏开题报告范文_独立小游戏制作论文开题报告
研究内容.研究方法与思路: 一.研究内容: 基于Unity制作的<绿野仙踪>冒险类游戏,游戏的视觉方面采用3D的游戏视角,剧情是在奥芝国的基础上新改编的童话故事剧情,画风为独特的低多边形画 ...
- 弹球小游戏java代码_android 发射弹球小游戏 附完整源码下载
[实例简介]android 弹球游戏制作 [实例截图] [核心代码] package wyf.ytl; //声明包语句 public class BallGoThread extends Threa ...
- java 五子棋项目_Java项目如何实现五子棋小游戏
Java项目如何实现五子棋小游戏 发布时间:2020-07-21 14:53:06 来源:亿速云 阅读:77 作者:小猪 小编这次要给大家分享的是Java项目如何实现五子棋小游戏,文章内容丰富,感兴趣 ...
- Java项目——TomJerry Jump Game跑酷游戏
猫和老鼠跑酷游戏 开发背景 模块设计 人物类 背景图片 障碍类 关键模块 碰撞测试 键盘监听 计分器成绩框 音效设计 实现效果 缺点和问题 附录源代码 开发背景 模拟Google浏览器中离线小恐龙跑酷 ...
- 面向对象程序设计(Java)课程设计——五子棋小游戏
目录 一.团队成员及任务 二.项目简介 三.功能设计图 四.运行结果截图 五.核心源码 六.课程设计感想与展望 一.团队成员及任务 队长:管俊杰 计科(智能)22-1 202203200037 负责 ...
- 编程语言用 Java 开发一个打飞机小游戏(附完整源码)
编程语言用 Java 开发一个打飞机小游戏(附完整源码) 上图 写在前面 技术源于分享,所以今天抽空把自己之前用java做过的小游戏整理贴出来给大家参考学习.java确实不适合写桌面应用,这里只是通过 ...
- Java控制台游戏~600行代码实现打怪小游戏
Java控制台游戏~600行代码实现打怪小游戏(多图预警) 一,先放个启动界面(一些英雄,怪物技能介绍跟装备属性都写在里边): 二,在这个简单的小游戏里,你可以体验到: 1.打怪: 2.随机玩法寻宝: ...
- java项目第17期-小程序团购+商城源码【毕业设计】
java项目第17期-小程序团购+代理商城源码 1.产品介绍 java小程序+大后台web商城源码 基于ssm的一款电子商城,系统采用maven的父子结构, 1.后台web商城包含的模块有: 会员管理 ...
最新文章
- Python,OpenCV中的霍夫圆变换——cv2.HoughCircles()
- javascript_JavaScript疲劳疲劳
- vue全家桶+Koa2开发笔记(5)--nuxt
- python处理csv数据-python 数据处理 对csv文件进行数据处理
- jquery在ie浏览器下中文乱码的问题
- 机器学习:决策树及ID3,C4.5,CART算法描述
- excel中定义VBA
- IIS中“使用 XSL 样式表无法查看 XML 输入”问题的解决
- 【JAVASCRIPT】处理表单事件
- django 如何写model
- 面试准备——Java回顾:高级编程(多线程、常用类、集合、泛型、IO流、反射、动态代理、新特性)
- Apache Tomcat 再爆严重安全漏洞
- MSC.MD.NASTRAN.V2010\
- 大数据平台层级架构图
- 佳能Canon PIXMA MP236 打印机驱动
- html页面设计扁平化,35个扁平化网站设计灵感
- VS导入easyx图形库
- UTC时间(世界协调时间)和北京时间转换
- Apollo Planning决策规划算法代码详细解析 (13): RuleBasedStopDecider
- 干货精选 | 迅雷链再度亮相“魔都”上海,性能与安全兼得的区块链为何备受关注?...
热门文章
- Java使用Spring Boot、Maven、Spring RestTemplate集成腾讯云通信
- GIS系列专题(3):缓冲区算法对比研究(Buffer Algorithm),类似刀具补偿
- 微信 支付 h5 开发 使用 best-pay-sdk
- Foxmail:修改签名和模板(邮箱、邮件)
- 【历史上的今天】3 月 2 日:雅虎正式成立;PC 设计先驱诞生;Excite@Home 破产
- c语言库用不用下载杀毒软件,开源杀毒软件ClamAV需要你的支持和帮助
- Compiling for iOS 10.0, but module ‘xxx‘ has a minimum deployment target of iOS 12.0
- php观察者模式,组合ArmyVisitor抽象类,用accept()方法将访问者对象传递给当前对象的所有的子元素,当前组件是一个组合体
- matlab中Folder是什么意思,matlab – @folder和文件夹
- 大数据可视化设计师丹尼斯_自助数据可视化设计师如何谋生