Hi everyone. Im trying to implemet this code to a whack-a-mole type game. What I want is to set balloons in specific positions. For example in the point Y 22, appear first a blue ballon and then a red balloon. Also I want to know how can I do for they appear at the same time randomly indiferent positions.
Thanks all.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | require "sprite" function newExplosionSprite() local explosion = sprite.newSprite(explosionSet) explosion:prepare("default") explosion.isHitTestable = false return explosion end function onBoomEnd(event) event.target:removeSelf() end function getNewBalloon() if(balloonCount < maxBalloons) then randomNum = math.random(totalColors) colorName = colors[randomNum] local balloon = display.newImage("balloon-" .. colorName .. ".png") return balloon else return getBalloonFromPool() end end function addBalloonToPool(balloon) balloonPool[balloonCount] = balloon balloonCount = balloonCount + 1 end function getBalloonFromPool() local balloon = balloonPool[balloonCount] balloonPool[balloonCount] = nil return balloon end function addBalloon() currentBalloonsShown = currentBalloonsShown + 1 balloonsPerLevel = balloonsPerLevel - 1 local balloon = getNewBalloon() balloon:addEventListener("touch", onTouch) balloon.y = display.contentHeight + balloon.contentHeight balloon.x = math.random(display.contentWidth) local tween = transition.to(balloon, {time=5000, y=-100, onComplete=onBalloonEscaped}) currentBalloons[balloon] = {balloon=balloon, tween=tween} return balloon end function onBalloonEscaped(balloon) print("Balloon Escaped") removeBalloon(balloon) end function removeBalloon(balloon) currentBalloonsShown = currentBalloonsShown - 1 local balloonObject = currentBalloons[balloon] transition.cancel(balloonObject.tween) balloonObject.tween = nil balloonObject.balloon = nil currentBalloons[balloonObject] = nil balloon:removeEventListener("touch", onTouch) addBalloonToPool(balloon) end function startBalloons() Runtime:addEventListener("enterFrame", onTick) end function onTick() if(balloonsPerLevel > 0) then if(currentBalloonsShown < balloonsShownPerLevel) then addBalloon() end end end function onTouch(event) local balloon = event.target balloon.isVisible = false local explosion = newExplosionSprite() explosion.x = balloon.x explosion.y = balloon.y explosion:addEventListener("end", onBoomEnd) explosion:play() removeBalloon(balloon) audio.play(popSound) end local function init() level = 1 colors = {"yellow", "blue", "green", "red", "purple", "white"} colorName = "" balloonPool = {} totalColors = 6 randomNum = 0 maxBalloons = 12 balloonCount = 0 balloonsPerLevel = 40 balloonsShownPerLevel = 1 currentBalloonsShown = 0 currentBalloons = {} explosionSpriteSheet = sprite.newSpriteSheet("BigExplosion.png", 82, 117) explosionSet = sprite.newSpriteSet(explosionSpriteSheet, 1, 18) sprite.add(explosionSet, "default", 1, 18, 200, 1) popSound = audio.loadStream("pop.wav") startBalloons() end print("--- Balloon Pop Running ---") init() |