Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
pelita [2018/09/07 14:43] – [Network games] Rike-Benjamin Schuppner | pelita [2023/08/31 17:50] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Programming Project ====== | ====== Programming Project ====== | ||
- | [[https:// | + | [[https:// |
- | Pelita is a PacMan™ | + | Pelita is a Pac-Man |
- | Your task is to write a bot implementation. You have to implement the intelligence to navigate your bots successfully through the maze, kill the enemy' | + | Your task as a group is to write a bot implementation. You have to implement the //intelligence// to navigate your bots successfully through the maze, kill the enemy' |
No special previous knowledge about machine learning, artificial intelligence, | No special previous knowledge about machine learning, artificial intelligence, | ||
==== Setup ==== | ==== Setup ==== | ||
- | Install pelita: | + | Fork the group repo (where '' |
- | pip3 install git+https:// | + | See the documentation directly on '' |
- | + | ||
- | Clone the group repo (where '' | + | |
- | + | ||
- | git clone https:// | + | |
- | + | ||
- | See the documentation directly on https:// | + | |
==== Intent ==== | ==== Intent ==== | ||
Line 27: | Line 21: | ||
Write tests for the part of your code which are testable, decide what parts you //can// test, what parts you //should// test, what parts you //must// test, and also what parts //can not// be tested. Use git and GitHub, use branches or pull-requests: | Write tests for the part of your code which are testable, decide what parts you //can// test, what parts you //should// test, what parts you //must// test, and also what parts //can not// be tested. Use git and GitHub, use branches or pull-requests: | ||
- | The idea of the group project is **not** to write the coolest AI-powered bots! Remember that and don't get carried away by the competition | + | The idea of the group project is **not** to write the coolest AI-powered bots! Remember that and don't get carried away by the competition. More about this in the next paragraph. |
- | ==== Working | + | ==== The Competition Factor==== |
+ | Some of you will feel the rush of competition, | ||
+ | Others may be annoyed by it, and may feel it is important to stay focused on good practices and don't care much about the result of the competition. | ||
+ | |||
+ | In part, this is the way humans work, so there is not much you can do about it. | ||
+ | But it may help to frame the experience | ||
+ | |||
+ | Back in the lab you will be also subject to all kinds of pressure. A typical situation is your boss asking for results and not caring about you writing nice, tested and reusable code. You will be often asked to just “deliver”, | ||
+ | |||
+ | Look at the programming project as a paradigmatic example of a real life situation. How do //you// work under pressure? How do //you// handle the trade-off between “just deliver” and “live up to your own standards”? | ||
+ | There is a lot to learn in such a context! | ||
+ | |||
+ | ==== Working in a Team ==== | ||
The group setting adds some additional hurdles to the challenge: you will be confronted with group dynamics which go beyond each member' | The group setting adds some additional hurdles to the challenge: you will be confronted with group dynamics which go beyond each member' | ||
- | Remember that as a group you can define your own rules. You are responsible as a group for keeping a nice and stimulating atmosphere during your long programming sessions. Talk about how to distribute the work and how to distribute responsibility: | + | Remember that as a group you can define your own rules. You are responsible as a group for keeping a nice and stimulating atmosphere during your long programming sessions. Talk about how to distribute the work and how to distribute responsibility: |
The final tournament is intended as a final party, where you can have fun watching **your** " | The final tournament is intended as a final party, where you can have fun watching **your** " | ||
Line 43: | Line 49: | ||
* Are you allowed to work alone and putting on your headphones? | * Are you allowed to work alone and putting on your headphones? | ||
* Are you allowed to work outside of the classroom? | * Are you allowed to work outside of the classroom? | ||
- | * Are you allowed to push to '' | + | * Are you allowed to push to '' |
* <color # | * <color # | ||
* choose persons responsible for certain roles. You need at least: | * choose persons responsible for certain roles. You need at least: | ||
* a group speaker, and most probably… | * a group speaker, and most probably… | ||
- | * … a release manager | + | * … a release manager |
* <color # | * <color # | ||
* take time, once in a while, to step back and have a look at how the group work is going and to discuss if you need adjustments | * take time, once in a while, to step back and have a look at how the group work is going and to discuss if you need adjustments | ||
Line 61: | Line 67: | ||
* later we will make [[# | * later we will make [[# | ||
* do **not** waste hours debugging Pelita or wondering about exotic cases: ask the tutors, they are there for you and are happy to help! | * do **not** waste hours debugging Pelita or wondering about exotic cases: ask the tutors, they are there for you and are happy to help! | ||
+ | |||
+ | At the end of the first session: | ||
+ | * Discuss the above points and write down the outcome of that discussion, even just as a list of bullet-points, | ||
Line 66: | Line 75: | ||
<alert type=" | <alert type=" | ||
- | * The repos are going to be **frozen** on Saturday | + | * The repos are going to be **frozen** on Saturday |
* Be sure there is a file in your repo named '' | * Be sure there is a file in your repo named '' | ||
- | * The file should define the string '' | + | * The file should define the string '' |
</ | </ | ||
Line 76: | Line 85: | ||
* '' | * '' | ||
* '' | * '' | ||
- | * the maze is a random '' | + | * the maze is randomly chosen for each game among the built-in mazes of normal size (32x16) |
- | * the side (blue/red) is randomly assigned | + | * your team' |
- a knockout round (based on the rank from the round-robin): | - a knockout round (based on the rank from the round-robin): | ||
* semifinal 1: the 1st team against the 4th | * semifinal 1: the 1st team against the 4th | ||
Line 83: | Line 92: | ||
* **final**: the two winners of the semifinals against each other | * **final**: the two winners of the semifinals against each other | ||
* **last-chance final**: the winner of the final against the 5th team from the round-robin | * **last-chance final**: the winner of the final against the 5th team from the round-robin | ||
- | | + | / |
* <color # | * <color # | ||
+ | */ | ||
- | ==== Network games ==== | ||
+ | ==== Network games ==== | ||
To play against the more advanced bots in the network, start a network game: | To play against the more advanced bots in the network, start a network game: | ||
- | pelita groupN.py | + | pelita groupN.py |
- | | + | |
- | | + | The keyword SCAN allows you then to select a network player on the command line. |
- | | + | |
- | | + | (Of course, remember that your bot can also play on the right side, so make sure to test eg. '' |
- | | + | |
- | | + | |
- | (Of course, remember that your bot can also play on the right side, so make sure to test eg. '' |