Minecraft Detectorists
Another simple minecraft game, this time using Pythagoras' theorem to work out distances between two points.
We randomly bury a piece of treasure - a gold block, a diamond, whatever - then give the player clues about how far away they are from it. The "game" ends when they dig up the block.
import mcpi.minecraft as minecraft
import mcpi.block as block
import time
import random
import math
def random_underground_position():
return minecraft.Vec3(random.randint(-100, 100), random.randint(-20, 0), random.randint(-100, 100))
def distance_to_treasure(player, treasure):
dx = player.x - treasure.x
dy = player.y - treasure.y
dz = player.z - treasure.z
return math.ceil(math.sqrt((dx*dx) + (dy*dy) + (dz*dz)))
world = minecraft.Minecraft.create()
treasure = random_underground_position()
world.setBlock(treasure.x, treasure.y, treasure.z, block.GOLD_BLOCK)
last_position = world.player.getTilePos()
last_distance = distance_to_treasure(last_position, treasure)
world.postToChat("Find the gold!")
detectoring = True
while detectoring:
position = world.player.getTilePos()
if position != last_position:
distance = distance_to_treasure(position, treasure)
if distance < 5:
detectoring = False
else:
message = ""
if distance < last_distance:
message = "Warmer " + str(distance)
elif distance > last_distance:
message = "Colder " + str(distance)
world.postToChat(message)
last_distance = distance
last_position = position
time.sleep(2)
world.postToChat("You found the treasure")
Inspired by code I originally saw at Martin O'Hanlon's excellent Stuff About Code.