Problemset 1: Training

Objectives

  • Practice basic principles of object-oriented programming.

Instructions

  • Foreign students: The last round of evaluation of projects in GitLab by system Arena will be on friday 30th november 2018 at 23.59.

Comment


  • Update version of game library to 2.3.0 since this version is also used by Arena.

Tasks

Implement all primary and secondary (additional) tasks from Lab #2, Lab #3, Lab #4 and Lab #5.

Submission

Submit your implementation by using version control system Git on school GitLab server https://git.kpi.fei.tuke.sk. Name of Git project has to be project-ellen-2018.

Project structure

All submitted files have to be encoded in UTF8. In names of created files and directories using lowercase and uppercase letters matters ! Structure of your project project-ellen-2018 should be as follows:

.  // root directory of repository
├── gradle   // contains files of tool gradle
├── src
│  ├── main
│  │  ├── java
│  │  │  └── sk
│  │  │     └── tuke
│  │  │        └── kpi
│  │  │           └── oop
│  │  │              └── game
│  │  │                 ├── actions
│  │  │                 │  └── PerpetualReactorHeating.java
│  │  │                 ├── tools
│  │  │                 │  ├── BreakableTool.java
│  │  │                 │  ├── FireExtinguisher.java
│  │  │                 │  ├── Hammer.java
│  │  │                 │  ├── Mjolnir.java
│  │  │                 │  ├── Usable.java
│  │  │                 │  └── Wrench.java
│  │  │                 ├── ChainBomb.java
│  │  │                 ├── Computer.java
│  │  │                 ├── Cooler.java
│  │  │                 ├── DefectiveLight.java
│  │  │                 ├── EnergyConsumer.java
│  │  │                 ├── Gameplay.java    // scenario is not tested
│  │  │                 ├── Helicopter.java
│  │  │                 ├── Light.java
│  │  │                 ├── PowerSwitch.java
│  │  │                 ├── Reactor.java
│  │  │                 ├── Repairable.java
│  │  │                 ├── SmartCooler.java
│  │  │                 ├── Switchable.java
│  │  │                 ├── Teleport.java
│  │  │                 └── TimeBomb.java
│  │  └── resources
│  │     └── sprites  // contains sprites of actors
├── .editorconfig
├── .gitignore
├── build.gradle.kts
├── gradlew
├── gradlew.bat
├── README.md
└── settings.gradle.kts

Comment

Create the Git repository in directory of your project (directory contains file build.gradle.kts). In your git repository, do not forget to configure also remote repository with address of your project project-ellen-2018 that you created on GitLab.

Comment

It is important that your repository follows the structure above. If some file is present in the repository but in different directory, it will be considered as error.

Content of file README.md should have the following structure:

GROUP: 01

Comment

Value of GROUP is the number of group that you belong to based on timetable of this course. You can check your number of group in the course timetable in MAIS system.

Comment

Information for students repeating the course
Repeating students should enter group number in file README.md according to the following list, based on study programme:
  • Informatics and Computer modelling: group 31
  • Business informatics a Intelligent systems: group 32

Project dependencies

The following settings of dependencies in file build.gradle.kts are expected for building and testing the project:

val gamelibVersion = "2.3.0"

dependencies {
    implementation("sk.tuke.kpi.gamelib:gamelib-framework:$gamelibVersion")
}

Scoring and testing

Slovak students: You can get max. 10 points for this assignment.

Foreign students: You can get max. 40 points for this assignment.

The number of points that you obtain will be reflected by tests that successfully pass during project evaluation. The following will be verified:

  • Structure of your project (if required files are present in it).
  • Static analysis of your code by tool PMD. Your code will be analysed with respect to these rules. You can run tool PMD also locally, e.g. by using tool Gradle (see tutorial for setup).
  • Functionality of classes and methods that you implemented with respect to tasks defined in the assignment by using unit tests.

The following will be considered as strict error:

  • If error occurs during compilation.
  • If you use other than private instance variables in your implementation.

Your projects will be evaluated every 2 hours (at 00:00, 02:00, 04:00, etc). Processing all projects takes some time. You can learn about your results by using RSS channel or by watching URL address with a list of all your evaluations. Both addresses will be sent from platform Arena to you by e-mail on university e-mail address only once. No more emails with results will be sent. New result of testing will be displayed on Arena's web page only if you added new commit into GitLab repository since previous testing.