project_game/spawner.py

53 lines
2.5 KiB
Python

# spawner.py
# ------------
# By Cory
# This module defines a spawner agent class. It spawns mines and then fills the remaining spots with free spaces
from random import randint
from mine import Mine
from free_space import FreeSpace
from cursor import Cursor
class Spawner:
display = False
def __init__(self, board_size):
width, height = board_size
self.board_width, self.board_height = width, height
def play_turn(self, game):
'''
Creates all other agents and prints instructions when the game begins.
'''
if game.turn_number == 1:
# First spawn 10 mines
for i in range(10):
mine = Mine(((randint(0, self.board_width - 1)),(randint(0, self.board_height - 1))))
mine.name_me("mine"+str(i))
while not game.is_empty(mine.position): # Ensure mines are not in the same location
mine = Mine(((randint(0, self.board_width - 1)),(randint(0, self.board_height - 1))))
mine.name_me("mine"+str(i))
game.add_agent(mine)
# Then spawn free spaces everywhere there is not a mine.
for i in range(self.board_width):
for j in range(self.board_height):
if game.is_empty((i,j)):
free_space = FreeSpace((i,j))
free_space.name_me("freespace"+str(i)+str(j))
game.add_agent(free_space)
# Now ask all free spaces to keep track of their neighbors that are mines and hide themselves.
for i in range(self.board_width):
for j in range(self.board_height):
if len(game.get_agents_by_position()[(i,j)]) != 0:
game.get_agents_by_position()[(i,j)][0].check_neighbors(game)
game.get_agents_by_position()[(i,j)][0].hide()
# Now create a cursor.
cursor = Cursor((self.board_width - 1, self.board_height - 1))
game.add_agent(cursor)
# Print instructions.
game.log("To move, use the arrow keys. You may have to")
game.log("press an arrow key more than once to move.")
game.log("Please make sure the cursor is where you want it")
game.log("before selecting a space. To select a space, ")
game.log("press return. The game is over when all spots")
game.log("with mines are surrounded by numbers.")