entity, position = entity_data['entity'], entity_data['position'] entity_topic = '%s/%s.json' % (entity, entity) entity_data = alex.pubsub.get_current_message(entity_topic) width, height = entity_data['width'], entity_data['height'] colour = list(entity_data['colour']) draw_rectangle(width, height, colour, position, window) def draw_rectangle(width, height, colour, position, window): rectangle = Surface((width, height)) pixels = surfarray.pixels3d(rectangle) pixels[:][:] = colour del pixels rectangle.unlock() window.blit(rectangle, position) game_name = argv[1] game_id = str(uuid4()) print "Starting client for game %s with id %s" % (game_name, game_id) pubsub_url = getenv('ALEXANDRA_PUBSUB') if request_game(game_name, game_id, pubsub_url) is False: print "Could not start game" exit(1) alex = Alexandra(game_id) window = init_window(alex.config['field_width'], alex.config['field_height']) world_monitor = alex.pubsub.make_topic_monitor('world') alex.pubsub.consume_topic('tick', lambda t: update(window, world_monitor.latest(), alex))
return if NAME not in world['movements']: delta = randomchoice(DELTAS) else: movement = world['movements'][NAME] delta = (movement['to'][0] - movement['from'][0], movement['to'][1] - movement['from'][1]) if delta[0] == 0 and delta[1] == 0: delta = randomchoice(DELTAS) position = world['entities'][NAME]['position'] new_position = (position[0] + delta[0], position[1] + delta[1]) send_movement(position, new_position, world['tick'], alex) def send_movement(from_position, to_position, tick, alex): movement = { 'tick': tick, 'entity': 'opponent_random', 'index': INDEX, 'from': from_position, 'to': to_position } alex.pubsub.publish('movement.opponent_random', movement) alex = Alexandra(argv[1]) init(alex) alex.pubsub.consume_topic('world', lambda w: move(w, alex))