def __init__(self, config): self.config = config self.logdb = pymongo.Connection(self.config["logdb"]["db_host"], int(self.config["logdb"]["db_port"]))[ self.config["logdb"]["db_name"] ] self.prefix = "%s_%s" % (self.config["logdb"]["prefix"], datetime.datetime.now().strftime("%Y%m%d%H%M%S")) self.pg = PlayGround(self.config["map"], self.config["user"], self.logdb, self.prefix)
class UserBehaveSim: def __init__(self, config): self.config = config self.logdb = pymongo.Connection(self.config["logdb"]["db_host"], int(self.config["logdb"]["db_port"]))[ self.config["logdb"]["db_name"] ] self.prefix = "%s_%s" % (self.config["logdb"]["prefix"], datetime.datetime.now().strftime("%Y%m%d%H%M%S")) self.pg = PlayGround(self.config["map"], self.config["user"], self.logdb, self.prefix) def run(self): total_sim_steps = int(self.config["sim"]["total_sim_time_min"] / self.config["sim"]["step_width_min"]) prev_progress = 0 for i in range(total_sim_steps): self.pg.process(i) progress = int((i * 100) / total_sim_steps) if progress > prev_progress: sys.stdout.write("Progress: %d%%\r" % progress) sys.stdout.flush() prev_progress = progress self.pg.flush_log()
def main(argv): parse_cmdline(argv) print "Flood fill" fp = FieldColorPalette(num_colors=6) pg = PlayGround(12, 12, fp) pg.fill_random() pg.plot() p = pg.copy() solver1 = Solver(p, RandomStrategy(p)) sol1 = solver1.solve() p = pg.copy() solver2 = Solver(p, MostPeripheralsStrategy(p)) sol2 = solver2.solve() p = pg.copy() solver3 = Solver(p, MostUnfloodedColorStrategy(p)) sol3 = solver3.solve() print sol1 print sol2 print sol3 if 'iterations' in config['args']: steps = config['args'].iterations print "Giving Random strategy %s tries" % steps bs = sol1 for i in range(steps): p = pg.copy() solver1 = Solver(p, RandomStrategy(p)) sol = solver1.solve() if sol.better_than(bs): bs = sol print bs
def test3(): """ field 5x10 four players six barriers :return: """ pg = PlayGround() pg.clear() pg.add_field(5,10,[(3,1), (3,2), (2,2), (1,6), (2,6), (3,6)]) pg.add_player((4,3), (1,1), 'A') pg.add_player((1,1), (4,3), 'B') pg.add_player((1,7), (4,0), 'C') pg.add_player((4,8), (0,0), 'D') str_data = str(pg) str_data+='\nTest 3\nField 5x10\n' str_data+='Player A: start_position E3, destination_position B1\n' str_data+='Player B: start_position B1, destination_position E3\n' str_data+='Player C: start_position B7, destination_position E0\n' str_data+='Player D: start_position E8, destination_position A0\n' str_data+='Bariers: C2, D1, D2\n' print(str_data) for step in pg.play_step(): sys.stdin.readline() pg.clear() print(step) print("Test 3 complete.\n") sys.stdin.readline()
def test1(): """ field 6x6 four players :return: """ pg = PlayGround() pg.clear() pg.add_field(6, 6) pg.add_player((0,0), (5,5), 'A') pg.add_player((5,5), (0,0), 'B') pg.add_player((0,5), (5,0), 'C') pg.add_player((5,0), (0,5), 'D') str_data = str(pg) str_data+='\nTest 1\nField 6x6\n' str_data+='Player A: start_position A0, destination_position F5\n' str_data+='Player B: start_position F5, destination_position A0\n' str_data+='Player A: start_position A5, destination_position F0\n' str_data+='Player B: start_position F0, destination_position A5\n' print(str_data) for step in pg.play_step(): sys.stdin.readline() pg.clear() print(step) print("Test 1 complete.\n") sys.stdin.readline()
def test2(): """ field 5x5 two players three barriers :return: """ pg = PlayGround() pg.clear() pg.add_field(5,5,[(3,1), (3,2), (2,2)]) pg.add_player((4,3), (1,1), 'A') pg.add_player((1,1), (4,3), 'B') str_data = str(pg) str_data+='\nTest 2\nField 5x5\n' str_data+='Player A: start_position E3, destination_position B1\n' str_data+='Player B: start_position B1, destination_position E3\n' str_data+='Bariers: C2, D1, D2\n' print(str_data) for step in pg.play_step(): sys.stdin.readline() pg.clear() print(step) print("Test 2 complete.\n") sys.stdin.readline()
import pygame from playground import PlayGround from consts import * pygame.init() screen = pygame.display.set_mode(SCREEN_SIZE) pg = PlayGround(SCREEN_SIZE) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() for row in pg.getCells(): for cell in row: color = cell.getColor() rect = cell.rectData() pygame.draw.rect(screen, color, rect) pg.nextGen() pygame.display.update() pygame.time.delay(DELAY)