Description
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:
- Features (12 points)
- Good practices (5 points)
- 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:
- Class does one job.
- Method should be maximum 30 lines long.
- Class should have minimal static parts.
- Create many classes.
- Class should have maximum 10-15 methods.
- Don’t use break or continue for loops.
- Name your variables to make it easy to understand.
- Use build-in code prettifier (in Intellij: Code -> Format)
Java API
- Use package(s)
- Use Java built-in classes (3 minimum)
- Use inheritance
- Use hermitization
- Use arrays
- Use own defined types









