Files
project_game/gamefiles/board.py
Chris Mekelburg 5980c6bb22 trying to import state to help me determine the
number of mines
2024-12-10 21:36:09 -05:00

130 lines
3.8 KiB
Python

from man import Man
from snack import Snack
from mine import Mine
from random import shuffle
from minecounter import mine_counter
MAX_MINES = 50
LEVELS = [
[5, 10],
[10, 20],
[15, 30],
[100, 40]
]
class Board:
display = False
snack=False
mine=False
def __init__(self,width, height,num_snacks):
self.width = width
self.height = height
self.num_snacks = num_snacks
#self.num_mines = num_mines
def mine_counter(self,game):
current_score_dict = game.state
current_score = current_score_dict['Score']
for limit, n in LEVELS:
if current_score < limit:
return n
return MAX_MINES
def get_agents(self,num_snacks):
num_mines = int(self.mine_counter)
print(num_mines)
all_positions = self.get_all_positions()
shuffle(all_positions)
man= [Man(all_positions[0])]
snacks = [Snack(p) for p in all_positions[1:(num_snacks+1)]]
mines = [Mine(p) for p in all_positions[(num_snacks + 2):(num_snacks + num_mines +2)]]
agents = man + snacks + mines + [self]
return agents
def play_turn(self,game):
game.log(self.num_mines)
while self.game_needs_snacks(game):
self.add_snack(game)
while self.game_needs_mines(game):
self.add_mine(game)
def add_mine(self,game):
all_positions=self.get_all_positions()
shuffle(all_positions)
index =0
while not game.is_empty(all_positions[index]):
index = index + 1
mine = Mine(all_positions[index])
game.add_agent(mine)
def count_mines(self,game):
mines= [a for a in game.agents if a.mine]
return len(mines)
def game_needs_mines(self,game):
return self.count_mines(game) < self.num_mines
def add_snack(self,game):
all_positions=self.get_all_positions()
shuffle(all_positions)
index =0
while not game.is_empty(all_positions[index]):
index = index + 1
snack = Snack(all_positions[index])
game.add_agent(snack)
def count_snacks(self,game):
snacks= [a for a in game.agents if a.snack]
return len(snacks)
def game_needs_snacks(self,game):
return self.count_snacks(game) < self.num_snacks
'''
def get_agents(self,num_snacks,num_mines):
man = self.get_man(num_snacks,num_mines)
snacks = self.get_snacks(num_snacks)
mines = self.get_mines(num_mines,num_snacks)
agents = snacks + mines + man
return agents
def get_man(self,num_snacks,num_mines):
#man_location = [Man(all_positions[0])]
#return man_location
shuffle(all_positions)
for position in all_positions:
#if position in self.get_snacks(num_snacks):
# all_positions.remove(position)
if position in self.get_mines(num_mines,num_snacks):
all_positions.remove(position)
man_location = [Man(all_positions[0])]
return man_location
def get_mines(self,num_mines, num_snacks):
all_positions = self.get_all_positions()
shuffle(all_positions)
for position in all_positions:
if position in self.get_snacks(num_snacks):
all_positions.remove(position)
mines = [Mine(p) for p in all_positions[1:num_mines+1]]
return mines
def get_snacks(self,num_snacks):
all_positions = self.get_all_positions()
shuffle(all_positions)
snacks = [Snack(p) for p in all_positions[1:num_snacks+1]]
return snacks
'''
def get_all_positions(self):
positions=[]
for i in range(self.width):
for j in range(self.height):
positions.append((i,j))
return positions