下载地址: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实现方块弹珠游戏的更多相关文章

  1. ios版弹珠游戏源码

    这个是我们比较喜欢玩的一直小游戏的,ios版弹珠游戏源码,该游戏源码来着IOS教程网其他网友提供上传的,大家可以了解一下吧. nore_js_op>     <ignore_js_op&g ...

  2. 洛谷OJ P2356 弹珠游戏 维护前缀和

    题目描述 Description MedalPluS 和他的小伙伴 NOIRP 发掘了一个骨灰级别的游戏--超级弹珠. 游戏的内容是:在一个 n*n 的矩阵里,有若干个敌人,你的弹珠可以摧毁敌人,但只 ...

  3. 洛谷 P2356 弹珠游戏

    题目链接:https://www.luogu.org/problemnew/show/P2356 题目 题目描述 MedalPluS 和他的小伙伴 NOIRP 发掘了一个骨灰级别的游戏——超级弹珠. ...

  4. P1081 弹珠游戏

    题目出处 灵灵和他的小伙伴聪聪发掘了一个骨灰级别的游戏--超级弹珠. 游戏的内容是:在一个 n*n 的矩阵里,有若干个敌人,你的弹珠可以摧毁敌人,但只能攻击你所在的行.列里的所有敌人,然后你就可以获得 ...

  5. 洛谷 P2356 【弹珠游戏】题解

    自我感觉应该没有用结构体做的吧 这道题其实非常水 很适合初学贪心的同学做一下 我好像没有用贪心做,嘻嘻 首先先读题, 题目中说这个游戏只能消灭当前所在位置的行.列的敌人 首先特判一下: if(tt== ...

  6. zzulioj--1790-- 弹珠游戏(数学水题!)

    弹珠游戏 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 14  Solved: 10 SubmitStatusWeb Board Descriptio ...

  7. CODEVS 2994 超级弹珠

    题目描述 Description 奶牛们最近从著名的奶牛玩具制造商Tycow那里,买了一套仿真版彩蛋游戏设备.Bessie把她们玩游戏的草坪划成了N*N单位的矩阵,同时列出了她的K个对手在草地上的位置 ...

  8. BZOJ 1709: [Usaco2007 Oct]Super Paintball超级弹珠

    Description 奶牛们最近从著名的奶牛玩具制造商Tycow那里,买了一套仿真版彩弹游戏设备(类乎于真人版CS). Bessie把她们玩游戏草坪划成了N * N(1 <= N<= 1 ...

  9. BZOJ1709: [Usaco2007 Oct]Super Paintball超级弹珠

    1709: [Usaco2007 Oct]Super Paintball超级弹珠 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 324  Solved: ...

随机推荐

  1. 比较两个Sql数据库是否相同

    1.打开VS20122.SQL→架构比较→新建架构比较3.在源和目标上分别填上两个待比较的数据库的信息4.点击比较,不一会儿,系统就会列出两个数据库的差异了.

  2. Altium Designer设计PCB中如何开槽

    在不同层画槽孔形状实际得到的PCB效果(注意槽孔边缘) 在不同层画槽孔形状进行(注意槽孔边缘) 很多坛友问在使用Altium Designer设计PCB时,想在板子上开一个槽或者挖一个孔该如何操作,是 ...

  3. onupdate

    数据的初始化显示刚开始写在onupdate中,文档类中的数据更新之后,希望通过调用UpdateAllViews(FALSE)来实现视图的更新,可以实现!后来觉得不妥,想把初始化显示写在ondraw中, ...

  4. 理解Promise (4)

    then 方法必须 返回一个新的promise promise2 = promise1.then(onFulfilled, onRejected); 新的Promise 必须返回传递两个方法  onF ...

  5. 使用Node,Vue和ElasticSearch构建实时搜索引擎

    (译者注:相关阅读:node.js,vue.js,Elasticsearch) 介绍 Elasticsearch是一个分布式的RESTful搜索和分析引擎,能够解决越来越多的用例. Elasticse ...

  6. django之请求和响应

    一:请求 1. 浏览器向服务器传参的几种方式: 方式一:通过正则的形式进行传递,名字为未命名模式 路由的正则形式: from django.conf.urls import url from . im ...

  7. Test 6.24 T3 水题

    问题描述 秋之国首都下了一场暴雨,由于秋之国地势高低起伏,不少地方出现了积水. 秋之国的首都可以看成一个 n 行 m 列的矩阵,第 i 行第 j 列的位置高度为 ai,j,首都以外的地方的高度可以都看 ...

  8. CSS中的背景用法详解

    background 属性是CSS中用于设置元素背景的属性,最简单的background属 性名,是针对背景若干设定的合并简写,最早的CSS只能使用单一背景图片,而在现在却可以设置多个背景图片.而不用 ...

  9. sqlserver连接-2

    本地连接 方法1. 方法2. 远程连接 如果无法通过IP地址远程连接你的SQL Server 2008服务器,可以参考下面的内容进行设置. 在进行下述设置之前,应该确保你的网络已经安装设置完毕,服务器 ...

  10. 金山云无法ping通外网

    解决方法:在网络安全组中放行ping端口.