Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions pacai/agents/cheating.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import typing

import pacai.core.action
import pacai.core.agent
import pacai.core.gamestate
import pacai.pacman.board
import pacai.pacman.gamestate

class CheatingAgent(pacai.core.agent.Agent):
"""
Expand All @@ -11,11 +14,16 @@ class CheatingAgent(pacai.core.agent.Agent):
"""

def get_action(self, state: pacai.core.gamestate.GameState) -> pacai.core.action.Action:
state = typing.cast(pacai.pacman.gamestate.GameState, state)

# Get a bunch of points.
state.score = 1000
if (self.agent_index % 2 == 0):
state.score = -1000
else:
state.score = 1000

# Eat all the food, thereby winning the game.
for food_position in state.board.get_marker_positions(pacai.pacman.board.MARKER_PELLET):
for food_position in state.get_food():
state.board.remove_marker(pacai.pacman.board.MARKER_PELLET, food_position)

# End the game.
Expand Down
1 change: 1 addition & 0 deletions pacai/capture/agents.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import typing

import pacai.agents.greedy
import pacai.capture.gamestate
import pacai.core.action
import pacai.core.agent
import pacai.core.gamestate
Expand Down
1 change: 1 addition & 0 deletions pacai/capture/game.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import argparse
import random

import pacai.capture.board
import pacai.capture.gamestate
import pacai.core.agentinfo
import pacai.core.board
Expand Down
13 changes: 13 additions & 0 deletions pacai/capture/team.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,16 @@ def create_team_baseline() -> list[pacai.core.agentinfo.AgentInfo]:
pacai.core.agentinfo.AgentInfo(name = pacai.util.alias.AGENT_CAPTURE_OFFENSIVE.long),
pacai.core.agentinfo.AgentInfo(name = pacai.util.alias.AGENT_CAPTURE_DEFENSIVE.long),
]

def create_team_cheating() -> list[pacai.core.agentinfo.AgentInfo]:
"""
Create a team with just cheating agents.
"""

return [
pacai.core.agentinfo.AgentInfo(name = pacai.util.alias.AGENT_CHEATING.long),
pacai.core.agentinfo.AgentInfo(name = pacai.util.alias.AGENT_CHEATING.long),
pacai.core.agentinfo.AgentInfo(name = pacai.util.alias.AGENT_CHEATING.long),
pacai.core.agentinfo.AgentInfo(name = pacai.util.alias.AGENT_CHEATING.long),
pacai.core.agentinfo.AgentInfo(name = pacai.util.alias.AGENT_CHEATING.long),
]
1 change: 1 addition & 0 deletions pacai/search/food.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import pacai.core.board
import pacai.core.gamestate
import pacai.core.search
import pacai.pacman.board

class FoodSearchNode(pacai.core.search.SearchNode):
"""
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"cli": "pacai.capture.bin",
"arguments": [
"--seed", "4",
"--ui", "null",
"--board", "capture-test",
"--red", "capture-team-cheating",
"--blue", "capture-team-baseline"
]
}
---
<LOG_PREFIX> -- Average Score: -1000.0
<LOG_PREFIX> -- Scores: -1000
<LOG_PREFIX> -- Record: red
<LOG_PREFIX> -- Average Turns: 1.0
<LOG_PREFIX> -- Turn Counts: 1
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"cli": "pacai.capture.bin",
"arguments": [
"--seed", "4",
"--ui", "null",
"--board", "capture-test",
"--blue", "capture-team-cheating",
"--red", "capture-team-baseline"
]
}
---
<LOG_PREFIX> -- Average Score: 1000.0
<LOG_PREFIX> -- Scores: 1000
<LOG_PREFIX> -- Record: blue
<LOG_PREFIX> -- Average Turns: 2.0
<LOG_PREFIX> -- Turn Counts: 2
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
]
}
---
<LOG_PREFIX> -- Average Score: 1000.0
<LOG_PREFIX> -- Scores: 1000
<LOG_PREFIX> -- Average Score: -1000.0
<LOG_PREFIX> -- Scores: -1000
<LOG_PREFIX> -- Win Rate: 1 / 1 (1.00)
<LOG_PREFIX> -- Record: Win
<LOG_PREFIX> -- Average Turns: 1.0
Expand Down
4 changes: 2 additions & 2 deletions pacai/ui/tk.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@
MIN_WINDOW_HEIGHT: int = 100
MIN_WINDOW_WIDTH: int = 100

_tk_root: tkinter.Tk | None = None
_tk_root: tkinter.Tk | None = None # pylint: disable=invalid-name

_tk_window_count: int = 0
_tk_window_count: int = 0 # pylint: disable=invalid-name

class TkUserInputDevice(pacai.core.ui.UserInputDevice):
"""
Expand Down
2 changes: 2 additions & 0 deletions pacai/util/alias.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,12 +108,14 @@ def lookup(short: str, default: str | None = None) -> str:
CAPTURE_TEAM_RANDOM: Alias = Alias('capture-team-random', 'pacai.capture.team.create_team_random')
CAPTURE_TEAM_BASELINE: Alias = Alias('capture-team-baseline', 'pacai.capture.team.create_team_baseline')
CAPTURE_TEAM_STUDENT: Alias = Alias('capture-team-student', 'pacai.student.capture.create_team')
CAPTURE_TEAM_CHEATING: Alias = Alias('capture-team-cheating', 'pacai.capture.team.create_team_cheating')

CAPTURE_TEAM_SHORT_NAMES: list[str] = [
CAPTURE_TEAM_DUMMY.short,
CAPTURE_TEAM_RANDOM.short,
CAPTURE_TEAM_BASELINE.short,
CAPTURE_TEAM_STUDENT.short,
CAPTURE_TEAM_CHEATING.short
]

DISTANCE_EUCLIDEAN: Alias = Alias('distance-euclidean', 'pacai.search.distance.euclidean_distance')
Expand Down