一天写一个小游戏,这就是quick的效率,下面我会把实现的代码分3次贴出来哦!

先介绍一下这个小游戏,已经上线app store 名字:见缝插针 英文名字:aazz
玩法介绍可以下载看看哦

1,逻辑实现
主场景的 ctor 方法
fun MainScene:ctor(levelIndex)
–每次进入场景的时候把使用的参数 都重置一下
–为什么要重置,好像不重置的时候 切换场景快一点 会有一些 小bug
self:c_clean()

– 失败的文字 开始不显示
self.failLabel = ui.newBMFontLabel({
text = “Failed!”,
font = “white.fnt”,
x = display.cx,
y = display.cy,
align = ui.TEXT_ALIGEN_CENTER,
})
self:addChild(self.failLabel, 6)
self.failLabel:setColor(ccc3(252,129, 131))
self.failLabel:setScale(0.7)
self.failLabel:setOpacity(0)

--  进入游戏  显示title  第几关

self.titleLabel = ui.newBMFontLabel({
text = "Level "…levelIndex,
font = “blue.fnt”,
x = display.cx,
y = display.top + 50,
align = ui.TEXT_ALIGEN_CENTER,
})
self:addChild(self.titleLabel, 6)
self.titleLabel:setVisible(false)

-- title  稍后做了个简单动画
self:performWithDelay(function()
 self.titleLabel:setVisible(true)
 local seq = transition.sequence({

CCMoveBy:create(0.1,ccp(0,-120)),
CCMoveBy:create(0.2,ccp(0,20))
})
self.titleLabel:runAction(seq)
end,1.0)

--  这个是获取某一关的数据   1000关+ 都配置在Levels.lua文件里面  以下是第一关配置的数据  有详细解释哦
-- ={
--     --=1,--关卡-- 
--     speed1=0.8,--初始角速度 
--     speed2=0.8,--变速后角速度(如果不变填写相同的) 
--     time=0,--变速时间周期(单位秒,填写0表示不变速) 
--     startNumber=3,--默认小球数量(夹角 = 360/数量) 
--     myNumber=3,--目标小球数量 
-- },

self.peizhiData = Levels.get(levelIndex)

sudu = self.peizhiData.speed1
sudu2 = self.peizhiData.speed2
time = self.peizhiData.time * 60
startNumberLevel = self.peizhiData.startNumber
myLevelNumber = self.peizhiData.myNumber

–真正的 角速度
self.realSudu = sudu
–计时间
self.jishiTime = 0

– 场景内加入一个 自定义颜色的layer
display.newColorLayer(ccc4(255, 250, 215, 255)):addTo(self)

--定义一个层  所有的 自由转动都在这个层上
self.contentLayer = display.newLayer()
self.contentLayer:setPosition(ccp(0,100))
self:addChild(self.contentLayer,2)






--再定一个层  这个层放置所有  还没有插入的球  每插入一个  向上移动一点
self.contentLayer2 = display.newLayer()
self:addChild(self.contentLayer2,1)
self.contentLayer2:setPosition(ccp(0,100))


--定义一个半透明的 背景层
self.bgLayer = display.newColorLayer(ccc4(255, 250, 215, 210)):addTo(self,5)
self.bgLayer:setVisible(false)


--self.tableArray  保存转动中的球
self.tableArray = {}
--保存 没有插进去的球
self.ballDown = {}

--添加 资源
self:addResours()
--当前  layer  角度
self.angleDu = 0.0
--  注册触摸事件
self.contentLayer:setTouchMode(cc.TOUCH_MODE_ONE_BY_ONE)  

self.contentLayer:addNodeEventListener(cc.NODE_TOUCH_EVENT, function(event)
return self:onTouch(event.name, event.x,event.y)
end)
self.contentLayer:setTouchEnabled(true)
– 注册帧事件 注册之后一定要 启用 才生效
self:addNodeEventListener(cc.NODE_ENTER_FRAME_EVENT, function(dt)
return self:updateMy()
end)
–开启 update 每1/60 s 执行一次self:updateMy()
self:scheduleUpdate()
self.gameOver = false

–下面是 静态布局
fun MainScene:addResours()
–中间的 大圆球
self.circleAll = display.newSprite(“circle.png”)
self.circleAll:setPosition(ccp(display.cx,display.cy))
self.contentLayer:addChild(self.circleAll,2)

–中间的现实 当前还剩余多少个球没有插进去
self.nowNumberLabel = ui.newBMFontLabel({
text = myLevelNumber,
font = “white.fnt”,
x = display.cx,
y = display.cy + 100,
align = ui.TEXT_ALIGEN_CENTER,
})
self:addChild(self.nowNumberLabel, 3)

