Lists#

Python lists are used to store a collection of items. They are ordered, changeable, and allow duplicate values. You can create a list by enclosing items in square brackets [], separated by commas. Here’s an example:

fruits = ["apple", "banana", "cherry"]

You can access the items of a list by referring to its index number. The index starts at 0 for the first item, 1 for the second item, and so on. Here’s an example:

print(fruits[1])

This will output banana.

You can also change the value of a specific item by referring to its index number. Here’s an example:

fruits[1] = "kiwi"

This will change the second item of the fruits list to kiwi.

You can add an item to the end of a list using the append() method. Here’s an example:

fruits.append("orange")

This will add orange to the end of the fruits list.

You can remove an item from a list using the remove() method. Here’s an example:

fruits.remove("banana")

This will remove banana from the fruits list.

TODO: Build on the above until we demonstrate by building castle walls around our village using this code:

from demo.gate import disable_gate, make_gate
from mciwb.imports import Item, Vec3, Wall

battlements_profile = [
    [
        Item.STONE,
        Item.OAK_PLANKS,
        [Item.STONE, Item.STONE, Item.STONE],
        Item.STONE,
        Item.STONE,
        Item.STONE,
    ],
    [
        [Item.OAK_PLANKS, Item.AIR, Item.TORCH],
        [Item.STONE, Item.STONE, Item.STONE],
        Item.STONE,
        Item.IRON_BARS,
        Item.STONE,
    ],
    [
        Item.STONE,
        Item.OAK_PLANKS,
        [Item.STONE, Item.STONE, Item.STONE],
        Item.STONE,
        Item.STONE,
        Item.STONE,
    ],
    [
        Item.OAK_PLANKS,
        [Item.OAK_PLANKS, Item.STONE, Item.STONE],
        Item.OAK_PLANKS,
        Item.OAK_PLANKS,
        Item.OAK_PLANKS,
    ],
]


def make_walls():
    w = Wall(profile=battlements_profile)

    # build the castle walls
    w.set_start(Vec3(x=630, y=72, z=-1660))
    w.draw(Vec3(x=644, y=72, z=-1660))
    w.draw(Vec3(x=644, y=72, z=-1637))
    w.draw(Vec3(x=659, y=72, z=-1637))
    w.draw(Vec3(x=659, y=72, z=-1606))
    w.draw(Vec3(x=642, y=72, z=-1606))
    w.draw(Vec3(x=642, y=72, z=-1601))
    w.draw(Vec3(x=609, y=72, z=-1601))
    w.draw(Vec3(x=609, y=72, z=-1636))
    w.draw(Vec3(x=617, y=72, z=-1660))
    w.draw(Vec3(x=620, y=72, z=-1660))

    # disable first to remove monitor on the portcullis lever
    disable_gate()
    # build the gate
    make_gate()