Dear Community,
i am pretty new to LUA and corona sdk and i am coding a Tic Tac Toe app.
In Code #1 the F1.set / F2.set will be changed in the setXO() function after one object (X or O) is set.
So i can prevent putting another object over the already one.
In Code #2 it does not and i have no idea why… But i use the same Code as in #1.
So I hope you understand what my problem is.
Greez
Code #1
----------------------------------------------------------------------------------------- -- -- main.lua -- ----------------------------------------------------------------------------------------- local F1 F1 = display.newRect( display.contentCenterX - 125, display.contentCenterY, 200, 200 ) local F2 F2 = display.newRect( display.contentCenterX + 125, display.contentCenterY, 200, 200 ) local Spieler = 1 F1.set = false F2.set = false function setXO( set, Feld ) if Spieler == 1 and set == false then Feld.Spieler1 = display.newImage( "X.png", display.contentCenterX, display.contentCenterY ) Feld.Spieler1.x = Feld.x Feld.Spieler1.y = Feld.y Spieler = 2 Feld.set = true elseif Spieler == 2 and set == false then Feld.Spieler2 = display.newImage( "O.png" ) Feld.Spieler2.x = Feld.x Feld.Spieler2.y = Feld.y Spieler = 1 Feld.set = true end end function F1:touch( event ) if event.phase == "ended" then setXO( F1.set, F1 ) end end function F2:touch( event ) if event.phase == "ended" then setXO( F2.set, F2 ) end end F1:addEventListener( "touch", F1 ) F2:addEventListener( "touch", F2 )
Code #2
----------------------------------------------------------------------------------------- -- -- Game.lua -- ----------------------------------------------------------------------------------------- local composer = require( "composer" ) local scene = composer.newScene() -- ----------------------------------------------------------------------------------------------------------------- -- All code outside of the listener functions will only be executed ONCE unless "composer.removeScene()" is called. -- ----------------------------------------------------------------------------------------------------------------- -- local forward references should go here -- ------------------------------------------------------------------------------- local BG local RectLeft local RectRight local RectTop local RectBot local F1 local F2 local F3 local F4 local F5 local F6 local F7 local F8 local F9 local Spieler = 1 -- "scene:create()" function scene:create( event ) local sceneGroup = self.view -- Initialize the scene here. -- Example: add display objects to "sceneGroup", add touch listeners, etc. --Hintergrund BG = display.newImageRect( "BG.jpg", display.actualContentWidth, display.actualContentHeight ) BG.x = display.contentCenterX BG.y = display.contentCenterY sceneGroup:insert( BG ) --Grid RectLeft = display.newRect( display.contentCenterX \* 0.7916666667, display.contentCenterY, 10, 300 ) RectLeft:setFillColor( black ) sceneGroup:insert( RectLeft ) RectRight = display.newRect( display.contentCenterX \* 1.2083333333, display.contentCenterY, 10, 300 ) RectRight:setFillColor( black ) sceneGroup:insert( RectRight ) RectTop = display.newRect( display.contentCenterX, display.contentCenterY \* 0.6875, 300, 10 ) RectTop:setFillColor( black ) sceneGroup:insert( RectTop ) RectBot = display.newRect( display.contentCenterX, display.contentCenterY \* 1.3125, 300, 10 ) RectBot:setFillColor( black ) sceneGroup:insert( RectBot ) F1 = display.newRect( display.contentCenterX \* 0.5833333333, display.contentCenterY \* 0.375, 100, 100 ) F2 = display.newRect( display.contentCenterX, display.contentCenterY \* 0.375, 100, 100 ) F2:setFillColor(0.5, 0.5, 0.5) F3 = display.newRect( display.contentCenterX \* 1.4166666667, display.contentCenterY \* 0.375, 100, 100 ) F4 = display.newRect( display.contentCenterX \* 0.5833333333, display.contentCenterY, 100, 100 ) F4:setFillColor(0.5, 0.5, 0.5) F5 = display.newRect( display.contentCenterX, display.contentCenterY, 100, 100 ) F6 = display.newRect( display.contentCenterX \* 1.4166666667, display.contentCenterY, 100, 100 ) F6:setFillColor(0.5, 0.5, 0.5) F7 = display.newRect( display.contentCenterX \* 0.5833333333, display.contentCenterY \* 1.625, 100, 100 ) F8 = display.newRect( display.contentCenterX, display.contentCenterY \* 1.625, 100, 100 ) F8:setFillColor(0.5, 0.5, 0.5) F9 = display.newRect( display.contentCenterX \* 1.4166666667, display.contentCenterY \* 1.625, 100, 100 ) pressFields = display.newGroup() pressFields:insert( F1 ) pressFields:insert( F2 ) pressFields:insert( F3 ) pressFields:insert( F4 ) pressFields:insert( F5 ) pressFields:insert( F6 ) pressFields:insert( F7 ) pressFields:insert( F8 ) pressFields:insert( F9 ) pressFields.alpha = 0 pressFields.isHitTestable = true F1:addEventListener( "touch", F1 ) F2:addEventListener( "touch", F2 ) F3:addEventListener( "touch", F3 ) F4:addEventListener( "touch", F4 ) F5:addEventListener( "touch", F5 ) F6:addEventListener( "touch", F6 ) F7:addEventListener( "touch", F7 ) F8:addEventListener( "touch", F8 ) F9:addEventListener( "touch", F9 ) end -- "scene:show()" function scene:show( event ) local sceneGroup = self.view local phase = event.phase if ( phase == "will" ) then -- Called when the scene is still off screen (but is about to come on screen). elseif ( phase == "did" ) then -- Called when the scene is now on screen. -- Insert code here to make the scene come alive. -- Example: start timers, begin animation, play audio, etc. F1.set = false F2.set = false F3.set = false F4.set = false F5.set = false F6.set = false F7.set = false F8.set = false F9.set = false function setXO( set, Field ) if Spieler == 1 and set == false then Field.Spieler1 = display.newImage( "X.png", display.contentCenterX, display.contentCenterY ) Field.Spieler1.x = Field.x Field.Spieler1.y = Field.y Spieler = 2 Field.set = true elseif Spieler == 2 and set == false then Field.Spieler2 = display.newImage( "O.png" ) Field.Spieler2.x = Field.x Field.Spieler2.y = Field.y Spieler = 1 Field.set = true end end function F1:touch( event ) if event.phase == "ended" then setXO( F1.set, F1 ) end end function F2:touch( event ) if event.phase == "ended" then setXO( F2.set, F2 ) end end function F3:touch( event ) if event.phase == "ended" then setXO( F3.set, F3 ) end end function F4:touch( event ) if event.phase == "ended" then setXO( F4.set, F4 ) end end function F5:touch( event ) if event.phase == "ended" then setXO( F5.set, F5 ) end end function F6:touch( event ) if event.phase == "ended" then setXO( F6.set, F6 ) end end function F7:touch( event ) if event.phase == "ended" then setXO( F7.set, F7 ) end end function F8:touch( event ) if event.phase == "ended" then setXO( F8.set, F8 ) end end function F9:touch( event ) if event.phase == "ended" then setXO( F9.set, F9 ) end end end end