我们从Python开源项目中,提取了以下38个代码示例,用于说明如何使用util.nearestPoint()。
def getAction(self, gameState): """ Calls chooseAction on a grid position, but continues on half positions. If you subclass CaptureAgent, you shouldn't need to override this method. It takes care of appending the current gameState on to your observation history (so you have a record of the game states of the game) and will call your choose action method if you're in a state (rather than halfway through your last move - this occurs because Pacman agents move half as quickly as ghost agents). """ self.observationHistory.append(gameState) myState = gameState.getAgentState(self.index) myPos = myState.getPosition() if myPos != nearestPoint(myPos): # We're halfway from one position to the next return gameState.getLegalActions(self.index)[0] else: return self.chooseAction(gameState)
def applyAction( state, action ): """ Edits the state to reflect the results of the action. """ legal = PacmanRules.getLegalActions( state ) if action not in legal: raise Exception("Illegal action " + str(action)) pacmanState = state.data.agentStates[0] # Update Configuration vector = Actions.directionToVector( action, PacmanRules.PACMAN_SPEED ) pacmanState.configuration = pacmanState.configuration.generateSuccessor( vector ) # Eat next = pacmanState.configuration.getPosition() nearest = nearestPoint( next ) if manhattanDistance( nearest, next ) <= 0.5 : # Remove food PacmanRules.consume( nearest, state )
def decrementTimer( ghostState): timer = ghostState.scaredTimer if timer == 1: ghostState.configuration.pos = nearestPoint( ghostState.configuration.pos ) ghostState.scaredTimer = max( 0, timer - 1 )
def getSuccessor(self, gameState, action): """ Finds the next successor which is a grid position (location tuple). """ successor = gameState.generateSuccessor(self.index, action) pos = successor.getAgentState(self.index).getPosition() if pos != nearestPoint(pos): # Only half a grid position was covered return successor.generateSuccessor(self.index, action) else: return successor
def decrementTimer(state): timer = state.scaredTimer if timer == 1: state.configuration.pos = nearestPoint( state.configuration.pos ) state.scaredTimer = max( 0, timer - 1 )
def applyAction( state, action, agentIndex ): """ Edits the state to reflect the results of the action. """ legal = AgentRules.getLegalActions( state, agentIndex ) if action not in legal: raise Exception("Illegal action " + str(action)) # Update Configuration agentState = state.data.agentStates[agentIndex] speed = 1 # if agentState.isPacman: speed = 0.5 vector = Actions.directionToVector( action, speed ) oldConfig = agentState.configuration agentState.configuration = oldConfig.generateSuccessor( vector ) # Eat next = agentState.configuration.getPosition() nearest = nearestPoint( next ) if next == nearest: isRed = state.isOnRedTeam(agentIndex) # Change agent type agentState.isPacman = [isRed, state.isRed(agentState.configuration)].count(True) == 1 # if he's no longer pacman, he's on his own side, so reset the num carrying timer #agentState.numCarrying *= int(agentState.isPacman) if agentState.numCarrying > 0 and not agentState.isPacman: score = agentState.numCarrying if isRed else -1*agentState.numCarrying state.data.scoreChange += score agentState.numReturned += agentState.numCarrying agentState.numCarrying = 0 redCount = 0 blueCount = 0 for index in range(state.getNumAgents()): agentState = state.data.agentStates[index] if index in state.getRedTeamIndices(): redCount += agentState.numReturned else: blueCount += agentState.numReturned if redCount >= (TOTAL_FOOD/2) - MIN_FOOD or blueCount >= (TOTAL_FOOD/2) - MIN_FOOD: state.data._win = True if agentState.isPacman and manhattanDistance( nearest, next ) <= 0.9 : AgentRules.consume( nearest, state, state.isOnRedTeam(agentIndex) )