190行LUA撸撸撸了一天。

时间:2025-02-19 07:42:04
local MainScene = class("MainScene", cc.load("mvc").ViewBase) local bg local bg1 local bgWidth = 0 local bgHeight = 0 local bgMoveSpeed = 2.5 local sPlayerBody local iPlayerWidth local iPlayerHeight local iPlayerBlood local canMove local PlayerBullets = {} local BulletNumber = 1 local BulletTimeSince = 0.5 local EnemyTimeSince = 1 -- local Enemy = {} local Enemys = {} local RandomPoints = {} function MainScene:onCreate() -- add background image -- ("") -- :move() -- :addTo(self) -- -- add HelloWorld label -- :createWithSystemFont("Hello World", "Arial", 40) -- :move(, + 200) -- :addTo(self) local function initBg() bg = :create("img_bg_1.jpg") bgWidth = bg:getTexture():getPixelsWide() bgHeight = bg:getTexture():getPixelsHigh() bg:setAnchorPoint(0,0) bg:setPosition(0,0) self:addChild(bg) bg1 = :create("img_bg_2.jpg") self:addChild(bg1) bg1:setAnchorPoint(0,0) bg1:setPosition(0,bgHeight) end local function UpdateBackGround() if bg:getPositionY() < -bgHeight then bg:setPositionY(bgHeight) end if bg1:getPositionY() < -bgHeight then bg1:setPositionY(bgHeight) end bg:setPositionY(bg:getPositionY()-bgMoveSpeed) bg1:setPositionY(bg1:getPositionY()-bgMoveSpeed) end local function CreatePlayer() sPlayerBody = :create("") sPlayerBody:setAnchorPoint(0.5,0.5) iPlayerWidth = sPlayerBody:getTexture():getPixelsWide() iPlayerHeight = sPlayerBody:getTexture():getPixelsHigh() sPlayerBody:setPosition(( - iPlayerWidth)/2,iPlayerHeight) self:addChild(sPlayerBody) iPlayerBlood = 100 end local function CreateTouchListener() local listenner = :create() listenner:setSwallowTouches(true) listenner:registerScriptHandler(function(touch, event) -- print(("Paddle::onTouchBegan id = %d, x = %f, y = %f", touch:getId(), touch:getLocation().x, touch:getLocation().y)) if (sPlayerBody:getBoundingBox(),touch:getLocation()) then canMove = true -- print("Click player.") end return true end,cc.Handler.EVENT_TOUCH_BEGAN ) listenner:registerScriptHandler(function(touch, event) -- print(("Paddle::onTouchMoved id = %d, x = %f, y = %f", touch:getId(), touch:getLocation().x, touch:getLocation().y)) if canMove then sPlayerBody:setAnchorPoint(0.5,0.5) sPlayerBody:setPosition(touch:getLocation()) end end,cc.Handler.EVENT_TOUCH_MOVED ) listenner:registerScriptHandler(function(touch, event) -- print(("Paddle::onTouchEnded id = %d, x = %f, y = %f", touch:getId(), touch:getLocation().x, touch:getLocation().y)) canMove = false end,cc.Handler.EVENT_TOUCH_ENDED ) local eventDispatcher = self:getEventDispatcher() eventDispatcher:addEventListenerWithSceneGraphPriority(listenner, self) end local function CreatePlayerBullet() local cache = :getInstance() cache:addSpriteFrames("") local sprite = :createWithSpriteFrameName("bullet_1.png") sprite:setPosition((sPlayerBody:getPositionX(), sPlayerBody:getPositionY() + iPlayerHeight / 2)) self:addChild(sprite) (PlayerBullets,1,sprite) end local function CreateEnemy() local sprite = :create("") local randNum = math.random( (RandomPoints)) sprite:setPosition(RandomPoints[randNum]) self:addChild(sprite) local Enemy= {} = sprite = 100 = math.random(5) -- sprite:runAction(:create( :create(animation) ) ) -- sprite:runAction(:create(:create(10, 360) ) ) (Enemys,1,Enemy) end local function DestoryEnemy(Enemy) local function Delete(sender) for k,v in pairs(Enemys) do if v==Enemy then (Enemys,k) self:removeChild(,true) end end end local animFrames = {} local cache = :getInstance() cache:addSpriteFrames("wsparticle_p01.plist") for i = 1, 8 do local frame = cache:getSpriteFrame(string.format("a_00%",i)) -- print(frame) animFrames[i] = frame end local animation = :createWithSpriteFrames(animFrames, 0.3) -- :runAction(:create(animation)) local animationOver = :create(Delete) :runAction(:create(:create(animation),animationOver)) end local function UpdatePlayerBullet() for k,v in pairs(PlayerBullets) do for k1,v1 in pairs(Enemys) do if (Enemys[k1].Sp:getBoundingBox(),(PlayerBullets[k]:getPositionX(),PlayerBullets[k]:getPositionY())) then DestoryEnemy(Enemys[k1]) end end end for k,v in pairs(PlayerBullets) do if v:getPositionY() > then (PlayerBullets,k) self:removeChild(v,true) end end for k,v in pairs(PlayerBullets) do v:setPositionY(v:getPositionY() + bgMoveSpeed*2) end end local function UpdateEnemy() for k,v in pairs(Enemys) do :setPositionY(:getPositionY() - ) end end local function GenRandomPoint() for i = 0,3 do (RandomPoints,1,(i*179,)) end end initBg() :getInstance():getScheduler():scheduleScriptFunc(UpdateBackGround, 0, false) CreatePlayer() CreateTouchListener() CreatePlayerBullet() :getInstance():getScheduler():scheduleScriptFunc(CreatePlayerBullet, BulletTimeSince, false) :getInstance():getScheduler():scheduleScriptFunc(UpdatePlayerBullet, 0, false) GenRandomPoint() :getInstance():getScheduler():scheduleScriptFunc(CreateEnemy, EnemyTimeSince, false) :getInstance():getScheduler():scheduleScriptFunc(UpdateEnemy, 0, false) end return MainScene