Ciele
- Overiť si osvojené vedomosti o základných princípoch objektovo orientovaného programovania.
Pokyny
- Termín, do ktorého je potrebné odovzdať zadanie, je nedeľa 3. novembra 2024 o 23:59. Je to zároveň posledný termín hodnotenia projektov v GitLab-e systémom Arena.
- Pri práci na zadaní dodržiavajte etický kódex!
Poznámka
- Aktualizujte si knižnicu na verziu
2.6.1
, keďže tá sa používa v Arene. - Testovanie v systéme Arena bolo spustené 28.10.2024 od 9:00.
Úlohy
Vypracujte všetky primárne aj sekundárne (doplňujúce) úlohy z cvičení Lab #2, Lab #3,Lab #4 a Lab #5.
Odovzdávanie
Zadanie sa odovzdáva prostredníctvom systému na správu verzií Git na školskom GitLab serveri https://git.kpi.fei.tuke.sk.
Na odovzdanie zadania využijete projekt, ktorý ste si vytvorili prostredníctvom aplikácie OOP Gitlab Classroom na začiatku semestra.
Zdrojový kód vášho projektu môžete upravovať až kým nenastane posledný termín testovania systémom Arena.
Štruktúra projektu
Kódovanie všetkých odovzdávaných súborov musí byť UTF8. Pri názvoch vytváraných súborov a priečinkov záleží na veľkosti písmen! Štruktúra vášho projektu bude vyzerať nasledovne:
. // root adresar repozitara
├── gradle // obsahuje subory nastroja 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 // scenar nebude testovany
│ │ │ ├── Helicopter.java
│ │ │ ├── Light.java
│ │ │ ├── PowerSwitch.java
│ │ │ ├── Reactor.java
│ │ │ ├── Repairable.java
│ │ │ ├── SmartCooler.java
│ │ │ ├── Switchable.java
│ │ │ ├── Teleport.java
│ │ │ └── TimeBomb.java
│ │ └── resources
│ │ └── sprites // obsahuje sprity akterov
├── .editorconfig
├── .gitignore
├── build.gradle.kts
├── gradlew
├── gradlew.bat
└── settings.gradle.kts
Upozornenie
Je dôležité, aby váš repozitár zachoval uvedenú štruktúru. Ak sa niektorý zo súborov síce v repozitári nachádza, ale v inom priečinku, bude to považované za chybu.
Závislosti projektu
Pri preklade a testovaní projektu budú predpokladané nasledovné nastavenia závislostí v súbore build.gradle.kts
:
val gamelibVersion = "2.6.1"
dependencies {
implementation("sk.tuke.kpi.gamelib:gamelib-framework:$gamelibVersion")
}
Hodnotenie a testovanie
Za zadanie môžete získať max. 10 bodov. Počet získaných bodov sa bude odrážať od výsledku testov, ktorými vaše zadanie úspešne prejde. Overovať sa bude:
- Štruktúra vášho projektu (či sa v ňom nachádzajú potrebné súbory).
- Statická analýza vášho kódu pomocou nástroja PMD. Váš kód sa bude kontrolovať vzhľadom na tieto pravidlá. Nástroj PMD môžete spúšťať aj lokálne, napríklad pomocou nástroja Gradle (viď návod na nastavenie).
- Funkčnosť vami vytvorených tried a metód voči úlohám definovaným v zadaní pomocou unit testov.
Za striktnú chybu sa bude považovať:
- Ak počas prekladu dôjde ku chybe.
- Ak v implementácií vašich tried používate iné ako privátne členské premenné.
- Použitie unchecked operácií alebo raw typov.
Upozornenie
Váš kód bude na Arene kompilovaný s prepínačmi -Xlint:unchecked,rawtypes -Werror
, ktoré varovania ohľadom použitia unchecked operácii alebo raw typov skonvertujú na chyby a ich výskyt tak spôsobí zlyhanie kompilácie.
Tieto prepínače si viete nastaviť aj pre lokálnu kompiláciu kódu upravením existujúcej konfigurácie JavaCompile
úloh v súbore build.gradle.kts
do nasledovnej podoby:
tasks {
withType<JavaCompile> {
options.compilerArgs.addAll(listOf("-parameters", "-Xlint:unchecked,rawtypes", "-Werror"))
}
}
Po spustení testovania sa vaše riešenia budú testovať každé 3 hodiny, teda 00:00, 03:00, 06:00 atď. Spracovanie všetkých projektov trvá nejaký čas. O vašich výsledkoch sa budete môcť dozvedieť pomocou RSS kanála alebo sledovaním URL adresy so zoznamom všetkých vašich hodnotení. Obe adresy vám prídu e-mailom na školskú e-mailovú adresu z testovacej platformy Arena len raz. Žiadne ďalšie maily s hodnotením už chodiť nebudú. Nový výsledok testu sa na stránke Areny zobrazí len ak ste od posledného testovania pridali do repozitára na GitLab serveri nový commit.
Vaše riešenia prejdú kontrolou originality. Preto sa pri práci na vašom zadaní správajte podľa pravidiel etického kódexu! V prípade, že odovzdáte zadanie, ktoré nie je vaše, budete vylúčení z predmetu!