main.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import pygame
  2. import argparse
  3. import time
  4. from os.path import exists
  5. from pygame.locals import QUIT
  6. from interface import Interface
  7. from board import Board
  8. from player import Player
  9. from blob.main import Blob_Manager
  10. def main():
  11. parser = argparse.ArgumentParser()
  12. parser.add_argument('--height', type=int, default=120,
  13. help='Board height resolution (default = 120)')
  14. parser.add_argument('--width', type=int, default=300,
  15. help='Board width resolution (default = 300)')
  16. parser.add_argument('--scale', type=int, default=4,
  17. help='Scaling from board resolution to window resolution (default = x10)')
  18. parser.add_argument('--init_from', type=str, default='2019-04-05_13.40.35',
  19. help='Initialize game from a save. Pass the filename in saved dir without extension.')
  20. parser.add_argument('--save_dir', type=str, default="saved/",
  21. help='Directory where saves are stored.')
  22. args = parser.parse_args()
  23. if args.init_from is not None:
  24. init_scouters = 0
  25. else:
  26. init_scouters = 3
  27. board = Board(args.width, args.height)
  28. blob = Blob_Manager(board, init_scouters)
  29. player = Player(board, blob)
  30. if args.init_from is not None:
  31. assert exists(args.save_dir + args.init_from + ".board") \
  32. and exists(args.save_dir + args.init_from + ".blob") \
  33. and exists(args.save_dir + args.init_from + ".player")
  34. board.load(open(args.save_dir + args.init_from + ".board", 'r'))
  35. blob.load(open(args.save_dir + args.init_from + ".blob", 'r'))
  36. player.load(open(args.save_dir + args.init_from + ".player", 'r'))
  37. gui = Interface(board, player, blob, args.scale, args.save_dir)
  38. init_counter = 100
  39. timer = time.time()
  40. chrono = 0
  41. counter = init_counter
  42. ended = False
  43. while not ended:
  44. if gui.play or gui.do_step:
  45. blob.move()
  46. board.next_turn()
  47. gui.do_step = False
  48. gui.draw()
  49. pygame.time.wait(10)
  50. for event in pygame.event.get():
  51. if event.type == QUIT:
  52. ended = True
  53. else:
  54. gui.event_listener(event)
  55. chrono += time.time() - timer
  56. counter -= 1
  57. timer = time.time()
  58. if counter == 0:
  59. print("Loop mean time :", chrono, "seconds over", init_counter, "iterations.")
  60. counter = init_counter
  61. chrono = 0
  62. if __name__ == "__main__":
  63. main()