js实现方块弹珠游戏
下载地址:https://files.cnblogs.com/files/liumaowu/%E5%BC%B9%E4%B8%80%E5%BC%B9%E6%89%93%E6%96%B9%E5%9D%97%E6%B8%B8%E6%88%8F.zip
最近迷上了微信上的小程序——方块弹珠,真巨TM好玩,然后因为学习到Java EE,老师重新讲了html css js,发现js可以十分方便的操作html中的元素,于是萌生了自己实现一个小游戏的想法。游戏效果如下:

优点:
游戏的基本功能都有实现;
可以在func.js前几行的speed赋值随意设置小球速度;
把代码往记事本里面一粘,保存下文件格式就可以运行,不需要编译器,最大的素材是一张背景图片,不要这背景图片的画就几KB;因为代码写的乱怕自己后来看不懂,所以注释相当多。
缺点:
js函数没有按照功能分层到不同文件中,其实刚开始我还想写在html文件中的,结果发现越写越多才独立出来,但翻着还是很烦;
js函数耦合度高,功能不单一;
用canvas绘制的瞄准线延迟很高,所以去掉了鼠标图标;
只有加一球和方块,没有三角形(因为懒);
方形的四个角碰撞用到的几何计算貌似是高中难度的了,反正在草稿纸上画了二十多分钟坐标系没算出来,最后用了比较糊弄人的方法;
速度设置过高,小球会出界一点点,貌似无法避免,因为速度已经调到了1px每ms的单位,想提高速度不能降低循环的时间间隔,只能增加像素大小,导致判断下一步小球位置的时候不会正好等于设置的边界。
遇到的几个值得提一嘴的问题:
1.如何使每次出现的新的方块位置不重叠。这其实就是取几个不重复的随机数的问题。而且产生的方块的个数也是随机的,但最好不要占满一行,所以这个问题可以理解为,如何每次产生一到五个不重复的,小于350的且能被50整除的数(因为方块宽度是50px)。
我采用的方法是:先设置一个数组arr={1,2,3,4,5,6,7},因为一行能放7个方块,所以这7个数字代表可以出现方块的7个位置,然后用for循环循环五次,每次产生一个0~6的随机整数,比如第一次的随机数ramdom=4,那么比较 if(arr[4]==random){ arr[4]=-1;//设置新方块}else{//不做任何操作 },这样第二次循环的时候,如果随机数还是4,那么else中没有任何操作,这次循环就被跳过了,如果不为4的话,就会产生其他位置的新的方块,这样每次至少会出现一个方块,最多出现五个方块,而且位置随机。
2.四个角的碰撞真的挺难算得,我觉得 我用半天应该能算出来,但我直接让它按照原路返回了,但我缩小了碰撞的区域。
js实现方块弹珠游戏的更多相关文章
- ios版弹珠游戏源码
这个是我们比较喜欢玩的一直小游戏的,ios版弹珠游戏源码,该游戏源码来着IOS教程网其他网友提供上传的,大家可以了解一下吧. nore_js_op> <ignore_js_op&g ...
- 洛谷OJ P2356 弹珠游戏 维护前缀和
题目描述 Description MedalPluS 和他的小伙伴 NOIRP 发掘了一个骨灰级别的游戏--超级弹珠. 游戏的内容是:在一个 n*n 的矩阵里,有若干个敌人,你的弹珠可以摧毁敌人,但只 ...
- 洛谷 P2356 弹珠游戏
题目链接:https://www.luogu.org/problemnew/show/P2356 题目 题目描述 MedalPluS 和他的小伙伴 NOIRP 发掘了一个骨灰级别的游戏——超级弹珠. ...
- P1081 弹珠游戏
题目出处 灵灵和他的小伙伴聪聪发掘了一个骨灰级别的游戏--超级弹珠. 游戏的内容是:在一个 n*n 的矩阵里,有若干个敌人,你的弹珠可以摧毁敌人,但只能攻击你所在的行.列里的所有敌人,然后你就可以获得 ...
- 洛谷 P2356 【弹珠游戏】题解
自我感觉应该没有用结构体做的吧 这道题其实非常水 很适合初学贪心的同学做一下 我好像没有用贪心做,嘻嘻 首先先读题, 题目中说这个游戏只能消灭当前所在位置的行.列的敌人 首先特判一下: if(tt== ...
- zzulioj--1790-- 弹珠游戏(数学水题!)
弹珠游戏 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 14 Solved: 10 SubmitStatusWeb Board Descriptio ...
- CODEVS 2994 超级弹珠
题目描述 Description 奶牛们最近从著名的奶牛玩具制造商Tycow那里,买了一套仿真版彩蛋游戏设备.Bessie把她们玩游戏的草坪划成了N*N单位的矩阵,同时列出了她的K个对手在草地上的位置 ...
- BZOJ 1709: [Usaco2007 Oct]Super Paintball超级弹珠
Description 奶牛们最近从著名的奶牛玩具制造商Tycow那里,买了一套仿真版彩弹游戏设备(类乎于真人版CS). Bessie把她们玩游戏草坪划成了N * N(1 <= N<= 1 ...
- BZOJ1709: [Usaco2007 Oct]Super Paintball超级弹珠
1709: [Usaco2007 Oct]Super Paintball超级弹珠 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 324 Solved: ...
随机推荐
- CCF CSP/CCSP报名费优惠的方法以及常见疑问
目录 1. 本文地址 2. 认证作用 2.1. 高校认可 2.2. 赛事认可 2.3. 企业认可 3. 报名费价格及获取优惠的方法 3.1. CCF CSP 3.2. CCF CCSP 4. 语言与I ...
- docker安装各种坑
今天记录一下之前安装docker遇到的各种坑. 我们从http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/这个网站下载. 下 ...
- 搭建Keepalived+LNMP架构web动态博客 实现高可用与负载均衡
环境准备: 192.168.193.80 node1 192.168.193.81 node2 关闭防火墙 [root@node1 ~]# systemctl stop firewalld #两台都 ...
- 洛谷 P2783 有机化学之神偶尔会做作弊(Tarjan,LCA)
题目背景 LS中学化学竞赛组教练是一个酷爱炉石的人. 有一天他一边搓炉石一边监考,而你作为一个信息竞赛的大神也来凑热闹. 然而你的化竞基友却向你求助了. “第1354题怎么做”<--手语 他问道 ...
- 【转载】Mysql注入点在limit关键字后面的利用方法
描写sql注入利用方法的文章数不胜数,本文将描述一种比较特殊的场景. 细节 在一次测试中,我碰到了一个sql注入的问题,在网上没有搜到解决办法,当时的注入点是在limit关键字后面,数据库是MyS ...
- MFC消息详解 (WindowProc|OnCommand|OnNotify)
1. 怎样使用MFC发送一个消息用MFC发送一个消息的方法是, 首先,应获取接收消息的CWnd类对象的指针: 然后,调用CWnd的成员函数SendMessage( ). LRESULT Res=pWn ...
- 【串线篇】spring boot页面模板引擎
如JSP.Velocity.Freemarker.Thymeleaf SpringBoot推荐的Thymeleaf:语法更简单,功能更强大: 一.引入thymeleaf <dependency& ...
- Mybatis(三)MyBatis 注解方式的基本 用法
在 MyBatis注解 SQL 中,最基本的就是@Select.@Insert.@Update 和@Delete 四种.
- Java面向对象(二) 接口、多态和泛型
一.接口 二.多态 多态是同一个行为具有多个不同表现形式或形态的能力. 2.1 类型转换 转换方式 隐式 向上转型 对于基本数据类型,存储容量低的可自动向存储容量高的类型转换 对于引用变量,子类可被转 ...
- js----定义变量的几种方式
const const定义的变量不可以修改,而且必须初始化 const b = 2 //正确 //const b //错误,没有初始化 console.log('函数外const定义b:' + b); ...