Differences
This shows you the differences between two versions of the page.
Previous revision | |||
pelita [2019/09/04 09:36] – [Setup] rike | — | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Programming Project ====== | ||
- | |||
- | [[https:// | ||
- | Pelita is a Pac-Man like game. Two teams each of two bots are placed in a maze with food pellets. The maze is split into two parts, the left one belongs to the team on the left (the blue team), the right one belongs to the team on the right (the red team). When a bot is in its own homezone it is a ghost. A ghost can defend its own food pellets by killing the enemies. When a bot is in its enemy' | ||
- | |||
- | Your task as a group is to write a bot implementation. You have to implement the // | ||
- | |||
- | No special previous knowledge about machine learning, artificial intelligence, | ||
- | |||
- | ==== Setup ==== | ||
- | Install pelita: | ||
- | |||
- | pip install pelita | ||
- | |||
- | Clone the group repo (where '' | ||
- | |||
- | git clone https:// | ||
- | |||
- | See the documentation directly on https:// | ||
- | |||
- | (Users of anaconda on macOS, please watch out for bug https:// | ||
- | ==== Intent ==== | ||
- | |||
- | We want to give you a chance of putting into practice the software development techniques and tools we have been talking about during the school. | ||
- | |||
- | We expect you to try out the techniques, and evaluate what is feasible and what not, what helps you being more efficient at writing reliable code, and what feels like a hindrance instead. By doing this in the group we expect you to profit from the experience of other students, and, by explaining to other students your own experiences, | ||
- | |||
- | 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. More about this in the next paragraph. | ||
- | |||
- | ==== 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 in a different way. | ||
- | |||
- | 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' | ||
- | |||
- | 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** " | ||
- | |||
- | ==== Suggestions ==== | ||
- | Organizational: | ||
- | * take some time to discuss how you want to organize and distribute the work | ||
- | * take some time to discuss about the rules in your group. For example: | ||
- | * Are you allowed to be late or leave early? | ||
- | * Are you allowed to work alone and putting on your headphones? | ||
- | * Are you allowed to work outside of the classroom? | ||
- | * Are you allowed to push to '' | ||
- | * <color # | ||
- | * choose persons responsible for certain roles. You need at least: | ||
- | * a group speaker, and most probably… | ||
- | * … a release manager | ||
- | * <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 | ||
- | * work in **pairs** | ||
- | Technical: | ||
- | * make sure each pair works on **different** files | ||
- | * write tests | ||
- | * everyone should write tests for their own code, don't assign someone specific to "write the tests" for everyone. Testing doesn' | ||
- | * do not waste too much time discussing your '' | ||
- | * choose a git workflow: | ||
- | * if you choose to work with forks and PRs, decide who is going to merge PRs (the release manager) | ||
- | * if you choose to work in one repo, use different branches for different pairs (you still need someone responsible for merging the different branches when needed) | ||
- | * 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! | ||
- | |||
- | |||
- | ==== Tournament Rules ==== | ||
- | |||
- | <alert type=" | ||
- | * The repos are going to be **frozen** on Saturday 7 September at exactly **17:00**! | ||
- | * Be sure there is a file in your repo named '' | ||
- | * The file should define the string '' | ||
- | </ | ||
- | |||
- | The tournament is organized in two phases: | ||
- | - all-against-all (round-robin). Every team plays once against every other team: | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * the maze is randomly chosen for each game among the built-in mazes of normal size (32x16) | ||
- | * your team's side (blue/red) is randomly assigned | ||
- | - a knockout round (based on the rank from the round-robin): | ||
- | * semifinal 1: the 1st team against the 4th | ||
- | * semifinal 2: the 2nd team against the 3rd | ||
- | * **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 | ||
- | - <color # | ||
- | * <color # | ||
- | |||
- | ==== Network games ==== | ||
- | … more info soon … | ||
- | /* | ||
- | To play against the more advanced bots in the network, start a network game: | ||
- | |||
- | pelita groupN.py remote: | ||
- | pelita groupN.py remote: | ||
- | pelita groupN.py remote: | ||
- | pelita groupN.py remote: | ||
- | pelita groupN.py remote: | ||
- | pelita groupN.py remote: | ||
- | pelita groupN.py remote: | ||
- | |||
- | (Of course, remember that your bot can also play on the right side, so make sure to test eg. '' | ||
- | */ | ||