美文网首页
从零开始的泡泡龙游戏

从零开始的泡泡龙游戏

作者: 技术喵 | 来源:发表于2019-07-08 07:42 被阅读0次

来玩泡泡龙

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

0_1525269456973_QQ图片20180502215537.jpg

发射泡泡

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

0_1525327635185_Screenshot_20180503-140700.jpg

泡泡粘贴的位置

0_1525334610207_QQ截图20180503160252.png

根据角度计算

0_1525335750992_QQ截图20180503161857.png
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 = 0
        var flag = newI%2
        var len = flag==0?9:10
        var otherLen = flag==1?9:10

        var 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 Array

        for(var p=0 in tempPoint){
            var pp = tempPoint[p]
            if(tempArray[pp.x][pp.y]==1){
                //已经采集过这个点
            }
            else{
                tempArray[pp.x][pp.y] = 1
                tempArrayCaiji++
                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.width
        var h = Screen.height
        var radian = Math.PI/180 * moveAngle

        var point = Qt.point(x,y)

        if(x<=2/* && moveAngle<-90*/){
            moveAngle = -(180+moveAngle)
            point.x = 2
            point.y = (fireBall.x-2)*Math.tan(radian) + fireBall.y
        }
        else if(x+ballRadius*2+2>=w /*&& moveAngle>-90*/){
            moveAngle = 180-moveAngle
            point.x = w-ballRadius*2-2
            point.y = (w-fireBall.x-ballRadius*2-2)*Math.tan(radian) + fireBall.y
        }

        return point
    }

球与球碰撞优化

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

分数

//计分
score += ballScore

泡泡破碎

0_1525404206965_ball1.gif

破碎优化

0_1525411221012_ball3.gif

菜单与关卡

0_1525420516148_Screenshot_20180504-155437.jpg 0_1525420525652_Screenshot_20180504-155442.jpg

未完待续

相关文章

  • 从零开始的泡泡龙游戏

    来玩泡泡龙 花了一小时,做了准备工作 发射泡泡 按下屏幕可以发射泡泡,泡泡碰撞后,粘在上面 泡泡粘贴的位置 根据角...

  • 《皮皮猫》打击感超强的消除游戏

    还记得泡泡龙吗?虽然《皮皮猫》跟泡泡龙名字比较相似,游戏内容也很相近,但是《皮皮猫》比泡泡龙有趣多了,泡泡...

  • 游戏 - 泡泡龙消消乐游戏大全

    “第一次打开游戏请允许“使用数据”,否则游戏无法正常运行。” 简洁经典的泡泡龙游戏:泡泡龙大作战来了!操作简单,3...

  • 单机游戏

    这是一款经典的泡泡龙游戏,与传统的泡泡龙游戏不同,它拥有新奇的玩法,全新的得分模式,丰富的闯关目标以及精美的世界地...

  • 泡泡龙

    泡泡龙

  • 过头

    回眸泡泡龙

  • 你的游戏化学习🈳️间是几维?

    【我思我在】20170703《游戏改变世界》学而思D2 ️今天课件里的两个游戏是泡泡龙和毁灭战士2 依然是没有玩过...

  • BBTAN|只需要3分钟,你111%绝对会上瘾。

    还记不记得小时候玩过的打砖块游戏,今天我们来用泡泡龙打砖块,来试试这款魔性的游戏,我就不信你不上瘾。 霓虹灯的画风...

  • Android游戏编程之从零开始.pdf 免费下载

    下载地址:Android游戏编程之从零开始.pdf

  • 2020-03-20

    《掌心泡泡龙游戏》 App 尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务,《掌心泡...

网友评论

      本文标题:从零开始的泡泡龙游戏

      本文链接:https://www.haomeiwen.com/subject/fphihctx.html