Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from AlbotOnline.Snake.SnakeGame import SnakeGame
- import random
- #Remove non possible hands
- game = SnakeGame()
- # check if the position in the grid is empty
- def empty(grid, yPos, xPos):
- if yPos < 0 or yPos >= 10 or xPos < 0 or xPos >= 10:
- return False
- return grid[yPos][xPos] == "0"
- def nonCollidingMoves(possibleMoves, grid, pos):
- possibleNonCollidingMoves = []
- if "right" in possibleMoves:
- nextX = pos[0] + 1
- nextY = pos[1]
- if empty(grid, nextY, nextX):
- possibleNonCollidingMoves.append("right")
- if "down" in possibleMoves:
- nextX = pos[0]
- nextY = pos[1] + 1
- if empty(grid, nextX, nextY):
- possibleNonCollidingMoves.append("down")
- if "left" in possibleMoves:
- nextX = pos[0] - 1
- nextY = pos[1]
- if empty(grid, nextX, nextY):
- possibleNonCollidingMoves.append("left")
- if "up" in possibleMoves:
- nextX = pos[0]
- nextY = pos[1] - 1
- if empty(grid, nextX, nextY):
- possibleNonCollidingMoves.append("up")
- return possibleNonCollidingMoves
- def countStepsInDirection(grid, pos):
- freeStepsRight = 0
- freeStepsLeft = 0
- freeStepsDown = 0
- freeStepsUp = 0
- iterator = 1
- while(empty(grid,pos[0] + iterator, pos[1])):
- freeStepsRight += 1
- iterator += 1
- print("right: " + str(freeStepsRight))
- iterator = 1
- while(empty(grid,pos[0] - iterator, pos[1])):
- freeStepsLeft += 1
- iterator += 1
- print("left: " + str(freeStepsLeft))
- iterator = 1
- while(empty(grid,pos[0], pos[1] - iterator)):
- freeStepsUp += 1
- iterator += 1
- print("up: " + str(freeStepsDown))
- iterator = 1
- while(empty(grid,pos[0], pos[1] + iterator)):
- freeStepsDown += 1
- iterator += 1
- print("Down: " + str(freeStepsUp))
- dictionary = {
- "left" : freeStepsLeft,
- "right" : freeStepsRight,
- "down" : freeStepsDown,
- "up" : freeStepsUp
- }
- return dictionary
- while(game.awaitNextGameState() == "ongoing"):
- print("\n-----------------------------------------")
- board = game.currentBoard
- playerPosition = (board.player.x, board.player.y)
- playerMoves, enemyMoves = game.getPossibleMoves(board)
- board.printBoard("current board")
- #Remove all moves that will make you collide on the next turn
- possibleNonCollidingMoves = nonCollidingMoves(playerMoves, board.grid, playerPosition)
- #Count how many free tiles you have in each direction
- blockedDistances = countStepsInDirection(board.grid, playerPosition)
- maxDistance = max(blockedDistances, key=blockedDistances.get)
- print("The max distance is in direction: " + str(maxDistance))
- if maxDistance in possibleNonCollidingMoves:
- game.makeMove(maxDistance)
- elif True:
- game.makeMove(random.choice(possibleNonCollidingMoves))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement