import argparse from simulation import board import pygame from pygame.locals import QUIT def main(): ap = argparse.ArgumentParser() ap.add_argument("--first", required=True, help="first board file") ap.add_argument("--second", required=True, help="second board file") ap.add_argument("-s", "--scale", type=float, default=10, help="scale display (default: x10") ap.add_argument("-o", "--output", type=str, help="give a name to save the jpeg file") args = ap.parse_args() board_1 = board.Board(0,0) board_1.load(args.first) board_2 = board.Board(0,0) board_2.load(args.second) board_comp = board_1.compare(board_2) if board_comp is None: return pygame.init() width = int(board_1.width * args.scale) height = int(board_1.height * args.scale) window = pygame.display.set_mode((width, height)) game_surface = pygame.Surface((board_1.width, board_1.height)) pixel_array = pygame.PixelArray(game_surface) for x in range(board_1.width): for y in range(board_1.height): pixel_array[x,y] = (0, 0, 0) val = max(-255, min(board_comp.get_blob(x, y), 255)) if val < 0: val = - val # int(-val/2) + 125 pixel_array[x, y] = (val/4, val/4, val) elif val > 0: val = val # int(val/2) + 125 pixel_array[x, y] = (val, val/4, val/4) else: if not board_comp.is_touched(x, y): if board_1.is_touched(x, y): pixel_array[x, y] = (75, 75, 125) else: pixel_array[x, y] = (125, 75, 75) if board_comp.has_food(x, y): pixel_array[x, y] = (0, board_comp.foods[x, y], 0) del pixel_array game_window = pygame.transform.scale(game_surface, (width, height)) window.blit(game_window, (0, 0)) pygame.display.flip() ended = False while not ended: pygame.time.wait(10) for event in pygame.event.get(): if event.type == QUIT: ended = True if args.output is not None: pygame.image.save(window, args.output) if __name__ == "__main__": main()