Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.73 KB | None | 0 0
  1. from AlbotOnline.Snake.SnakeGame import SnakeGame
  2. import random
  3. #Remove non possible hands
  4.  
  5. game = SnakeGame()
  6.  
  7. # check if the position in the grid is empty
  8. def empty(grid, yPos, xPos):
  9. if yPos < 0 or yPos >= 10 or xPos < 0 or xPos >= 10:
  10. return False
  11. return grid[yPos][xPos] == "0"
  12.  
  13. def nonCollidingMoves(possibleMoves, grid, pos):
  14. possibleNonCollidingMoves = []
  15. if "right" in possibleMoves:
  16. nextX = pos[0] + 1
  17. nextY = pos[1]
  18. if empty(grid, nextY, nextX):
  19. possibleNonCollidingMoves.append("right")
  20.  
  21. if "down" in possibleMoves:
  22. nextX = pos[0]
  23. nextY = pos[1] + 1
  24. if empty(grid, nextX, nextY):
  25. possibleNonCollidingMoves.append("down")
  26.  
  27. if "left" in possibleMoves:
  28. nextX = pos[0] - 1
  29. nextY = pos[1]
  30. if empty(grid, nextX, nextY):
  31. possibleNonCollidingMoves.append("left")
  32.  
  33. if "up" in possibleMoves:
  34. nextX = pos[0]
  35. nextY = pos[1] - 1
  36. if empty(grid, nextX, nextY):
  37. possibleNonCollidingMoves.append("up")
  38.  
  39. return possibleNonCollidingMoves
  40.  
  41. def countStepsInDirection(grid, pos):
  42. freeStepsRight = 0
  43. freeStepsLeft = 0
  44. freeStepsDown = 0
  45. freeStepsUp = 0
  46.  
  47. iterator = 1
  48. while(empty(grid,pos[0] + iterator, pos[1])):
  49. freeStepsRight += 1
  50. iterator += 1
  51. print("right: " + str(freeStepsRight))
  52.  
  53. iterator = 1
  54. while(empty(grid,pos[0] - iterator, pos[1])):
  55. freeStepsLeft += 1
  56. iterator += 1
  57. print("left: " + str(freeStepsLeft))
  58.  
  59. iterator = 1
  60. while(empty(grid,pos[0], pos[1] - iterator)):
  61. freeStepsUp += 1
  62. iterator += 1
  63. print("up: " + str(freeStepsDown))
  64.  
  65. iterator = 1
  66. while(empty(grid,pos[0], pos[1] + iterator)):
  67. freeStepsDown += 1
  68. iterator += 1
  69. print("Down: " + str(freeStepsUp))
  70.  
  71. dictionary = {
  72. "left" : freeStepsLeft,
  73. "right" : freeStepsRight,
  74. "down" : freeStepsDown,
  75. "up" : freeStepsUp
  76. }
  77. return dictionary
  78.  
  79. while(game.awaitNextGameState() == "ongoing"):
  80. print("\n-----------------------------------------")
  81. board = game.currentBoard
  82. playerPosition = (board.player.x, board.player.y)
  83. playerMoves, enemyMoves = game.getPossibleMoves(board)
  84. board.printBoard("current board")
  85.  
  86. #Remove all moves that will make you collide on the next turn
  87. possibleNonCollidingMoves = nonCollidingMoves(playerMoves, board.grid, playerPosition)
  88.  
  89. #Count how many free tiles you have in each direction
  90. blockedDistances = countStepsInDirection(board.grid, playerPosition)
  91. maxDistance = max(blockedDistances, key=blockedDistances.get)
  92. print("The max distance is in direction: " + str(maxDistance))
  93.  
  94. if maxDistance in possibleNonCollidingMoves:
  95. game.makeMove(maxDistance)
  96. elif True:
  97. game.makeMove(random.choice(possibleNonCollidingMoves))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement