BMO
In September, I asked my kids what they wanted to be for Halloween. Peter’s idea was for everyone to be an Adventure Time character.
He assigned everyone a role.
I drug my feet because I had a bad dream about how incompetent I was about decorating.
Four days before our first Halloween party, Peter asked me about the progress of our costumes. I mumbled something about starting now and being ready for Halloween next year. He said, “That’s what you said LAST YEAR!” and I did begin to remember that possibly happening.
So I resolved. And after four days of not eating, sleeping, or cleaning, we had this:
On day 2, I conceived that BMO could actually play video games. They are, in fact, a video game console. It didn’t happen on Halloween, but it did happen.
I drove up to Columbus to buy a Raspberry Pi from Microcenter. I am confident that they would have the cheapest prices for everything and that they would have everything in stock and someone there would know everything I needed to get. And Microcenter did not disappoint. I wandered around for like half an hour. Everything computery thing you didn’t know you wanted. Keyboards that clack so satisfyingly. Pipes and fittings to assemble your own liquid-cooled PC tower. The best selection of children’s tech toys I have ever seen.
A guy helped me pick out the starter kit, which includes the pi, the power supply, a case, a fan, heat sinks, a mini SD card, and some cables. I can’t find a link to the keyboard, but I got a native Raspberry Pi one with a USB hub. I got a touchscreen so I didn’t have to get a mouse.
I purchased this power pack from Amazon so it can function anywhere, and not just one foot from an outlet.
I found a plastic bin from Goodwill and cut out a hole and mounted the raspberry pi and screen. I didn’t want to mount them right on the carboard box because I wanted the box to protect the screen and components. It turned out that this plastic bin was so sturdy. It took some doing to cut the required holes. I broiled some screws in the oven, held them with pliers and oven mitts, and melted the plastic while the screws were hot. I had six screws I rotated through. I felt like a mad scientist. Very many things could have gone wrong but they didn’t.
I allow my children to play with this computer at any time (except after dinner, to get their eyes ready for sleeping, and on Sundays, to make time for church and family). They can play any text based terminal game.
They can use Nano to edit files, so they could save journal entries. Here is a list that my son maintains of all the games we can play.
I downloaded BSD games, which is a big collection of terminal games.
I had to email a guy in Australia to get my favorite game, Star Traders, because the game wasn’t written for the type of computer I had. He was super nice and gave me very detailed instructions on how to get an old version of it running.
BSD games has games like worm and snake and tetris. But I said no because they are so easy and fun they will crowd out games that require more thought. And I want my children to think. And have lives that are not easy and fun. There. I said it.
My son and I wrote a few python programs for BMO. The first was a quiz game switching from binary to decimal. We both have only rudimentary python skills, so we asked chatGPT to write it for us, which it did.
We asked chatGPT to write us a game for our six and seven year old about having a pet. They love it. For your enjoyment:
import random
class Pet:
def __init__(self, name, type_of_pet):
self.name = name
self.type_of_pet = type_of_pet
self.happiness = 50
self.hygiene = 50
self.is_dressed = False
self.outfit = ""
self.cleanliness = 100
def feed(self):
self.happiness += 10
print(f"{self.name} loves the food! Happiness is now {self.happiness}.")
def bathe(self):
self.hygiene += 20
self.cleanliness = 100
print(f"{self.name} is now clean! Hygiene is now {self.hygiene}.")
def play(self):
self.happiness += 15
print(f"{self.name} had fun playing! Happiness is now {self.happiness}.")
def pee_and_poop(self):
self.cleanliness -= 20
self.happiness -= 10
print(f"{self.name} peed and pooped! Cleanliness is now {self.cleanliness} and happiness is {self.happiness}.")
def clean_up(self):
self.cleanliness = 100
print(f"{self.name}'s area is clean now! Cleanliness is {self.cleanliness}.")
def dress_up(self, outfit):
self.is_dressed = True
self.outfit = outfit
print(f"{self.name} is now wearing a {self.outfit}!")
def check_status(self):
print(f"\n{self.name} - Type: {self.type_of_pet}")
print(f"Happiness: {self.happiness}")
print(f"Hygiene: {self.hygiene}")
print(f"Cleanliness: {self.cleanliness}")
if self.is_dressed:
print(f"{self.name} is wearing a {self.outfit}.")
else:
print(f"{self.name} is not wearing anything yet.")
class Player:
def __init__(self, name):
self.name = name
self.allowance = 100 # Starting allowance for the player
def earn_allowance(self):
self.allowance += 10
print(f"{self.name} earned 10 allowance. Total allowance: {self.allowance}")
def choose_pet():
pet_choices = ['Dog', 'Cat', 'Rabbit', 'Bird', 'Hamster', 'Fish', 'Turtle']
print("Choose a pet by entering the number:")
for i, pet in enumerate(pet_choices, 1):
print(f"{i}. {pet}")
choice = int(input("Enter the number of your choice: "))
pet_name = input("What will you name your pet? ")
pet = Pet(pet_name, pet_choices[choice-1])
print(f"{pet_name} the {pet_choices[choice-1]} has been adopted!")
return pet
def main():
player_name = input("What's your name? ")
player = Player(player_name)
pet = choose_pet()
while True:
print("\nWhat would you like to do? (Type the number of your choice)")
print("1. Feed your pet")
print("2. Bathe your pet")
print("3. Play with your pet")
print("4. Check pet's status")
print("5. Buy food for your pet (10 allowance)")
print("6. Clean up your pet's area")
print("7. Dress up your pet")
print("8. Earn allowance")
print("9. Exit the game")
action = input("Enter your choice: ")
if action == '1':
pet.play() # Adds 15 happiness
elif action == '2':
pet.bathe() # Adds 20 hygiene
elif action == '3':
pet.play() # Adds 15 happiness
elif action == '4':
pet.check_status() # Shows status
elif action == '5':
if player.allowance >= 10:
player.allowance -= 10
pet.feed()
else:
print("You don't have enough allowance to buy food.")
elif action == '6':
if pet.cleanliness < 100:
pet.clean_up()
else:
print(f"{pet.name} doesn't need cleaning right now!")
elif action == '7':
outfit = input("What outfit would you like to put on your pet? ")
pet.dress_up(outfit)
elif action == '8':
player.earn_allowance() # Adds 10 allowance
elif action == '9':
print("Goodbye!")
break
else:
print("Invalid choice. Please try again.")
if __name__ == "__main__":
main()