Keresés

szerda, 09 december 2015 10:49

PENdroid országos informatikai verseny

android tanulasaA Pannon Egyetem Nagykanizsai Kampusza ez év szeptemberére újfent meghirdette a PENdroid országos informatikai versenyt középiskolások számára. A két fordulóból álló kvalifikációs szakaszban két különböző androidos alkalmazást kellett a csapatoknak elkészítenie. Iskolánk egy csapatot indított a versenyen: Cseri-droid: Aradi Róbert 11A, Hervai Dávid 11A és Széphegyi Dániel 10C osztályos tanulók, felkészítő tanár: Gábris Jácint.

A csapat bejutott a legjobb 10 csapat számára 2016. január 29-én megrendezésre kerülő döntőbe, ami már önmagában is nagyon szép teljesítmény!

S milyen nehézségű feladatok voltak az egyes fordulókon? Az alábbi linkre kattintva megtekinthető a kiírás. A versenyzőknek nem csupán a programozás, az algoritmizálás, a grafika és a kreativitás területein, hanem fizikából és matematikából is jó tantárgyi tudásra volt szükségük. Szerencsére, a Cserhátiban e téren (is) kiváló képzésben részesülnek diákjaink, így sikerrel vették az akadályokat.

Második forduló

Készítsen egy egyszerű játék programot, amelynek témája a holdra szállás. A játéktér két fő eleme: egy függőlegesen landoló egység és a hold felszíne. A játék kezdésekor be lehet állítani, hogy a hold milyen gyorsulással húzza magához a leszállóegységet, valamint, hogy a leszállóegység fékező rakétái milyen nyomóerővel rendelkeznek. A rakéták 2 másodperc folyamatos használat után túlmelegednek és leállnak. Ha bekövetkezett a túlmelegedés, akkor csak abban az esetben használhatók újra, ha lehűltek. A hűlési idejük 3 másodperc. Ha elhagyja a leszálló egység a képernyőt, akkor a játéknak vége. A játék célja, hogy landoljon a leszállóegység a hold felszínén. Akkor sikeres a landolás, ha 10 m/s sebességnél kisebb a leszálló egység sebessége a holdat érés pillanatában. Törekedj a szép és harmonikus formatervre.

Minden további funkció megvalósítása plusz pontot ér. Például olyan tereptárgyak megjelenése a hold felszínén, amelyre nem lehet landolni, jobbra balra mozgatása a leszállóegységnek, váratlan fordulatok a játékban, animált design, stb. A megvalósított plusz funkciókat a forráskód elején megjegyzésben fel kell sorolni.

Első forduló

Készítsen egy szerepjáték csata szimulátort, amely segítségével minimum 2 ellenfél küzdelmét lehet lejátszani.

Tetszőlegesen választott beviteli eszközök segítségével kérje be a program a következő adatokat minden egyes, a csatában résztvevő fél esetében:

  • A hős neve
  • A hős életereje (10 és 500 közötti egész szám)
  • A hős varázsereje (0-20)
  • A hős fegyverének sebzése (1-10)
  • A hős védelmi képessége (1-10)

A csata teljes ideje alatt a hősök egy előre meghatározott sorrendben követik egymást ciklikusan.

A csata menete:

  •  Amennyiben 3 vagy annál több hős küzd egymás ellen, akkor először ki kell választani egy véletlenszerű esemény segítségével, hogy az aktuális hős melyik hőst fogja ebben a körben megtámadni.
  • A támadó a következő algoritmus segítségével véglegesíti a támadási pontját:
  • (a hős fegyverének sebzése) * (egy 0,7 és 1,15 közötti véletlenszerű számmal)
  • Ha a támadó hősnek van még felhasználható varázsereje, akkor véletlenszerűen generált számmal eldönti, hogy használ-e a varázserejéből. Az egy körben felhasznált varázserő nem haladhatja meg a következő két érték közül a kisebbet: (hős maximális varázsereje), (5). A hős varázsereje természetesen a felhasznált értékkel csökkeni fog. Amennyiben az adott körben használ a varázserejéből, akkor a következő képlet segítségével módosul az aktuális támadási pont:
  • (a hős korábban kiszámolt támadási pontja) * (1+(felhasznált varázserő/5))
  • A védekező a következő algoritmus segítségével véglegesíti a védelmi pontját:
  • (a hős védelmi képessége) * (egy 0,5 és 1,3 közötti véletlenszerű számmal)
  • Ha a védekező hősnek van még felhasználható varázsereje, akkor véletlenszerűen generált számmal eldönti, hogy használ-e a varázserejéből. Az egy körben felhasznált varázserő nem haladhatja meg a következő két érték közül a kisebbet: (hős maximális varázsereje), (5). A hős varázsereje természetesen a felhasznált értékkel csökkeni fog. Amennyiben az adott körben használ a varázserejéből, akkor a következő képlet segítségével módosulhat az aktuális védekezése pont:
  • (a hős korábban kiszámolt védekezési pontja) * (1+(felhasznált varázserő/2,5))
  •  A csatában a védekező hős kiszámolt védelmi pontjából kivonjuk a támadó hős támadási pontját. Ha a kapott eredmény nagyobb, mint nulla, akkor az értékét levonjuk a védekező játékos életerejéből. Ha a védekező játékos életereje kisebb vagy egyenlő mint nulla, akkor az a hős meghalt.

A hősök egymás után támadnak az előbb leírt módon. A csata addig zajlik, amíg végül már csak egy játékos marad életben (nagyobb az élete nullánál). A csata lefolyását vagy mesterségesen lassítani kell, hogy az ember számára szabad szemmel követhető legyen a kijelzőn, vagy minden egyes új kör elkezdése előtt emberi beavatkozást kell közbeiktatni a programba.

Fontos, hogy a szoftver vegye észre és figyelmeztesse a felhasználót a hiányosan, vagy hibásan kitöltött mezőkre, valamint folyamatosan tájékoztassa a felhasználót a csata állásáról, valamint az egyes hősök, aktuális paramétereiről.

A kiértékelés során a GUI is befolyásolja a kapott pontokat. Minden további funkció megvalósítása plusz pontot ér. A megvalósított plusz funkciókat a forráskód elején megjegyzésben fel kell sorolni. 

Még több részletet találhatsz itt