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:

results matching ""

    No results matching ""