Feat: hw2 done

This commit is contained in:
2026-04-06 05:24:23 +08:00
commit 37c264e26e
214 changed files with 12807 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
from pacman import Directions
from game import Agent
import random
import game
import util
class LeftTurnAgent(game.Agent):
"An agent that turns left at every opportunity"
def getAction(self, state):
legal = state.getLegalPacmanActions()
current = state.getPacmanState().configuration.direction
if current == Directions.STOP:
current = Directions.NORTH
left = Directions.LEFT[current]
if left in legal:
return left
if current in legal:
return current
if Directions.RIGHT[current] in legal:
return Directions.RIGHT[current]
if Directions.LEFT[left] in legal:
return Directions.LEFT[left]
return Directions.STOP
class GreedyAgent(Agent):
def __init__(self, evalFn="scoreEvaluation"):
self.evaluationFunction = util.lookup(evalFn, globals())
assert self.evaluationFunction != None
def getAction(self, state):
# Generate candidate actions
legal = state.getLegalPacmanActions()
if Directions.STOP in legal:
legal.remove(Directions.STOP)
children = [(state.getNextState(0, action), action)
for action in legal]
scored = [(self.evaluationFunction(state), action)
for state, action in children]
bestScore = max(scored)[0]
bestActions = [pair[1] for pair in scored if pair[0] == bestScore]
return random.choice(bestActions)
def scoreEvaluation(state):
return state.getScore()