$25
Your main task is to create a console-based game.
The game has to use:
• I/O to communicate with user[1]
• Map (2D board)
Game visualization
(You have to create text version)
Scoring
To gain 100% of project’s points, you have to choose a collection of features for your game and implement it. The final score includes:
1. Features (12 points)
2. Good practices (5 points)
3. Using Java API (3 points)
Features table
Difficulty
Name
Example
Gain
Easy
Store information about player
You can create a class for storing data like health, mana, points, resources, money etc.
1 pt.
Easy
Place player on the map
You can set (x,y)
position related to map
1 pt.
Easy
Allow player to move on the board
Game asks: “Where do you want to move?”
Players writes:
“NORTH”
So, player is one spot up
1 pt.
Easy
Add some elements on map
If player is present on element’s spot, it will decrease health
points or increase money
1 pt.
Medium
Add randomness
Every time you play, elements are in different position
2 pts.
Medium
Add 4 types of elements
There should be 4 different actions. Adding different amount of money is still just one action.
2 pts.
Medium
Add NPCs
Player can meet a game character to interact with.
2 pts.
Medium
Allow to lose / win
If health < 0, then player dies. If player achieves something, the player wins etc.
2 pts.
Hard
Make world infinite
Map increases its size and generates content by itself
3 pts.
Hard
Add option to upgrade
Upgrade is like adding availability to move 2 fields instead of one.
3 pts.
Hard
Use hexagons instead of squares to build the map
You can move in 6 directions.
3 pts.
Hard
Allow player to change a tile
Player can build bridge to cross the river
3 pts.
Good practices
Your code should be readable and clean:
1. Class does one job.
2. Method should be maximum 30 lines long.
3. Class should have minimal static parts.
4. Create many classes.
5. Class should have maximum 10-15 methods.
6. Don’t use break or continue for loops.
7. Name your variables to make it easy to understand.
8. Use build-in code prettifier (in Intellij: Code -> Format)
Java API
1. Use package(s)
2. Use Java built-in classes (3 minimum)
3. Use inheritance
4. Use hermitization
5. Use arrays
6. Use own defined types
Some course credit regulations
1. While submitting a project please be prepared to answer some theoretical questions. If asked by the teacher, each student is expected to be able to modify a code. Not answering an question or not modifying the code results 0p.
2. Every project recognised with a plagiarism is disqualified without a possibility of retake.
3. You should pack and send the entire project archive, not just the source code files.
4. Projects should be sent as a ZIP file to the appropriate task assigned in the Tasks tab on MS Teams platform.
5. A ZIP archive should be named according to the following scheme: PPJ_EN_PRO_GRXXc_sXXXXX_IDE.zip
a. GRXXc is the number of your group. Replace XX with a group number,
b. sXXXXX is your index number,
c. IDE means the IDE name you used.
6. Projects named contrary to the description will not be checked and will receive 0 points.
[1] Terminal