Spel48: Binär Räkning för Förskolan

 

image

image

 

 

 

 

 

 

 

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

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s