来玩泡泡龙

花了一小时,做了准备工作

发射泡泡

按下屏幕可以发射泡泡,泡泡碰撞后,粘在上面

泡泡粘贴的位置

根据角度计算

var radian = Math.atan2(pointB.y - pointA.y, pointB.x - pointA.x )var angle = 180 / Math.PI * radian
console.log("angle=", angle)
if(angle>=45 && angle<=90){//右下角
}
else if(angle>90 && angle<=135){//左下角
}
else if(angle<45 && angle>=-45){//右
}
else if(angle<-45 && angle >= -90){//右上角
}
else if(angle<-90 && angle >= -135){//左上角
}
else{//左
}

消除计算

每个发射球周围有六个球,依次计算他们是否跟发射球颜色相同,如果相同,再次递归,直到找不到相同颜色球

function checkSameTypeSize(newI, newJ, tempType){console.log("checkSameTypeSize ", newI, newJ, tempType)var hasSize = 0var flag = newI%2var len = flag==0?9:10var otherLen = flag==1?9:10var tempPoint = new Array//左侧泡泡if(newJ-1>=0){if(level.arrays[newI][newJ-1] == tempType){tempPoint.push(Qt.point(newI, newJ-1))}}//右侧泡泡if(newJ+1<=len-1){if(level.arrays[newI][newJ+1] == tempType){tempPoint.push(Qt.point(newI, newJ+1))}}//上侧if(newI-1>=0){if(flag==0){//上层是偶数行if(newJ>=0){//上左侧泡泡//上左侧 存在if(level.arrays[newI-1][newJ] == tempType){tempPoint.push(Qt.point(newI-1, newJ))}}//上右侧泡泡if(newJ+1<=otherLen-1){//存在if(level.arrays[newI-1][newJ+1] == tempType){tempPoint.push(Qt.point(newI-1, newJ+1))}}}else{//上层是奇数行if(newJ-1>=0){//上左侧泡泡//上左侧 存在if(level.arrays[newI-1][newJ-1] == tempType){tempPoint.push(Qt.point(newI-1, newJ-1))}}//上右侧泡泡if(newJ<=otherLen-1){//存在if(level.arrays[newI-1][newJ] == tempType){tempPoint.push(Qt.point(newI-1, newJ))}}}}//下侧if(newI+1<level.arrays){if(flag==0){//下层是偶数行if(newJ>=0){//下左侧泡泡//下左侧 存在if(level.arrays[newI+1][newJ] == tempType){tempPoint.push(Qt.point(newI+1, newJ))}}//下右侧泡泡if(newJ+1<=otherLen-1){//存在if(level.arrays[newI+1][newJ+1] == tempType){tempPoint.push(Qt.point(newI+1, newJ+1))}}}else{//下层是奇数行if(newJ-1>=0){//下左侧泡泡//下左侧 存在if(level.arrays[newI+1][newJ-1] == tempType){tempPoint.push(Qt.point(newI+1, newJ-1))}}//上右侧泡泡if(newJ<=otherLen-1){//存在if(level.arrays[newI+1][newJ] == tempType){tempPoint.push(Qt.point(newI+1, newJ))}}}}var tempArrayFunc = new Arrayfor(var p=0 in tempPoint){var pp = tempPoint[p]if(tempArray[pp.x][pp.y]==1){//已经采集过这个点}else{tempArray[pp.x][pp.y] = 1tempArrayCaiji++tempArrayFunc.push(Qt.point(pp.x, pp.y))}}//递归采集for(var p=0 in tempArrayFunc){var pp = tempArrayFunc[p]console.log("============pp", pp)checkSameTypeSize(pp.x, pp.y, tempType)}}

粘贴位置优化

六个方向每个角度为60

边界碰撞优化

碰撞边界后不超出边界,强制设置x,y坐标

function checkScreen(x, y){var w = Screen.widthvar h = Screen.heightvar radian = Math.PI/180 * moveAnglevar point = Qt.point(x,y)if(x<=2/* && moveAngle<-90*/){moveAngle = -(180+moveAngle)point.x = 2point.y = (fireBall.x-2)*Math.tan(radian) + fireBall.y}else if(x+ballRadius*2+2>=w /*&& moveAngle>-90*/){moveAngle = 180-moveAnglepoint.x = w-ballRadius*2-2point.y = (w-fireBall.x-ballRadius*2-2)*Math.tan(radian) + fireBall.y}return point}

球与球碰撞优化

碰撞前不移动发射球,检测到预碰撞后,下次坐标直接设置为正确的点位置

分数

//计分
score += ballScore

泡泡破碎

破碎优化

菜单与关卡

未完待续

从零开始的泡泡龙游戏相关推荐

  1. 基于cocos2d-x简易泡泡龙游戏

    欢迎转载http://blog.csdn.net/demon_wu/article/details/9919115 最近公司的项目一直没有开工,所以自己给自己点事情做,写了一个简易的泡泡龙游戏.实习三 ...

  2. 基于cocos2d-x简易泡泡龙游戏二

    欢迎大家转载http://blog.csdn.net/demon_wu/article/details/9925663 上一章节是一个下午的功劳,做了基础的界面和发射的功能,发射完了我们需要停止,停止 ...

  3. 泡泡龙游戏算法实现简介

    最近在公司新接了一个游戏的修改任务.游戏名字叫<彩色泡泡>.主要是参考经典的泡泡龙实现的.这个游戏从接手到修改,走了很多弯路.我修改后的代码简直是惨不忍睹.也许再过一段时间我看自己的代码, ...

  4. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第二讲html运行原理及结构

    陈力:传智播客古代 珍宝币 泡泡龙游戏开发第二讲html运行原理及结构 摘要:通过前节<陈力:传智播客古代 珍宝币 泡泡龙游戏开发>第一讲:前言的学习,我们知道了PHP是PHP: Hype ...

  5. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第十五讲:HTML教程笔记

    陈力:传智播客古代 珍宝币 泡泡龙游戏开发第十五讲:HTML教程笔记 摘要:通过前节<第十三讲:盒子的定位实例>学习了网站建设中的DIV+CSS中实例综合应用介绍.本节对HTML试题笔记进 ...

  6. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第35讲:PHP 抽象类与接口

    陈力:传智播客古代 珍宝币 泡泡龙游戏开发第35讲:PHP 抽象类与接口 如果一个类使用abstract 来修饰,则该类就是抽象类.抽象方法是声明为abstract的,是不需要实现的,供子类继承且实现 ...

  7. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第22讲:PHP语法、数据类型(整型、布尔型、浮点型、字符串型)

    陈力:传智播客古代 珍宝币 泡泡龙游戏开发第22讲:PHP语法.数据类型(整型.布尔型.浮点型.字符串型) PHP语法是什么样的,有哪些数据类型,有些什么变量.本文对PHP语法.数据类型(整型.布尔型 ...

  8. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第48讲:PHP绘图技术

    陈力:传智播客古代 珍宝币 泡泡龙游戏开发第48讲:PHP绘图技术 php绘图坐标体系中,坐标原点位于左上角,以像素为单位.php绘图时,要创建画布.画出各种图形.输出图形.销毁图形(释放内存资源). ...

  9. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第26讲:PHP函数

    陈力:传智播客古代 珍宝币 泡泡龙游戏开发第26讲:PHP函数 什么是PHP函数,如何通过function定义一个函数,如何理解函数的调用过程.这些问题都是网站建设中经常遇到的程序设计问题.在进行网站 ...

  10. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第28讲:PHP数组

    陈力:传智播客古代 珍宝币 泡泡龙游戏开发第28讲:PHP数组 PHP程序设计语言中的数组如何创建,一维数组的引用,PHP数组变量,foreach语句,如何对数组进行排序等等知识都是贵阳网站建设中的主 ...

最新文章

  1. LCS005标准版部署之三
  2. 数据库多对多设计方案(贴标签的设计方案)
  3. Xcode7.2如何真机调试iOS 9.3的设备
  4. 典型用户描述及进一步需求分析
  5. wxWidgets:将 PNG 图像文件包含到可执行文件中
  6. 在MSF中怎么区分易混淆的工作项类型:Bug、风险和问题(我个人的理解)
  7. oracle 10g RAC app VIP ,ONS,GSD,ASM,OCR,VOTE名称及代表的涵义。
  8. perl linux 运行,在Ubuntu中启动时运行perl脚本
  9. 自己用纯Java写的这款Mysql客户端工具美哭了,求收藏~
  10. 数据传输服务器系统图,档案数字化管理系统
  11. 关于微信网页版WeChat不能正常登录的最佳解决方案
  12. PCB四层板设计步骤
  13. 前端工作怎么包装简历,需要掌握哪些知识项目
  14. tensorflow的None下标、equal和consum函数总结
  15. (附源码)springboot基于微信小程序的高校计算机类课程思政库的设计与实现 毕业设计 271611
  16. 【Mask scoring RCNN】实现目标检测
  17. 如何利用QQ邮件列表进行邮件营销-QQ邮件列表营销的操作方法
  18. 利用 OpenCV 和 Caffe,根据大合影构造“平均脸”
  19. c语言无符号整型右移,c语言 java 有符号数,无符号数. 左移,右移运算
  20. 关于“Could not open ServletContext resource [/WEB-INF/applicationContext.xml]”解决方案

热门文章

  1. Typora标题增加序号
  2. 银河麒麟服务器操作系统常用问题及解决方案
  3. linux 组建raid0教程,用两块硬盘组建RAID0磁盘阵列简单教程(图文详解)
  4. python登录判断用户名和密码_第一个python程序-判断登陆用户名和密码是否正确...
  5. 前端的三种缓存技术cookie、localStorage、sessionStorage
  6. Java 学习笔记:第十一章 多线程技术
  7. 科学计算机壁纸,科幻题材电脑插画桌面壁纸
  8. 【渝粤题库】陕西师范大学209004道德教育案例研究 作业 (高起专)
  9. c语言中双引号是什么作用,C语言中单引号与双引号的区别
  10. android开机加速器,安卓手机开机如何加速