Vi programmerar en app för binär räkning för förskolan som visar hur barn från 3-års ålder kan lära sig addera (och subtrahera) godtyckliga heltal. Vi representar de binära talen 1, 10, 100, 1000,…, dvs de decimala talen 1, 2, 4, 8,…, med bilder på djur i stigande storleksordning som mus, råtta, katt, get,…med regeln att två mindre djur blir ett djur av närmast större storleksordning. Se Counting på App Store.
Vi lär oss använda olika scener och använder Helperclass för touch som sammanför tex två möss till en råtta genom dragning.
Titta på ett exempel här.
PS Titta på vad mätning och beräkning kan lära oss.
Template:
Main
function setup()
supportedOrientations(LANDSCAPE_ANY)
displayMode(FULLSCREEN)
noFill()
noSmooth()
noStroke()
pushStyle()
Scene(“scene1”,Scene1)
Scene(“scene5”,Scene5)
Scene.Change(“scene1”)
end
function touched(touch)
Scene.Touched(touch)
end
function draw()
background(40, 40, 50)
Scene.Draw()
end
Scene5
Scene5 = class()
local moveForwardButton
local first= vec2(0,0)
local second = vec2(0,0)
local mouse={}
local rat={}
local cat={}
local goat={}
local cow={}
local mammuth={}
local elephant={}
local dinosaur=({})
local N=16
local N1=2
local N2=2
local N3=2
local N4=2
local N5=2
local N6=2
local N7=2
local N8=2
local oldID={}
for n=1,N do
oldID=0
end
function Scene5:init()
speech.voice=speech.voices[19]
speech.rate=0.01
speech.say(“Dra en mus till närmaste mus och se att det blir en råtta och fortsätt på samma sätt till dess det inte finns två lika djur kvar.”)
speech.say(“Säg vad som blev kvar till slut!”)
speech.say(“Hur många möss var det från början?”)
for n=1,4 do
mouse[n]=SpriteObject(“Dropbox:mouse1”,vec2(100*n,1000),1)
end
for n=5,8 do
mouse[n]=SpriteObject(“Dropbox:mouse1”,vec2(100*n-400,900),1)
end
for n=9,12 do
mouse[n]=SpriteObject(“Dropbox:mouse1”,vec2(100*n-800,800),1)
end
for n=13,16 do
mouse[n]=SpriteObject(“Dropbox:mouse1”,vec2(100*n-1200,700),1)
end
for n=1,4 do
rat[n]=SpriteObject(“Dropbox:rat2”,vec2(100*n,600),0)
end
for n=5,8 do
rat[n]=SpriteObject(“Dropbox:rat2”,vec2(100*n-400,500),0)
end
for n=1,4 do
cat[n]=SpriteObject(“Dropbox:cat3”,vec2(100*n,400),0)
end
for n=1,2 do
goat[n]=SpriteObject(“Dropbox:goat4”,vec2(100*n,300),0)
end
cow[1]=SpriteObject(“Dropbox:cow5”,vec2(500,300),0)
moveForwardButton=Button(“Cargo Bot:Command Right”,vec2(50,100))
end
function Scene5:draw()
background(249, 248, 249, 255)
fill(27, 30, 26, 255)
rect(10,10,300,50)
for n=1,N do
if mouse[n].ID==1 then
sprite(“Dropbox:1bitr”,mouse[n].objectCurrentLocation.x,mouse[n].objectCurrentLocation.y-40,50)
end
end
for n=1,8 do
if rat[n].ID==1 then
sprite(“Dropbox:2bitr”,rat[n].objectCurrentLocation.x,rat[n].objectCurrentLocation.y-40,50)
end
end
for n=1,4 do
if cat[n].ID==1 then
sprite(“Dropbox:4bitr”,cat[n].objectCurrentLocation.x,cat[n].objectCurrentLocation.y-50,50)
end
end
for n=1,2 do
if goat[n].ID==1 then
sprite(“Dropbox:8bitr”,goat[n].objectCurrentLocation.x,goat[n].objectCurrentLocation.y-60,50)
end
end
if cow[1].ID==1 then
sprite(“Dropbox:16bitr”,cow[1].objectCurrentLocation.x,cow[1].objectCurrentLocation.y-60,50)
end
moveForwardButton:draw()
for n=1,N do
mouse[n]:draw()
end
for n=1,8 do
rat[n]:draw()
end
for n=1,4 do
cat[n]:draw()
end
for n=1,2 do
goat[n]:draw()
end
cow[1]:draw()
mouseID=0
ratID=0
catID=0
goatID=0
cowID=0
for n=1,N do
mouseID=mouseID+mouse[n].ID
end
for n=1,8 do
ratID=ratID+rat[n].ID
end
for n=1,4 do
catID=catID+cat[n].ID
end
for n=1,2 do
goatID=goatID+goat[n].ID
end
for n=1,1 do
cowID=cowID+cow[n].ID
end
finish=mouseID
if ratID>mouseID then
finish=ratID
end
if catID>ratID then
finish=catID
end
if goatID>catID then
finish=goatID
end
if cowID>goatID then
finish=cowID
end
if finish<1 then
for n=1,N do
mouse[n].ID=1
end
end
end
function Scene5:touched(touch)
moveForwardButton:touched(touch)
if(moveForwardButton.selected==true) then
Scene.Change(“scene7”)
end
for n=1,N do
mouse[n]:touched(touch)
end
for n=1,8 do
rat[n]:touched(touch)
end
for n=1,4 do
cat[n]:touched(touch)
end
for n=1,2 do
goat[n]:touched(touch)
end
cow[1]:touched(touch)
for n=1,N do
for m=1,N do
if m~=n then
if (mouse[m]:isTouching(mouse[n])==true) and mouse[m].ID*mouse[n].ID>0 then
for n=1,N1/2 do
rat[n].ID=1
end
mouse[m].ID=0
mouse[n].ID=0
N1=N1+2
end
end
end
end
for n=1,8 do
for m=1,8 do
if m~=n then
if (rat[m]:isTouching(rat[n])==true) and rat[m].ID*rat[n].ID>0 then
for n=1,N2/2 do
cat[n].ID=1
end
rat[m].ID=0
rat[n].ID=0
N2=N2+2
end
end
end
end
for n=1,4 do
for m=1,4 do
if m~=n then
if (cat[m]:isTouching(cat[n])==true) and cat[m].ID*cat[n].ID>0 then
for n=1,N3/2 do
goat[n].ID=1
end
cat[m].ID=0
cat[n].ID=0
N3=N3+2
end
end
end
end
if (goat[1]:isTouching(goat[2])==true) and goat[1].ID*goat[2].ID>0 then
cow[1].ID=1
goat[1].ID=0
goat[2].ID=0
end
end