Hi guys and ty for constantly hepling me, im getting the error i attacched when i try to do this :
[lua] local risultato2 = risultato 2 + risultato [/lua]
Hi guys and ty for constantly hepling me, im getting the error i attacched when i try to do this :
[lua] local risultato2 = risultato 2 + risultato [/lua]
The error is exactly what it is telling you - risultato2 is nil because it hasn’t been defined yet (I assume the gap in your example is a typo)
local risultato2 = 0 risultato2 = risultato2 + risultato
To remove the space in risultato 2
ty guys anyway i figured out how to solve it.
Now theres another problem tho:
[lua] --funzione per il numero 0
local function handleButtonEvent0 ( event )
local phase = event.phase
if “ended” == event.phase then
numericField.text = numericField.text…“0”
local risultato = tonumber(numericField.text)
end
end [/lua] i have these handlebuttonevents for buttons between 0 and 9, whenever i press “-” on the calculator tho
[lua] --funzione per la sottrazzione
local function handleButtonEventSottr ( event )
local phase = event.phase
if “ended” == event.phase then
numericField.text = numericField.text…"-"
local risultato2 = risultato - risultato2
end
end [/lua] it gives me 0 so i tried [lua] print (risultato) [/lua] to see if that was the problem and infact risultato = 0, can anyone help me out ? tysm
yea i did this but risultato is equal to 0 and idk why
You need to look into scope. Again, this is because you’re trying to do things before you have learnt the basics of lua, like trying to write a book in French before you know, well, French.
ty anyway
The very basic premise is that a local variable is only visible to the ‘scope’ it is defined in.
[lua]
local variable_ONE = 4 – I am defined at the file-level, I am visible to everything below me in this lua file.
local myFunction = function ()
local variable_TWO = 3 – I am defined at function-level, I am visible to everything below me inside this function. My value is forgotten as soon as the function ends.
variable_ONE = 5 – this is how to change variable_ONE so it is visible outside this function.
local variable_ONE = 2
– I am a completely different variable to the one above, albeit with the same name. You can no longer access the one above in this function, and changing me has no effect on the one above.
end
[/lua]
first of all ty. Im still having trouble with this calculator… i cant find a way to actually do subtractions when the minus button is pressed, sums when the + is pressed etc… this is my code could u help me out
[lua] local composer = require( “composer” )
local scene = composer.newScene()
– Code outside of the scene event functions below will only be executed ONCE unless
– the scene is removed entirely (not recycled) via “composer.removeScene()”
local risultato = 0
local risultato2 = 0
local numericField = native.newTextField ( 162 , 90 ,315 , 50 )
numericField.text = “”
– Scene event functions
– create()
function scene:create( event )
local sceneGroup = self.view
– Code here runs when the scene is first created but has not yet appeared on screen
device_width = display.contentWidth --larghezza in pixel dello schermo del tel
device_height = display.contentHeight --altezza in pixel dello schermo del tel
local coomposer = require (“composer”)
–impostazione sfondo
local sfondo = display.newImageRect( “sfondonero.png”,device_width,device_height)
sfondo.x= device_width/2
sfondo.y= device_height/2
–richiamo libreria per i widgets
local widget = require(“widget”)
–funzione che viene richiamata quando il bottone viene premuto quindi quando è nello stato “ended”
--funzione per il numero 1
local function handleButtonEvent1 ( event )
local phase = event.phase
if “ended” == event.phase then
if risultato2 ~= 0 then
risultato = 0
numericField.text = numericField.text…“1”
risultato = tonumber(numericField.text)
else
numericField.text = numericField.text…“1”
risultato = tonumber(numericField.text)
end
end
end
–funzione per il numero 2
local function handleButtonEvent2 ( event )
local phase = event.phase
if “ended” == event.phase then
if risultato2 ~= 0 then
risultato = 0
numericField.text = numericField.text…“2”
risultato = tonumber(numericField.text)
else
numericField.text = numericField.text…“2”
risultato = tonumber(numericField.text)
end
end
end
–funzione per il numero 3
local function handleButtonEvent3 ( event )
local phase = event.phase
if “ended” == event.phase then
if risultato2 ~= 0 then
risultato = 0
numericField.text = numericField.text…“3”
risultato = tonumber(numericField.text)
else
numericField.text = numericField.text…“3”
risultato = tonumber(numericField.text)
end
end
end
--funzione per il numero 4
local function handleButtonEvent4 ( event )
local phase = event.phase
if “ended” == event.phase then
if risultato2 ~= 0 then
risultato = 0
numericField.text = numericField.text…“4”
risultato = tonumber(numericField.text)
else
numericField.text = numericField.text…“4”
risultato = tonumber(numericField.text)
end
end
end
–funzione per il numero 5
local function handleButtonEvent5 ( event )
local phase = event.phase
if “ended” == event.phase then
if risultato2 ~= 0 then
risultato = 0
numericField.text = numericField.text…“5”
risultato = tonumber(numericField.text)
else
numericField.text = numericField.text…“5”
risultato = tonumber(numericField.text)
end
end
end
–funzione per il numero 6
local function handleButtonEvent6 ( event )
local phase = event.phase
if “ended” == event.phase then
if risultato2 ~= 0 then
risultato = 0
numericField.text = numericField.text…“6”
risultato = tonumber(numericField.text)
else
numericField.text = numericField.text…“6”
risultato = tonumber(numericField.text)
end
end
end
–funzione per il numero 7
local function handleButtonEvent7 ( event )
local phase = event.phase
if “ended” == event.phase then
if risultato2 ~= 0 then
risultato = 0
numericField.text = numericField.text…“7”
risultato = tonumber(numericField.text)
else
numericField.text = numericField.text…“7”
risultato = tonumber(numericField.text)
end
end
end
–funzione per il numero 8
local function handleButtonEvent8 ( event )
local phase = event.phase
if “ended” == event.phase then
if risultato2 ~= 0 then
risultato = 0
numericField.text = numericField.text…“8”
risultato = tonumber(numericField.text)
else
numericField.text = numericField.text…“8”
risultato = tonumber(numericField.text)
end
end
end
–funzione per il numero 9
local function handleButtonEvent9 ( event )
local phase = event.phase
if “ended” == event.phase then
if risultato2 ~= 0 then
risultato = 0
numericField.text = numericField.text…“9”
risultato = tonumber(numericField.text)
else
numericField.text = numericField.text…“9”
risultato = tonumber(numericField.text)
end
end
end
–funzione per il numero 0
local function handleButtonEvent0 ( event )
local phase = event.phase
if “ended” == event.phase then
if risultato2 ~= 0 then
risultato = 0
numericField.text = numericField.text…“0”
risultato = tonumber(numericField.text)
else
numericField.text = numericField.text…“0”
risultato = tonumber(numericField.text)
end
end
end
–funzione ritorno home
local function handleButtonEventHome (event)
local phase = event.phase
if “ended” == event.phase then
composer.gotoScene(“Menu2”)
end
end
–funzione punto decimale
local function handleButtonEventDec ( event )
local phase = event.phase
if “ended” == event.phase then
numericField.text =numericField.text… “.”
end
end
–funzione per la sottrazzione
local function handleButtonEventSottr ( event )
local phase = event.phase
if “ended” == event.phase then
numericField.text = numericField.text…"-"
risultato2 = risultato - risultato2
print(risultato2)
end
end
–funzione per la divisione
local function handleButtonEventDiv ( event )
local phase = event.phase
if “ended” == event.phase then
numericField.text = numericField.text…"/"
risultato2 = risultato / risultato2
print(risultato2)
end
end
–funzione per l’addizzione
local function handleButtonEventAdd ( event )
local phase = event.phase
if “ended” == event.phase then
numericField.text = numericField.text…"+"
risultato2 = risultato + risultato2
print(risultato2)
end
end
–funzione per la moltiplicazione
local function handleButtonEventMolt ( event )
local phase = event.phase
if “ended” == event.phase then
numericField.text = numericField.text…“x”
risultato2 = risultato * risultato2
print(risultato2)
end
end
–funzione per l’uguale
local function handleButtonEventUguale ( event )
local phase = event.phase
if “ended” == event.phase then
numericField.text = risultato2…""
end
end
–funzione per il cambio di scena
local function handleButtonEventMenu3 ( event )
local phase = event.phase
if “ended” == event.phase then
composer.gotoScene (“Menu3”)
end
end [/lua]
Here is my code. Fix it for me. Thanks. That is a bit too lazy!!
its just that i can’t figure out a way to make this working out
Well, first of all, you want to eliminate any unnecessary code.
For instance, you seem to do this in your every button listener:
local function handleButtonEventMenu3 ( event ) -- You create a local variable, phase, but you never use it. Get rid of it or start using it. local phase = event.phase if "ended" == event.phase then composer.gotoScene ("Menu3") end end
Then, you should consider combining as many similar functions as possible under the same function. Instead of having a different function for adding, subtracting, multiplying and dividing, etc. just have a single function that checks what operation the user wishes to carry out and then carry them out in the same function.
No prizes for guessing the next question…
maybe how to implement standard deviation?