# internship-python-pacman-bogy-2025-02
**Repository Path**: mirrors_codecentric/internship-python-pacman-bogy-2025-02
## Basic Information
- **Project Name**: internship-python-pacman-bogy-2025-02
- **Description**: automatization for pacman game
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-03-25
- **Last Updated**: 2025-10-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Pac-man Game in Python
This is a simple implementation of the arcade game Pac-man written in Python. The original source code is from [Free Python Games](https://github.com/grantjenks/free-python-games/blob/master/src/freegames/pacman.py).
## Introduction
In the arcade game Pac-man the player controls the yellow token. The goal is to eat all pellets (small yellow dots) within a maze to win a level. Each pellet eaten by moving Pac-man over it increases the players score by one point. To make things difficult there are also four ghosts (red token) in the maze who try to stop Pac-man. When a ghost reaches Pac-mans position the player loses the game. The ghosts are controlled by the computer. It is only possible to move within the maze, the walls cannot be crossed.
### Controlling Pac-man
The Pac-man token can be controlled by pressing the arrow keys on the keyboard. It is possible to stop the token by not pressing a key. Be aware that the ghosts will still move on.
### Limitations
The simple implementation of the game has some limitations in comparison to the original arcade game:
- There are no power pellets that strengthen Pac-man to eat ghosts to temporarily lock them up at their starting position in the middle of the map.
- There are no fruits.
- There are no portals to jump from one side of the screen to the other.
- Ghosts are stupid and will only change to a randomly selected direction if they run into a wall.
- There is only one level.
## Setup
In order to run the game a local installation of Python is required, which bundles up Tkinter and turtle, which is required to let the application run in a window with graphical output. In addition, the package `freegames` is required, which can be installed using the python package manager from [requirements.txt](requirements.txt):
``` shell
python3 -m pip install -r requirements.txt
```
## Running the Game
The game can be started either from the command line with the following command:
```shell
python3 pacman.py
```
or by starting the file directly from your preferred IDE.
## Exercises
Before changing the code, make sure to branch from main.
### (1) Design a new maze
Create and design an additional maze for Pac-man and the ghosts
Hints
- Study the original maze array in [Mazes.py](src/Mazes.py)
- What is the meaning of 0 and 1 in the array?
- Why is the array wrapped in lines of 20 values?
### (2) Change the ghosts
Change the number of ghosts in the maze and their starting positions.
_Advanced:_ Give the ghosts their original names and colors.
Hints
- The ghosts are initialised in an array in the [pacman.py](src/pacman.py) file.
- Each ghost in the array is a `Ghost` object. Check out the respective [Ghost](src/agents/Ghost.py) class to find out more.
- Original ghost names and colors:
- Blinky: red
- Pinky: pink
- Inky: teal
- Clyde: orange
### (3) Make the ghosts take better decisions
- Study the current decision-making of the ghosts. How do they decide which way to go?
- The ghosts should _sense_ their surrounding for Pac-man. If Pac-man is within 3 tiles, they should chase him.
- _Advanced:_ While chasing, the speed (moving distance) of the ghosts is slightly increased.
- _Advanced:_ When losing sight, the speed (moving distance) of the ghosts is slightly decreased.
Hints
- The code for the ghost agents is within the file [agents/Ghost.py](src/agents/Ghost.py)
- The `step` method in the `Ghost` class is called each time the world is updated.
### (4) Make Pac-man move autonomous
- Pac-man should no longer be controlled by humans.
- Implement an autonomous agent that controls Pac-man.
- Pac-man should _sense_ his surrounding and avoid ghosts.
- The agent must collect all pellets to win the game.
Hints
- Create a new Pacman agent class
- Implement the `step(self, game_state)` method inside the new agent class, which decides for a direction based on the `game_state` parameter
- Replace the old pac-man instance with an instance of your agent class