Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import ast
- import game
- import sys
- import os
- from multiprocessing import Process, Manager
- from settings import settings
- def make_player(fname):
- return game.Player(open(fname).read())
- def run_once(map_name,procname,return_dict):
- map_data = ast.literal_eval(open(map_name).read())
- game.init_settings(map_data)
- players = [make_player(x) for x in sys.argv[1:3]]
- g = game.Game(*players, record_turns=False)
- for i in range(settings['max_turns']): # @UnusedVariable
- g.run_turn()
- return_dict[procname] = g.get_scores()
- if __name__ == '__main__':
- manager = Manager()
- return_dict = manager.dict()
- jobs = []
- if len(sys.argv) < 3:
- print 'usage: python run.py <usercode1.py> <usercode2.py> [<map file>]'
- sys.exit()
- num_games = 1
- map_name = os.path.join(os.path.dirname(__file__), 'maps/default.py')
- try:
- num_games = int(sys.argv[3])
- except:
- if len(sys.argv) > 3:
- map_name = sys.argv[3]
- scores = [0, 0]
- scores2 = [0, 0]
- print 'running ' + str(num_games) + ' games'
- for i in range(1, num_games):
- p = Process(target=run_once, args=(map_name,i,return_dict))
- jobs.append(p)
- p.start()
- for proc in jobs:
- proc.join()
- #print return_dict.values()
- #current_scores = run_once(map_name)
- #scores[0] += current_scores[0]
- #scores[1] += current_scores[1]
- for x in return_dict.values():
- if x[0] > x[1]:
- scores[0] += 1
- else:
- scores[1] += 1
- print
- print "Games Won:"
- print sys.argv[1][:-3]+":",scores[0],"||",sys.argv[2][:-3]+":", scores[1]
- scores2 = [0,0]
- for x in return_dict.values():
- scores2[0] += x[0]
- scores2[1] += x[1]
- print
- print "Remaining Robots:"
- print sys.argv[1][:-3]+":",scores2[0],"||",sys.argv[2][:-3]+":", scores2[1]
- # print "!",scores[0] / num_games, scores[1] / num_games
- if scores[0] > scores[1]:
- print sys.argv[1][:-3] + ' won'
- elif scores[0] < scores[1]:
- print sys.argv[2][:-3] + ' won'
- else:
- print 'game is a draw'
Advertisement
Add Comment
Please, Sign In to add comment