Add a exercise to module 13
This commit is contained in:
parent
be472fa4b3
commit
1cbfa643b2
5 changed files with 30 additions and 15 deletions
|
@ -1,3 +1,5 @@
|
|||
[< Back](../README.md)
|
||||
|
||||
# Exercise: Hello std::cout on Godbolt.org
|
||||
|
||||
## Background: Compiler Explorer
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
[< Back](../README.md)
|
||||
|
||||
# Exercise: Hello {fmt} on Godbolt
|
||||
|
||||
## Background: {fmt}
|
||||
|
|
|
@ -1 +1,3 @@
|
|||
[< Back](../README.md)
|
||||
|
||||
* [Exercise: Navigating the code](navigate_codebase/README.md)
|
|
@ -1,4 +1,8 @@
|
|||
# Pac-Man
|
||||
[< Back](../README.md)
|
||||
|
||||
# Exercise: Navigating the code
|
||||
|
||||
## Background: Pac-Man project
|
||||
|
||||
The project is split into three parts (solutions).
|
||||
|
||||
|
@ -7,7 +11,7 @@ The project is split into three parts (solutions).
|
|||
and call the `run()` function
|
||||
- **pacman_tests** - All of the unit tests for the game
|
||||
|
||||
## libpacman
|
||||
### libpacman
|
||||
|
||||
The libpacman solution has 3 main parts.
|
||||
|
||||
|
@ -16,7 +20,7 @@ The libpacman solution has 3 main parts.
|
|||
- **GameState** - A class that holds all of the state for Pac-Man. Contains classes like the Ghosts, PacMan and the
|
||||
Pellets PacMan eats
|
||||
|
||||
## Updating the game state
|
||||
### Updating the game state
|
||||
|
||||
Within the `Game.cpp` file there is a function called `run()`, this function draws the current game state to
|
||||
screen `canvas.update(gameState);` but it only calls the game state update function at a fixed interval, it also sends
|
||||
|
@ -26,37 +30,31 @@ Then in the `step()` function in `GameState.cpp` the magic happens. Each object
|
|||
state of the game world is checked. Did Pac-Man just eat a pellet? Are the ghosts touching Pac-Man? Which direction is
|
||||
Pac-Man moving?
|
||||
|
||||
## The game board
|
||||
### The game board
|
||||
|
||||
The game board is stored as a two dimensional array of integers in the `Board.cpp` file. The array itself is only
|
||||
accessible within that file, which is why we export helper functions that use the array as a global variable. This
|
||||
exporting happens in `Board.hpp`
|
||||
|
||||
## Ghosts
|
||||
### Ghosts
|
||||
|
||||
All ghosts inherit from the parent Ghost class defined in `Ghost.hpp/cpp`, there are a couple of pure virtual functions
|
||||
those ghosts need to implement, otherwise you are not able to create an instance of them. A ghost stores its current
|
||||
location, its current target and other state regarding if it is frightened or not. At each `update()` call a ghost needs
|
||||
to decide what its target is and which direction it should turn next.
|
||||
|
||||
## Pac-Man
|
||||
### Pac-Man
|
||||
|
||||
Pac-Man has similar state to a Ghost, like direction and position. Pac-Man's behavior is also similar in `update()` as
|
||||
we need to determine where to place Pac-Man in the next game state. But the information on which direction to turn comes
|
||||
from the player (or a bot).
|
||||
|
||||
## Unit tests
|
||||
### Unit tests
|
||||
|
||||
Because updates of game state and drawing the game on screen are completely separate, we can create game state within
|
||||
unit tests and give it arbitrary delta time and call whatever functions we want to simulate the game being played. Most
|
||||
unit tests only focus on one single class but some (like `testFruits`) use the `GameState` class.
|
||||
|
||||
## Ghosts characters and algorithms
|
||||
## Exercise
|
||||
|
||||
These will probably become relevant
|
||||
* https://en.wikipedia.org/wiki/Ghosts_(Pac-Man)
|
||||
* [Video: Pac-Man Ghost AI Explained](https://youtu.be/ataGotQ7ir8)
|
||||
* https://gameinternals.com/understanding-pac-man-ghost-behavior
|
||||
* https://www.gamasutra.com/view/feature/3938/the_pacman_dossier.php?print=1
|
||||
* https://www.slideshare.net/grimlockt/pac-man-6561257
|
||||
* http://donhodges.com/pacman_pinky_explanation.htm
|
||||
1. Familiarize yourself with the codebase by trying to find the files that contain the code mentioned in the slides
|
|
@ -23,3 +23,14 @@
|
|||
## Advanced
|
||||
|
||||
* [Advanced](advanced/README.md)
|
||||
|
||||
## Ghosts characters and algorithms
|
||||
|
||||
These will probably become relevant
|
||||
* https://en.wikipedia.org/wiki/Ghosts_(Pac-Man)
|
||||
* [Video: Pac-Man Ghost AI Explained](https://youtu.be/ataGotQ7ir8)
|
||||
* https://gameinternals.com/understanding-pac-man-ghost-behavior
|
||||
* https://www.gamasutra.com/view/feature/3938/the_pacman_dossier.php?print=1
|
||||
* https://www.slideshare.net/grimlockt/pac-man-6561257
|
||||
* http://donhodges.com/pacman_pinky_explanation.htm
|
||||
*
|
Loading…
Reference in a new issue