-- 预先放置 配置好的球
-- 比如一开始  配置  就有5个球插上了  那么计算出他们各自的位置

for i=1,startNumberLevel do

–r 是小球的半径
local xx = math.sin(math.rad((i - 1) * 360 / startNumberLevel)) * r
local yy = math.cos(math.rad((i - 1) * 360 / startNumberLevel)) * r

 -- 这个是打球和小球之间连接的那条线 也是一个精灵
 local sp0 = display.newSprite("steak.png")
 --计算出位置

sp0:setPosition(ccp(display.cx + xx * 4 /3,display.cy + yy * 4 /3))
–计算出 角度
sp0:setRotation((i - 1) * 360 / startNumberLevel)
self.contentLayer:addChild(sp0,1)

–小球
local ball1 = display.newSprite(“lCircle.png”)
ball1:setPosition(ccp(display.cx + xx * 2,display.cy + yy * 2))
self.contentLayer:addChild(ball1,2)

–把它们 全放入table
self.tableArray#self.tableArray + 1] = ball1
end

–在下面依次排列所有的 未插入的小球
for i=1,myLevelNumber do
local balldd = display.newSprite(“lCircle.png”)
balldd:setPosition(ccp(display.cx,display.cy - r * 2 - (myLevelNumber + 1 - i) * rLittleBall * 3.0))
self.contentLayer2:addChild(balldd,3)

balldd.number = i

–小球上的 数字
local setLabel = ui.newBMFontLabel({
text = i,
font = “white.fnt”,
x = balldd:getContentSize().width/2,
y = balldd:getContentSize().height/2,
align = ui.TEXT_ALIGEN_CENTER,
})
setLabel:setScale(0.36)
balldd:addChild(setLabel, 2)

 --保存所有未插入的小球

self.ballDown#self.ballDown + 1] = balldd
end

–英文不好 见谅啊。 虚线就是红色那个虚线 半透明
local xuxian = display.newSprite(“xuxian.png”,display.cx,display.cy - r - rLittleBall * 3.0)
xuxian:setAnchorPoint(ccp(0.5, 0))
xuxian:setOpacity(100)
self:addChild(xuxian,1)

–失败后 隐藏的按钮
self.backMenu = cc.ui.UIPushButton.new(“menu.png”, {scale9 = false})
:onButtonPressed(function(event)
event.target:setScale(1.1)
end)
:onButtonRelease(function(event)
event.target:setScale(1.0)
end)
:onButtonClicked(function(event)
app:playSound(GAME_SFX.button)
self:donghuaXiaoshi()
self:performWithDelay(function()
app:goMenuScene()
end,1.0)
end)
:pos(-display.cx * 3, display.cy - 200)
:addTo(self,6)

    --重新开始的按钮
self.refreshMenu = cc.ui.UIPushButton.new("refresh.png", {scale9 = false})
    :onButtonPressed(function(event)
        event.target:setScale(1.1)
    end)
    :onButtonRelease(function(event)
        event.target:setScale(1.0)
    end)
    :onButtonClicked(function(event)
        app:playSound(GAME_SFX.button)
        self:donghuaXiaoshi()
        self:performWithDelay(function()
         app:goGameScene()
        end,1.0)
    end)
    :pos(display.cx * 3, display.cy  - 200)
    :addTo(self,6)

这样的话 整个游戏界面 是出来了。

放在github上或者git@osc更好一些啊

不错,加油啊,多分享点

(^o^)/~ :2::2:

看起来不错啊!

支持,分享!挺好的!:2:

81关,第四名了

花了多久? 山寨 aa的把?

创意挺好的:2:

山寨aa啊 还叫aazz

真正是自己想的游戏,都可能要想2天,然后测2天,发现有问题,推翻原来的想法,在想一个星期,再测一个星期
楼主这种掩耳盗铃的方法我常用,花了1整天在做无用功,所以我觉得倒不如,解包,注入广告就好了,大自己签名我们是不会怪你的
感动不了自己的游戏不是好游戏,感动不了玩家的游戏,玩家也不会充钱

http://www.stoneboke.com/?cat=2

以上链接全部破解的,想改哪里改哪里,想挂广告挂广告,半天都不用

http://www.cocoachina.com/bbs/read.php?tid-286726.html
大神帮忙看看这个问题喽!

感谢楼主分享,您的游戏已经被推荐到Cocos引擎中文官网,期待您更多的分享~

大神你好,大神你好棒,大神,我要向你靠齐。