Spel39: Bit Dating

speed_dating_fullsize

Vi programmerar en app för “bit dating” där addition av två binära tal utförs genom att starta med två samlingar (en grön och en röd) av 1-bitar i rörelse på skärmen,  där två 1-bitar som möts ersätts av en (röd) 2-bit och sedan två (röda) 2-bitar som möts ersätts av en (röd) 4-bit osv, till dess endast röda bitar återstår, högst en av varje, som representerar summan av de två talen.  Roligt och instruktivt, från 3 år

Titta på ett exempel här. Och här är ett annat exempel med lite modifierad kod.

Jämför med Counting på App Store.

Template:

N=2
I=7
J=100
bitimager = {}
bitimager[1] =readImage(“Dropbox:1bitr”)
bitimager[2] =readImage(“Dropbox:2bitr”)
bitimager[3] =readImage(“Dropbox:4bitr”)
bitimager[4] =readImage(“Dropbox:8bitr”)
bitimager[5] =readImage(“Dropbox:16bitr”)
bitimager[6] =readImage(“Dropbox:32bitr”)
bitimager[7] =readImage(“Dropbox:64bit”)
bitimageg = {}
bitimageg[1] =readImage(“Dropbox:1bitg”)
bitimageg[2] =readImage(“Dropbox:2bitg”)
bitimageg[3] =readImage(“Dropbox:4bitg”)
bitimageg[4] =readImage(“Dropbox:8bitg”)
bitimageg[5] =readImage(“Dropbox:16bitg”)
bitimageg[6] =readImage(“Dropbox:32bitg”)
bitimageg[7] =readImage(“Dropbox:64bitg”)
local bit={}
local vel={}
for n=1,N do
bit[n]={}
vel[n]={}
end

for n=1,N do
for i=1,I do
bit[n][i]={}
vel[n][i]={}
end
end

function setup()
print(“Hello World!”)
supportedOrientations(LANDSCAPE_ANY)

for i=1,I do
for j=1,J do
bit[1][i][j] = SpriteObject(bitimager[i],vec2(math.random(150,500),math.random(150,900)),0)
bit[2][i][j] = SpriteObject(bitimageg[i],vec2(math.random(150,500),math.random(150,900)),0)
vel[1][i][j]=vec2(math.random(-10,10),math.random(-10,10))
vel[2][i][j]=vec2(math.random(-10,10),math.random(-10,10))
end
end

for j=1,J do
bit[1][1][j].ID=1
bit[2][1][j].ID=1
end

sound(“A Hero’s Quest:Door Open”)
end

function draw()
background(40, 40, 50)
fill(255, 255, 255, 255)

for n=1,N do
for i=1,I do
for j=1,J do
bit[n][i][j]:draw()
bit[n][i][j].objectCurrentLocation = bit[n][i][j].objectCurrentLocation + vel[n][i][j]
end
end
end

for n=1,N do
for i=1,I do
for j=1,J do
if (bit[n][i][j].objectCurrentLocation.x < 100) then
vel[n][i][j].x=-vel[n][i][j].x
end
end
end
end

for n=1,N do
for i=1,I do
for j=1,J do
if (bit[n][i][j].objectCurrentLocation.y < 100) then
vel[n][i][j].y=-vel[n][i][j].y
end
end
end
end

for n=1,N do
for i=1,I do
for j=1,J do
if (bit[n][i][j].objectCurrentLocation.x > 600) then
vel[n][i][j].x=-vel[n][i][j].x
end
end
end
end

for n=1,N do
for i=1,I do
for j=1,J do
if (bit[n][i][j].objectCurrentLocation.y > 1000) then
vel[n][i][j].y=-vel[n][i][j].y
end
end
end
end

for n=1,N do
for i=1,I-1 do
for j=1,J do
for jj=1,J do
if j~=jj then
if (bit[n][i][j].ID*bit[n][i][jj].ID > 0 and bit[n][i][j]:isTouching(bit[n][i][jj])==true) then
bit[n][i][j].ID=0
bit[n][i][jj].ID=0
bit[n][i+1][j].objectCurrentLocation = bit[n][i][jj].objectCurrentLocation
bit[n][i+1][j].ID=1
sound(“Game Sounds One:Female Cheer 2”)
end
end
end
end
end
end

for i=1,I-1 do
for j=1,J do
for jj=1,J do
if j~=jj then
if (bit[1][i][j].ID*bit[2][i][jj].ID > 0 and bit[1][i][j]:isTouching(bit[2][i][jj])==true) then
bit[1][i][j].ID=0
bit[2][i][jj].ID=0
bit[1][i+1][j].ID=1
sound(“Game Sounds One:Male Cheer 2”)
end
end
end
end
end

end

 

Leave a comment