bot.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #!/usr/bin/env python3
  2. import time
  3. from strategy import State, moves_to_keys
  4. from interaction import get_exapunks_window, focus_window, \
  5. screenshot_board, press_keys
  6. if __name__ == '__main__':
  7. win = get_exapunks_window()
  8. focus_window(win)
  9. prev_score = None
  10. while True:
  11. board = screenshot_board(win)
  12. try:
  13. state = State.detect(board)
  14. except (TypeError, AssertionError):
  15. print('error during parsing, wait for a bit')
  16. time.sleep(.1)
  17. continue
  18. print('\033c', end='')
  19. print('parsed:')
  20. state.print()
  21. print()
  22. #if state.has_holes():
  23. # print('parsed board has holes, wait for a bit')
  24. # time.sleep(.1)
  25. # continue
  26. moves = state.solve()
  27. if moves:
  28. print('moves:', moves_to_keys(moves))
  29. points, newstate = state.simulate(moves)
  30. score = newstate.score(points, moves, state)
  31. print(' score:', score)
  32. print('prev score:', prev_score)
  33. empty_points, empty_state = state.simulate(())
  34. print(' () score:', empty_state.score(empty_points, (), state))
  35. print()
  36. prev_score = score
  37. print('target after moves:')
  38. newstate.print()
  39. print()
  40. press_keys(win, moves_to_keys(moves))
  41. else:
  42. print('no moves')
  43. press_keys(win, 'l')
  44. time.sleep(.1)