--
-- Author: fany
-- Date: 2015-10-13 16:00:13
--
local gameWin = require("app.layers.gameWin")
local gamelost = require("app.layers.gamelost")
local scheduler = require(cc.PACKAGE_NAME .. ".scheduler")
local GameLayer = class("GameLayer", function ( )
return display.newColorLayer(cc.c4b(225, 225, 225, 225))
end)
function GameLayer:ctor()
self.levelTable = {
[1] = {name ="第一关" ,angleTime = 0.065, angle = 1 , startnum = 1 , waitnum = 10} ,
[2] = {name ="第二关" ,angleTime = 0.06, angle = 1 , startnum = 1 , waitnum = 10},
[3] = {name ="第三关" ,angleTime = 0.055, angle = 1, startnum = 1 , waitnum = 10},
[4] = {name ="第四关" ,angleTime = 0.05, angle = 1 , startnum = 1 , waitnum = 10} ,
[5] = {name ="第五关" ,angleTime = 0.04, angle = 1 , startnum = 1 , waitnum = 10} ,
[6] = {name ="第六关" ,angleTime = 0.03, angle = 1 , startnum = 1 , waitnum = 10} ,
[7] = {name ="第七关" ,angleTime = 0.02, angle = 1 , startnum = 1 , waitnum = 10} ,
[8] = {name ="第八关" ,angleTime = 0.01, angle = 1 , startnum = 1 , waitnum = 10}
}
self:setTouchEnabled(true)
self:addNodeEventListener(cc.NODE_TOUCH_EVENT,function ()
-- body
print("add Small boal")
self:addBoal()
-- self:update()
end)
self:onStart(1)
end
function GameLayer:onStart(level)
self.level = level
self.addboal_ ={}
self.waitboal_ ={}
if self.turnNode then
-- self.turnNode:removeFromParent()
self.turnNode = nil
end
self.turnNode = display.newNode()
:align(display.CENTER,display.cx, display.height*2/3+30)
:addTo(self)
print(self.turnNode:getPosition())
--旋转角度
self.angle =self.levelTable[self.level].angle
self.angleTime = self.levelTable[self.level].angleTime
--当前转过的角度
self.turnangle=0
--初始化小球数
self.startnum = self.levelTable[self.level].startnum
self.waitnum = self.levelTable[self.level].waitnum
local bigboal = display.newSprite("boal1.png")
:addTo(self.turnNode)
print("大球位置:",bigboal:getPosition())
local R = 150 +48
self.spBatchNode = display.newBatchNode("s.png")
self.turnNode:addChild(self.spBatchNode)
for i =1 ,self.startnum do
-- local x = math.sin(math.rad(360/self.startnum*(i-1)))*R
-- local y = math.cos(math.rad(360/self.startnum*(i-1)))*R
local x = 0
local y = 200
if i % 2 == 0 then
y = 200
else
y = -200
end
-- local smboal = display.newSprite("s.png")
local smboal = cc.Sprite:createWithTexture(self.spBatchNode:getTexture())
:pos(x, y)
:addTo(self.turnNode)
self.addboal_[smboal]= smboal
dump(self.addboal_)
end
for i =1 ,self.waitnum do
local x = display.cx
local y = display.height/2-100-60*i
local smboal = cc.Sprite:createWithTexture(self.spBatchNode:getTexture())
:pos(x,y)
:addTo(self)
local num = cc.ui.UILabel.new({text = self.waitnum-i+1,size= 30}):addTo(smboal)
num:setPosition(-num:getContentSize().width/2+smboal:getContentSize().width/2,smboal:getContentSize().height/2)
self.waitboal_[self.waitnum-i+1] = smboal
end
self:setTouchEnabled(true)
if self.timer then
scheduler.unscheduleGlobal(self.timer)
self.timer = nil
end
self.timer = scheduler.scheduleGlobal(function()
self:update()
end,self.angleTime)
end
function GameLayer:callback(level)
self:removeAllChildren()
self:onStart(level)
end
function GameLayer:addBoal()
if self.waitnum <= 0 then
-- scheduler.unscheduleGlobal(self.timer)
-- self:setTouchEnabled(false)
-- local param = {}
-- param.level = self.level
-- param.callback = handler(self, self.callback)
-- local gameWin = gameWin.new(param)
-- cc.Director:getInstance():getRunningScene():addChild(gameWin, 120)
return
end
local x = math.sin(math.rad(self.turnangle )) * 200
local y = math.cos(math.rad(self.turnangle + 180)) * 200
local smboal = cc.Sprite:createWithTexture(self.spBatchNode:getTexture())
-- :pos(198*math.sin(math.rad(0)),-198*math.cos(math.rad(0)))
-- :pos(198*math.sin(math.rad(self.turnangle)),-198*math.cos(math.rad(self.turnangle)))
:pos(x , y)
:addTo(self.turnNode)
--判断是否碰撞
for k,p in pairs(self.addboal_) do
local dx = p:getPositionX()-smboal:getPositionX()
local dy = p:getPositionY()-smboal:getPositionY()
local dist = math.sqrt(dx*dx+dy*dy)
if dist<48 then
print("gameover")
scheduler.unscheduleGlobal(self.timer)
local gamelost = gamelost.new()
cc.Director:getInstance():getRunningScene():addChild(gamelost, 120)
end
end
self.addboal_[smboal] = smboal
self.waitboal_[self.waitnum]:removeFromParent()
self.waitboal_[self.waitnum]=nil
self.waitnum= self.waitnum-1
for i =1 ,self.waitnum do
local x = display.cx
local y = display.height/2-100-60*i
self.waitboal_[self.waitnum-i+1]:setPosition(x,y)
print(self.waitnum-i+1)
end
print(self.waitnum)
end
function GameLayer:update()
print("turn around")
if self.waitnum <= 0 then
scheduler.unscheduleGlobal(self.timer)
self:setTouchEnabled(false)
local param = {}
param.level = self.level
param.callback = handler(self, self.callback)
local gameWin = gameWin.new(param)
cc.Director:getInstance():getRunningScene():addChild(gameWin, 120)
return
end
self.turnNode:rotateBy(0,self.angle)
self.turnangle = math.mod(self.turnangle+self.angle,360)
print(self.turnangle)
end
return GameLayer
-- Author: fany
-- Date: 2015-10-13 16:00:13
--
local gameWin = require("app.layers.gameWin")
local gamelost = require("app.layers.gamelost")
local scheduler = require(cc.PACKAGE_NAME .. ".scheduler")
local GameLayer = class("GameLayer", function ( )
return display.newColorLayer(cc.c4b(225, 225, 225, 225))
end)
function GameLayer:ctor()
self.levelTable = {
[1] = {name ="第一关" ,angleTime = 0.065, angle = 1 , startnum = 1 , waitnum = 10} ,
[2] = {name ="第二关" ,angleTime = 0.06, angle = 1 , startnum = 1 , waitnum = 10},
[3] = {name ="第三关" ,angleTime = 0.055, angle = 1, startnum = 1 , waitnum = 10},
[4] = {name ="第四关" ,angleTime = 0.05, angle = 1 , startnum = 1 , waitnum = 10} ,
[5] = {name ="第五关" ,angleTime = 0.04, angle = 1 , startnum = 1 , waitnum = 10} ,
[6] = {name ="第六关" ,angleTime = 0.03, angle = 1 , startnum = 1 , waitnum = 10} ,
[7] = {name ="第七关" ,angleTime = 0.02, angle = 1 , startnum = 1 , waitnum = 10} ,
[8] = {name ="第八关" ,angleTime = 0.01, angle = 1 , startnum = 1 , waitnum = 10}
}
self:setTouchEnabled(true)
self:addNodeEventListener(cc.NODE_TOUCH_EVENT,function ()
-- body
print("add Small boal")
self:addBoal()
-- self:update()
end)
self:onStart(1)
end
function GameLayer:onStart(level)
self.level = level
self.addboal_ ={}
self.waitboal_ ={}
if self.turnNode then
-- self.turnNode:removeFromParent()
self.turnNode = nil
end
self.turnNode = display.newNode()
:align(display.CENTER,display.cx, display.height*2/3+30)
:addTo(self)
print(self.turnNode:getPosition())
--旋转角度
self.angle =self.levelTable[self.level].angle
self.angleTime = self.levelTable[self.level].angleTime
--当前转过的角度
self.turnangle=0
--初始化小球数
self.startnum = self.levelTable[self.level].startnum
self.waitnum = self.levelTable[self.level].waitnum
local bigboal = display.newSprite("boal1.png")
:addTo(self.turnNode)
print("大球位置:",bigboal:getPosition())
local R = 150 +48
self.spBatchNode = display.newBatchNode("s.png")
self.turnNode:addChild(self.spBatchNode)
for i =1 ,self.startnum do
-- local x = math.sin(math.rad(360/self.startnum*(i-1)))*R
-- local y = math.cos(math.rad(360/self.startnum*(i-1)))*R
local x = 0
local y = 200
if i % 2 == 0 then
y = 200
else
y = -200
end
-- local smboal = display.newSprite("s.png")
local smboal = cc.Sprite:createWithTexture(self.spBatchNode:getTexture())
:pos(x, y)
:addTo(self.turnNode)
self.addboal_[smboal]= smboal
dump(self.addboal_)
end
for i =1 ,self.waitnum do
local x = display.cx
local y = display.height/2-100-60*i
local smboal = cc.Sprite:createWithTexture(self.spBatchNode:getTexture())
:pos(x,y)
:addTo(self)
local num = cc.ui.UILabel.new({text = self.waitnum-i+1,size= 30}):addTo(smboal)
num:setPosition(-num:getContentSize().width/2+smboal:getContentSize().width/2,smboal:getContentSize().height/2)
self.waitboal_[self.waitnum-i+1] = smboal
end
self:setTouchEnabled(true)
if self.timer then
scheduler.unscheduleGlobal(self.timer)
self.timer = nil
end
self.timer = scheduler.scheduleGlobal(function()
self:update()
end,self.angleTime)
end
function GameLayer:callback(level)
self:removeAllChildren()
self:onStart(level)
end
function GameLayer:addBoal()
if self.waitnum <= 0 then
-- scheduler.unscheduleGlobal(self.timer)
-- self:setTouchEnabled(false)
-- local param = {}
-- param.level = self.level
-- param.callback = handler(self, self.callback)
-- local gameWin = gameWin.new(param)
-- cc.Director:getInstance():getRunningScene():addChild(gameWin, 120)
return
end
local x = math.sin(math.rad(self.turnangle )) * 200
local y = math.cos(math.rad(self.turnangle + 180)) * 200
local smboal = cc.Sprite:createWithTexture(self.spBatchNode:getTexture())
-- :pos(198*math.sin(math.rad(0)),-198*math.cos(math.rad(0)))
-- :pos(198*math.sin(math.rad(self.turnangle)),-198*math.cos(math.rad(self.turnangle)))
:pos(x , y)
:addTo(self.turnNode)
--判断是否碰撞
for k,p in pairs(self.addboal_) do
local dx = p:getPositionX()-smboal:getPositionX()
local dy = p:getPositionY()-smboal:getPositionY()
local dist = math.sqrt(dx*dx+dy*dy)
if dist<48 then
print("gameover")
scheduler.unscheduleGlobal(self.timer)
local gamelost = gamelost.new()
cc.Director:getInstance():getRunningScene():addChild(gamelost, 120)
end
end
self.addboal_[smboal] = smboal
self.waitboal_[self.waitnum]:removeFromParent()
self.waitboal_[self.waitnum]=nil
self.waitnum= self.waitnum-1
for i =1 ,self.waitnum do
local x = display.cx
local y = display.height/2-100-60*i
self.waitboal_[self.waitnum-i+1]:setPosition(x,y)
print(self.waitnum-i+1)
end
print(self.waitnum)
end
function GameLayer:update()
print("turn around")
if self.waitnum <= 0 then
scheduler.unscheduleGlobal(self.timer)
self:setTouchEnabled(false)
local param = {}
param.level = self.level
param.callback = handler(self, self.callback)
local gameWin = gameWin.new(param)
cc.Director:getInstance():getRunningScene():addChild(gameWin, 120)
return
end
self.turnNode:rotateBy(0,self.angle)
self.turnangle = math.mod(self.turnangle+self.angle,360)
print(self.turnangle)
end
return GameLayer