Bob (the Builder)
Application of class in CodeCraft
Let's use the Builder
class to do some fun things.
b
is a Builder
object, we'll use it to build a maze structure:
b = Builder(0,1,-10)
# maze
b.goTo(0, 10, -10)
b.show()
for n in range(2, 20, 4):
for i in range(n):
b.moveUp(1)
b.setBlock('linen_yellow')
for i in range(n+1):
b.moveRight(1)
b.setBlock('linen_yellow')
for i in range(n+2):
b.moveDown(1)
b.setBlock('linen_yellow')
for i in range(n+3):
b.moveLeft(1)
b.setBlock('linen_yellow')
Next, a purple snake:
# snake
for n in range(20):
for i in range(3):
b.moveRight(1)
b.setBlock('linen_purple')
for i in range(4):
b.moveUp(1)
b.setBlock('linen_purple')
for i in range(3):
b.moveRight(1)
b.setBlock('linen_purple')
for i in range(4):
b.moveDown(1)
b.setBlock('linen_purple')
The advantage about Drone
objects is they can 'remember' their current state, so it's easy to design structures.
3D line structure
# line structure design
for k in range(4):
for n in range(2*k+3):
for i in range(1,2):
b.moveRight(i)
b.setBlock('box_lime')
for n in range(2*k+3):
for i in range(1,2):
b.moveUp(i)
b.setBlock('box_lime')
for n in range(2*k+3):
for i in range(1,2):
b.moveForward(i)
b.setBlock('box_lime')
for n in range(2*k+3):
for i in range(1,2):
b.moveLeft(i)
b.setBlock('box_lime')
for n in range(2*k+3):
for i in range(1,2):
b.moveDown(i)
b.setBlock('box_lime')
Bob, the Builder
Bob
a function of a Builder
object, you can call him to build a column at ground location x,z
with height h
.
def Bob(x,z,h, m):
t = Builder(x,2,z)
for j in range(h):
t.goTo(x, j+2, z)
t.show()
t.setBlock(m)
# Bob in action
Bob(0, -10, 5, 'box_lime')
Bob(3, -8, 8, 'box_red')
Bob(6, -9, 3, 'box_blue')
Bob(7, -7, 4, 'box_pink')
First we create a Builder
object b
, then in a loop, we call the methods of b
to move and put block that makes a column, b
will show itself after each move.
Run the code and see 'Bob' in action: