Мой обновленный код для моего файла game.lua.Corona SDK Game Restart
local composer=require("composer")
local physics=require("physics")
local widget=require("widget")
local scene=composer.newScene()
physics.setDrawMode("normal")
--erased system activate check later
system.activate("multitouch")
--CHECK THIS _H AND _W
_H=display.contentHeight
_W=display.contentWidth
physics.start()
physics.setGravity(0,-5)
trumps=0
numTrumps=100
startTime=20
totalTime=20
timeLeft=true
playerReady=false
Random=math.random
local function Restart(event)
if "began"==event.phase then
if(timeLeft~=false) then
timer.cancel(gameTimer)
end
end
if "moved"==event.phase then
end
if "ended"==event.phase then
composer.gotoScene("restarttest")
end
end
local function gameOver(condition)
if (condition=="winner") then
screenText.text="Adios Trump!"
elseif (condition=="notbad") then
screenText.text="Barely stopped Trump"
elseif (condition=="loser") then
screenText.text="Ready for That Wall!"
end
end
local function removeTrumps(obj)
obj:removeSelf()
trumps=trumps-1
if (timeLeft~=false) then
if(trumps==0) then
timer.cancel(gameTimer)
gameOver("winner")
elseif(trumps<=40) then
gameOver("notbad")
elseif(trumps>=31) then
gameOver("loser")
end
end
end
local function countDown(event)
if (startTime==totalTime) then
playerReady=true
screenText.text="Hurry!"
end
startTime=startTime-1
timeText.text="Time: "..startTime
if (startTime==0) then
timeLeft=false
end
end
--[[local function spawn(params)
local myTrump=display.newImage(params.image, 25, 25)
myTrump.myTrumpTable=params.myTrumpTable
myTrump.index=#myTrump.myTrumpTable+1
myTrump.myName="Donald: ".. myTrump.index
if params.hasBody then
myTrump.density=.1
myTrump.friction=0
myTrump.bounce=.9
myTrump.radius=9
myTrump.bodyType="dynamic"
physics.addBody(myTrump,"dynamic",{density=myTrump.density, friction=myTrump.friction, bounce=myTrump.bounce,radius=myTrump.radius})
end
myTrump.myTrumpTable[myTrump.index]=myTrump
return myTrump
end
local spawnTable={}
for i=1, 100 do
local spawns=spawn(
{
image="tp.png",
myTrumpTable=spawnTable,
hasBody=true,
bounce=.9,
radius=9,
density=.1,
bodyType="dynamic",
}
)
end
--]]
local function startGame()
myTrump=display.newImageRect("tp.png",25,25)
myTrump.x=Random(50,_W-50)
myTrump.y=(_H+10)
physics.addBody(myTrump,"dynamic",{density=.1,friction=0,bounce=.9,radius=9})
function myTrump:touch(event)
if(timeLeft~=false) then
if (playerReady==true) then
if(event.phase=="ended") then
removeTrumps(self)
end
end
end
end
myTrump:addEventListener("touch",myTrump)
trumps=trumps+1
if(trumps==numTrumps) then
gameTimer=timer.performWithDelay(1000,countDown,totalTime)
else
playerReady=false
end
end
local gameTimer=timer.performWithDelay(20,startGame,numTrumps)
function scene:create(event)
local screenGroup=display.newGroup()
background=display.newImage(screenGroup,"tflag.png")
but1=widget.newButton{screenGroup,label="Restart",onEvent=Restart}
but1.x=_W/2+150
but1.y=_H-10
screenText=display.newText(screenGroup,"...Waiting for Trump...",0,0,native.systemFont,16*2)
screenText.xScale=.5
screenText.yScale=.5
screenText.anchorX=(0)
screenText.anchorY=(0)
screenText.x=_W/2-210
screenText.y=_H-20
timeText=display.newText(screenGroup,"Time:"..startTime,0,0,native.systemFont,16*2)
timeText.xScale=.5
timeText.yScale=.5
timeText.anchorY=0
timeText.anchorX=0
timeText.x=_W/2
timeText.y=_H-20
leftWall=display.newRect(screenGroup,483,50,1,1000)
leftWall:setFillColor(0,0,200)
rightWall=display.newRect(screenGroup,0,0,1,1000)
rightWall:setFillColor(0,0,200)
ceiling=display.newRect(screenGroup,150,0,1000,1)
ceiling:setFillColor(0,0,200)
physics.addBody(leftWall,"static",{bounce=.1})
physics.addBody(rightWall,"static",{bounce=.1})
physics.addBody(ceiling,"static",{bounce=.1})
end
function scene:show(event)
local screenGroup=display.newGroup()
if event.phase=="will" then
end
if event.phase=="did" then
end
end
function scene:hide(event)
local screenGroup=display.newGroup()
if event.phase=="will" then
end
if event.phase=="did" then
Runtime:removeEventListener("touch",myTrump)
end
end
function scene:destroy(event)
if event.phase=="will" then
physics.removeBody(leftWall)
physics.removeBody(rightWall)
physics.removeBody(ceiling)
physics.removeBody(myTrump)
display.remove(myTrump)
display.remove(timeText)
display.remove(screenText)
display.remove(but1)
display.remove(background)
display.remove(screenGroup)
end
if event.phase=="did" then
end
end
scene:addEventListener("create",scene)
scene:addEventListener("show",scene)
scene:addEventListener("hide",scene)
scene:addEventListener("destroy",scene)
return scene
Теперь это мой код для моего файла рестарта
local composer=require("composer")
local scene=composer.newScene()
--background
function scene:create(event)
--background=display.newImage(screenGroup,"tflag.png")
end
function start(event)
if event.phase=="began" then
--composer.removeScene("game1")
end
if event.phase=="ended" then
--composer.gotoScene("game1")
end
end
function scene:show(event)
--background:addEventListener("touch",start)
if event.phase=="will" then
composer.removeScene("game1")
else if event.phase=="did" then
composer.gotoScene("game1")
end
end
end
function scene:hide(event)
if event.phase=="will" then
end
if event.phase=="did" then
--background:removeEventListener("touch",start)
end
end
function scene:destroy(event)
end
scene:addEventListener("create",scene)
scene:addEventListener("show",scene)
scene:addEventListener("hide",scene)
scene:addEventListener("destroy",scene)
return scene
МОЯ Единственная проблема в том, что, когда я перезагружать образы козырей больше не на экране, но все еще есть, но только невидимая вы можно сказать. Поэтому, когда появляются новые изображения после перезапуска игры, они не могут попасть в верхнюю часть экрана, как они предполагают, потому что их останавливают невидимые «козыри» из предыдущей игры.
Моя игра основана на этой игре, но нет воздушных шаров, вместо этого есть фотографии Дональда Трампа. https://www.raywenderlich.com/22064/how-to-make-a-simple-game-with-corona
Спасибо, Брет, но у меня все еще есть проблема. Козыри теперь не идут на вершину, но таймеры работают по назначению. Спасибо вам за это! Моя вторая проблема заключается в том, что кнопка перезапуска работает только один раз. Я изменил строку Physics.start() на начало и установил гравитацию в начале кода. – RoBoTV
Выполняют ли козыри вверх или вообще останавливаются в точке? Кроме того, зачем использовать совершенно другую сцену для перезапуска, если вы не показываете ничего нового? Не можете ли вы просто сделать кнопку перезапуска напрямую с помощью козырей и таймеров? –
Проблема с перезагрузкой может быть вызвана тем, что вы не уничтожаете эту сцену. Вы создаете его снова, но не удаляете текущий. composer: gotoScene() не будет помнить сцену: create(), если она не была уничтожена. –