compare.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import argparse
  2. from simulation import board
  3. import pygame
  4. from pygame.locals import QUIT
  5. def main():
  6. ap = argparse.ArgumentParser()
  7. ap.add_argument("--first", required=True, help="first board file")
  8. ap.add_argument("--second", required=True, help="second board file")
  9. ap.add_argument("-s", "--scale", type=float, default=10, help="scale display (default: x10")
  10. ap.add_argument("-o", "--output", type=str, help="give a name to save the jpeg file")
  11. args = ap.parse_args()
  12. board_1 = board.Board(0,0)
  13. board_1.load(args.first)
  14. board_2 = board.Board(0,0)
  15. board_2.load(args.second)
  16. board_comp = board_1.compare(board_2)
  17. if board_comp is None:
  18. return
  19. pygame.init()
  20. width = int(board_1.width * args.scale)
  21. height = int(board_1.height * args.scale)
  22. window = pygame.display.set_mode((width, height))
  23. game_surface = pygame.Surface((board_1.width, board_1.height))
  24. pixel_array = pygame.PixelArray(game_surface)
  25. for x in range(board_1.width):
  26. for y in range(board_1.height):
  27. pixel_array[x,y] = (0, 0, 0)
  28. val = max(-255, min(board_comp.get_blob(x, y), 255))
  29. if val < 0:
  30. val = - val # int(-val/2) + 125
  31. pixel_array[x, y] = (val/4, val/4, val)
  32. elif val > 0:
  33. val = val # int(val/2) + 125
  34. pixel_array[x, y] = (val, val/4, val/4)
  35. else:
  36. if not board_comp.is_touched(x, y):
  37. if board_1.is_touched(x, y):
  38. pixel_array[x, y] = (75, 75, 125)
  39. else:
  40. pixel_array[x, y] = (125, 75, 75)
  41. if board_comp.has_food(x, y):
  42. pixel_array[x, y] = (0, board_comp.foods[x, y], 0)
  43. del pixel_array
  44. game_window = pygame.transform.scale(game_surface, (width, height))
  45. window.blit(game_window, (0, 0))
  46. pygame.display.flip()
  47. ended = False
  48. while not ended:
  49. pygame.time.wait(10)
  50. for event in pygame.event.get():
  51. if event.type == QUIT:
  52. ended = True
  53. if args.output is not None:
  54. pygame.image.save(window, args.output)
  55. if __name__ == "__main__":
  56. main()