The Pentominoes Project
The project consisted of three phases, all of which were connected by the theme of Pentominoes: Tetris-like pieces, consisting of 5 elements each. All of the code was written in Java with JavaFX (version 11.0.2).
The project consisted of three phases:
- Phase 1: Developing an exact-cover search algorithm (Algorithm X) to check if user-selected pentominoes can cover exactly a given container, without overlapping
- Phase 2: Making a game of Pentris (Pentominoe-Tetris), including at least one bot able to play the game (we ended up developing two: a Genetic Algorithm one, and a Score-based one, with our own scoring system)
- Phase 3: Solving a 3D Knapsack problem with both pentominoe-shaped boxes and cuboids.
Files from all of the phases are accessible from the project’s repository (link at the top of this page) in their respective packages, but since Phase 3 was considered the most crucial one, this project has also a final report concentrated around it. The paper can be found on ResearchGate.
Most of the code is well-documented, with the Javadoc documentation being accessible here. Since it is believed that the code won’t be developed further, apart from possible minor bug fixes, the version of documentation linked should be considered final. Some earlier versions of the documentation, connected to major and minor release versions still exist but the current one is mostly backwards-compatible and contains all functionality of the previous ones.
No further development of the project is panned, however it is possible that all three phases of the project are going to be connected by one executable main file with options to choose which Phase of the project to run. This however should not in any way influence the current documentation, as the classes used should not change, they would have only one starting point.
This project was a group effort, and I would like to mention and thank all my team members for cooperation and the unbelievable amount of work and care they put into it.
Our amazing team (TM):