My mission
 Make a game
 That only uses the crank
 And paints the screen
 One random tile at a time
 As determined by the rotation of the crank
How hard could this be, right?
The event
members
In every
event
, itsaa
andra
members will be set to the current absolute angle and the amount of change since the last frame of the crank in degrees (relative angle).
So, in the crank
event, I can do this:
on crank do
absAngle = event.aa
relAngle = event.ra
end

event.aa
will be a value between 0 and 360 
event.ra
will be a value between 360 and 360, though likely closer to the middle third of that range
How could I see this to confirm?
Using draw
and label
to display the values
I want to display the aa
and ra
values on the room.
So, I write this in the player
script:
on draw do
label "{event.aa}" at 0,0
label "{event.ra}" at 0,1
end
And I see this in the browser simulator:
The top number is the absolute angle.
The bottom number is the relative angle  amount changed since the last frame, which is 0.
Great!
How do I swap a tile at a valid coordinate based on the relative angle?
Swapping tiles based on crank rotation
I confirmed I can capture the crank's rotation.
Now I need to use it to swap all the tiles.
Approach 1: Downward staircase
 I wrote the code below
 It guarantees that
x
andy
are each positive numbers between 0 and 24 or 0 and 14  Sadly,
x
andy
are the same from 0 to 14  And then
y
is always14
andx
is 14 to 24  Thus, a downward staircase
on draw do
x = event.ra
x = floor x
if x<0 then
x *= 1
end
if x>24 then
x = 24
end
y = event.ra
y = floor y
if y<0 then
y *= 1
end
if y>14 then
y = 14
end
tell x,y to
swap "black"
end
label "{x},{y}" at 0,14
end
Approach #2: Chickenpox
 I removed all of the conditionals setting
x
andy
 I generate random positive numbers when the crank is turned
 I only update a tile when the crank is turned
on draw do
change = event.ra
if change!=0 then
tell x,y to
swap "black"
end
end
label "{x},{y}" at 0,14
end
on crank do
x = random 0,24
y = random 0,14
end
This is what the tiled room looks like now:
Swapping for a specific tile
I can swap random tiles with a black
tile.
I want to swap tiles with one of several other tiles.
Approach #1: add x and y

x
will be 024 
y
will be 014  The sum will be 038
 If I make tiles named
tile0
thrutile38
, then I can perform a swap using text interpolation, like"tile{sum}"
At least I hope!
My updated code:
on draw do
change = event.ra
if change!=0 then
tell x,y to
sum = x
sum += y
swap "tile {sum}"
end
end
label "{x},{y}" at 0,14
end
on crank do
x = random 0,24
y = random 0,14
end
Knowing that sum
will be a number between 0 and 38, I made 38 tiles:
The tiled room after rotating the crank for a while:
It works! Very cool!
What now?
 Try to update each tile so that something more recognizable appears?
 Or just leave it like this...and see what my son thinks?
Mission: accomplished
 I made a game
 That only uses the crank
 And paints the screen
 One random tile at a time
 As determined by the rotation of the crank
It wasn't that hard.
It just took some experimentation in Pulp.
And now I'm excited to do something more!
Top comments (0)