Story of my life (rendszerterv) •
A program architektúrája
A program egy jól átlátható menürendszer segítségével fog kommunikálni a felhasználóval. A menürendszer felépítése pedig a következő: menuwrite() 1. Új játék (új játék kezdése) 2. Betöltés (Korábban elmentett állás betöltése) 3. Kilépés (A program bezárása) menu2write() 1. 2. 3. 4. 5.
Készen állok a vizsgára (Az éppen aktuális kötelező tárgy)* Inkább csak egy speci (A specik listáját tekinthetjük meg) Irány a kocsma (statok feltöltése) Mentés (Az aktuális állás elmentése) Kilépés a főmenübe (Az előző menübe navigál bennünket)
* A program struktúráját tekintve féléveknek felel meg. Ha elvégzünk egy kötelező tárgyat, akkor a következő tárgy vizsgája lesz csak elérhető. Ha már minden kötelező tárggyal végeztünk akkor változik a menü menu3write() Amint a játékos teljesítette mind a 4 vizsgát a menü megváltozik és ezentúl ez az új menü lesz elérhető 1. Mehet a Záróvizsga (A záróvizsga aktuális szintje) 2. Beiratom a jegyem (az eddig megszerzett jegy elfogadása és ezzel a játék vége) 3. Vissza a főmenübe (Az előző menübe navigál bennünket) specimenu() (Minden specinek lesz szintkövetelménye) 1. 2. 3. 4.
Analízis Szexuálpszichológia Közgazdaságtani alapismeretek Web-fejlesztés
speci2menu() A specik tippelgetős kérdésekből fognak állni. I.
1. választási lehetőség
II. III. IV.
2. választási lehetőség 3. választási lehetőség 4. választási lehetőség
harcmenu() A vizsgának írásbeli illetve szóbeli része lesz. Írásbeli: A kérdés ha szükséges akkor tartalmazni fogja a várt válasz formátumát amit szövegesen kell begépelni. Szóbeli: Első lépésként mindig megkérdezzük, hogy szeretné-e a felhasználó alkalmazni az automata harcot. I. II. III.
1. támadási lehetőség 2. támadási lehetőség 3. támadási lehetőség
A támadási lehetőségek minden vizsgán mások, ezt fájlban tároljuk. kocsmamenü() I. II. III.
Vásárlás Fogadás Tárgyak felhasználása*
*5 tárgy kerül be a játékba, amiket különböző helyeken szerezhetünk meg 1. kályhacsőszorító bilincs: Ezt a tárgyat a játék elején szerezhetjük meg 20 energiáért cserébe ami majd a dimat vizsgán fog segíteni minket, ha megvan. 2. puskaesélynövelő: Ezt a tárgyat a kocsmában tudjuk megszerezni, ha a fogadáson legalább 7 helyes válaszunk volt és 30%-al növeli a sikeres puskázás esélyét. 3. maxratöltő: specin megszerezhető jutalom, ami feltölti az energiánkat és türelmünket. 4. kasztváltó: specin megszerezhető jutalom amivel kasztváltásra van lehetőségünk ami után élvezhetjük egy másik kaszt szintlépésének előnyeit. 5. pontelosztó: specin megszerezhető jutalom amivel 10 pontot szabadon eloszthatunk a tulajdonságaink között. vásárlásmenü() 1. 1. termék 2. 2. termék 3. 3. termék . .
. 4. n. termék A termékek adatai(név, ár, hatás) fájlban lesznek tárolva. •
Be- és kimenetek
A játékban különböző megmérettetések várnak ránk. Ilyenek a specik, ahol a tárggyal kapcsolatos kérdéseket kell megválaszolnunk tippelgetős formában. Ehhez hasonló az írásbeli vizsga, ahol nem lesznek választási lehetőségeink, hanem a pontos választ kell begépelnünk. A szóbeli vizsgán pedig a tanárral kell harcolnunk, ahol a támadást a számokkal kell kiválasztanunk. A záróvizsgán pedig ennek a háromnak a kombinációjával találkozunk. A kocsmában egyedi ügyességi és gyorsasági feladat vár minket, ahol időre kell egyeszerű fejszámolásokat végezni. A program minden esetben ellenőrizni fogja, hogy a bemenet helyes-e típus szempontjából. Ha nem, akkor erre figyelmezteti a felhasználót és újabb válaszlehetőséget kínál fel. Ha a bemenet típusa helyes volt csak az értéke nem, akkor erre nincs lehetőség. •
Felhasználó szempontjából nem lényegesek
A kasztok, vizsgáztatók, kérdések, válaszok adatai szöveges fájlban lesznek amiknek a formátumára itt láthatunk példát. kasztok 60 (energia) 30 (türelem) 10 (IQ) 4 (szorgalom) 6 (gyorsaság) vizsgáztatók 50 (kreditjutalom) 100 (energia) 120 (türelem) 1 (IQ) 30 (szorgalom) 20 (gyorsaság) foo 10 10 (1.támadás neve alapsebzése és türelemigénye) foo2 10 10 (2.támadás neve alapsebzése és türelemigénye) foo3 10 10 (3.támadás neve alapsebzése és türelemigénye) asd (vizsgáztató neve) kérdések: (1 kérdés) 1 (kérdések száma) Hány éves a norvég király? 10
99 85 66 B (helyes válasz) •
Felhasználó szempontjából lényegesek
Menük (menuwrite(), menu2write(), specimenu(), speci2menu(), stb..) Itt a menüpontok meg vannak számozva és mindig a kért menüpont melletti számot kell beírnunk, majd egy entert nyomnunk. Írásbeli vizsga A kérdés egyértelműsíti majd a kért válasz formátumát, amit kézzel kell beírnunk szövegesen. Szóbeli vizsga A felajánlott 4 támadás közül kell egyet választanunk a megfelelő számmal, majd enter Kocsma fogadás Itt mindig számokat fog majd várni a program. Záróvizsga Számokat és szöveget vegyesen vár. A kérdés mindig utalni fog rá. Ugyanolyan formában, ahogy a specin, szóbeli- és írásbeli vizsgán. •
Osztályszerkezet
Player osztály Tartalmazza a játékosra vonatkozó tulajdonságokat, hogy melyik tárgyból milyen jegyet szerzett, kocsmázhat-e (ha veszített a fogadáson a következő sikeres vizsgáig vagy speciig nem kocsmázhat.), és hogy milyen tárgyakat szerzett meg. metódusok: (kivéve a get és set metódusok) SetPlayer(): beállítja a játékos kezdeti étékeit Kiir(): Kiírja a konzolra formázva a játékos számára lényeges adatokat levelUp(): Ha a játékos fejlődik, ez a metódus intézi el a szükséges dolgokat. xpLeftTolevelUp(): segítségével megkérdezhetjük, hogy mennyi xp van hátra a fejlődésig. Gameover(): Ha a játékos 3x megbukik a vizsgán és nincs elég pénze akkor vége a játéknak SaveGame(): az aktuális állás elmentése LoadGame(): az aktuális állás betöltése PontEloszt(): a pontelosztó tárgy aktiválásakor itt oszthatunk el 10 pontot Kasztvalt(): kasztváltó tárgy meghívásakor átírja a kasztot
kurzusok Absztrakt osztály amiből származik a kötelező és válaszható osztály. Puskazik()*: specin és ZH-n egyaránt használható puskázás ZHjavit(): Speci és ZH válaszait feldolgozó metódus *A puskázás esélyének képlete: bonusz+esely+gyorsaság*2-15, ahol a bonusz a puskaeselynovelo lehetseges 30%-a az esely pedig mindig valtozo. A függvénynek megadható, hogy hány kérdésre adja meg a választ, mennyi a lebukás esélye és hogy találunk-e ott valami használhatót. Lebukás esetén valamilyen büntetés jár. kötelező: Absztrakt osztály amiből származik 4 kötelező kurzus. metódusok: (kurzusok metódusai mellett) vizsgazik(): virtuális metódus amely a vizsgák menetét intézi zehazik(): virtuális metódus amely a ZH-k menetét intézi beolvas(): beolvassa egy kurzushoz tartozó adatokat ZHKerdesBetweenXY(): két szám között felteszi a kérdéseket AutoHarc(): Automatikus harcot intéző függvény Harc(): Manuális harcot intéző függvény enemytamad(): az ellenség támadását kiválasztó és végrehajtó függvény playertamad(): a player támadásait kiíró és végrehajtó függvény energiavesztes(): levonja a megadott energiát a playertől vagy az enemytől turelemvesztes():levonja a megadott türelmet a playertől vagy az enemytől választható: metódusok: (kurzusok metódusai mellett) specizik(): virtuális metódus amely a specik menetét intézi SpeciKerdesBetweenXY(): két szám között felteszi a specik kérdéseit progmód, linalg, dimat, c++, analízis, közgáz, webfejl, számalap A kurzus kérdéseit és a vizsgáztatók adatait tartalmazzák. A metódusaik megegyeznek az ősosztályaik metódusival de valójában a jutalom és vereség ezekben lesz definiálva. kocsma a kocsmában vásárolható termékeket tartalmazza és a fogadást is ezt végzi.Illetve a meglévő tárgyainkat használhatjuk itt fel. metódusok:
targymenu(): a tárgyainkat kiíró függvény vasarlasmenu(): a termékeinket kiíró függvény kocsmamenu(): a kocsma menüpontjainak kiírása. vásárlás(): a vásárolt tárgy hatásának végrehajtása. fogadas(): a fogadás funkció lerendezése. záróvizsga Az utolsó megmérettetés feladatai és adatai metódusok: feladat(): a záróvizsga feladatának meghívása az aktuális jegytől függően egyre több szóval bennevan(): egy szó keresése egy vektorban Menü Menükiírások és különböző szövegek kiírására létrehozott osztály, hogy ne legyenek a fontosabb osztályok függvényei átláthatatlanok emiatt. Az összes metódusnak a feladata kiírás. piros csillag a képen: sok metódus lenne az egyes kurzusokhoz hasonló néven mint a dimat, ami csak feleslegesen átláthatatlanná tenné a képet.
Az alábbi képen megtekinthető az osztályok pontos kapcsolata
• Állapot diagram Az alább látható képen folyamattal követhetjük a player állapotváltozásait egy átlagos játék folyamán.
• Szekvencia diagram Az alább látható szekvencia diagramon megtekinthetjük a játék elejét. Először ahogy a program a nevet és a kasztot kéri, a player válaszol, majd elmegy vizsgázni de megbukik, végül kocsmába megy és egy választható tárgyat teljesít. Mindezt addig csinálja amíg teljesíti a vizsgát vagy 3x megbukik.
Bármilyen felmerülő kérdés esetén fordul bizalommal a készítőhöz! (
[email protected])
Felhasználói dokumentáció Általános: A Story of my life egy konzol felületen játszható szerepjáték, amelynek célja, hogy a különböző tárgyakon átverekdve magunkat eljussunk a záróvizsgáig, melynek teljesítése az utolsó megmérettetés. Közben rengeteg választási lehetőségünk van, sok segítő tárgy áll a rendelkezésünkre, illetve sok helyen erősíthetjük is magunkat.
A játék irányítása: Mivel a játék egy konzolablakban fut, ezért a válaszaink után mindig egy ENTER-t kell nyomnunk, hogy továbblépjünk. Ha nem jó adatot írunk be akkor sincs baj, mert a program figyelmeztet a hibánkra és kiírja mit rontottunk el. Ez természetesen nem igaz a ZH alatt amikor nem figyelmeztet a rossz válaszra J A különböző menüpontok között a mellette található szám beírásával közlekedhetünk. Az eldöntendő kérdéseknél ’i’ illetve ’n’ karakterek beírásával válaszolhatunk.
A játék célja: A célunk, hogy elvégezzük az összes tárgyat. Egy tárgyat akkor végzünk el, ha levizsgázunk. Ez önmagában elég nehéz lenne, szinteket kell lépnünk, hogy felvehessük a versenyt a vizsgán. Szintlépéshez krediteket kell gyűjtenünk. Ezt kaphatunk specin, ZH-n, sőt még a kocsmában is. A szintlépéssel erősebbek leszünk és nagyobb az esélyünk, hogy teljesítsük a vizsgákat. A krediteken kívül speciális tárgyakat is kapunk, amivel erősebbé tehetjük magunkat. Ha kész vagyunk mind a 4 kötelező tárggyal, akkor mehetünk záróvizsgázni. A záróvizsgára való jelentkezéshez szükségünk van kellő számú türelemre. Ha ez nincs meg, szerezhetünk magunknak például a kocsmában. Ha ezt sem tudjuk megtenni, mert nincs pénzünk sem speciális tárgyunk, akkor a jegyünket beírathatjuk és ezzel a játék véget ér. A célunk minél jobb jegy elérése a záróvizsgán.
Mentés és betöltés: Lehetőségünk van mentésre és elmentett játékok betöltésére. Ne használjunk a mentésnél speciális karaktert, amellyel a windows nem tud fájlnevet létrehozni. Betöltésnél a program felsorolja a mentett fájljainkat és a név beírásával választhatjuk ki melyiket szeretnénk.
Kasztok: A játékos erejét különböző tényezők határozzák meg(energia, türelem, szorgalom, iq, gyorsaság). Energia: A játékos életereje Türelem: A támadásainkra költhetjük, illetve a záróvizsgára való jelentkezés feltétele.
Szorgalom: A támadásaink nagyságát erősíti IQ: Az ellenfél támadását gyengíti Gyorsaság: Befolyásolja, hogy ki kezdi a harcot és segíti a puskázást Mindegyik kasztnak különböző erősségei és gyengepontjai vannak amik a következők: 1. Zseni: Energia: alacsony Türelem: közepes szorgalom: alacsony IQ: magas Gyorsaság: alacsony pénz: közepes 2. Stréber: Energia: közepes Türelem: magas szorgalom: magas IQ: alacsony Gyorsaság: alacsony pénz: alacsony 3. Hiperaktív: Energia: magas Türelem: alacsony szorgalom: közepes IQ: közepes Gyorsaság: magas pénz: magas * a pénz a szintlépésnél kapott pénz mennyisége.
Specik: 4 féle specivel találkozunk(közgáz, cplusplus, linalg, számalap) A specik jelentősége létfontosságú. A játék elméletileg teljesíthető nélkülük, de gyakorlatilag nagyon nehéz dolgunk lenne nélküle. A jutalom rengeteg kredit és mindenféle segítő tárgy + pénz. Minden specin tippelgetős kérdésekre kell válaszolnunk 4 lehetőség közül. Ha végigértünk a teszten (kb 10 kérdés) akkor a végén megnézhetjük, hogy hány jó válaszunk volt. Minden specinek van szintkövetelménye, hogy jelentkezhessünk rá. Ha ezzel nem rendelkezünk érdemes próbálkozni a kocsmában vagy ZH-n kreditet szerezni.
ZH:
Minden kötelező tárgy 2 részből áll. Ebből az egyik a ZH. A játék teljesítéséhez ez sem minden esetben kötelező, de gyakorlatilag mindegyiket nem tudjuk elkerülni, mert nagyon gyengék lennénk a harcokhoz. Minden ZH-n kérdésekre kell felelnünk SZIGORÚAN 1 SZÓVAL és mindent kisbetűvel. Jutalom: kredit, tárgyak
Vizsga: A kötelező tárgyak másik része. A játék teljesítéséhez elkerülhetetlenek. A vizsgák határozzák meg, hogy mennyi van hátra a játékból. A vizsgán harcolnunk kell a vizsgáztatóval. A gyorsaság eldönti, hogy ki kezdi a harcot. A harcnak akkor van vége amikor valakinek az energiája 0-ra csökken. Minden körben lehetőségünk van választani egyet a 3 támadás közül. Választásunkban segít, hogy minden támadás mellett láthatjuk mennyit sebez és mennyi türelembe kerül. A sebzés képlete a következő: Alapsebzés+szorgalom-ellenfél IQ Ha a harcot megnyered akkor teljesítetted a tárgyat, és a körök számától függő kreditet kapsz. Ha veszítesz akkor megbuksz. Ha 3-szor megbuksz, akkor kirúgnak. Ebben az esetben visszavásárolhatod magad, ha van elég pénzed. Ha nincsen, akkor sajnos vége a játéknak.
Puskázás: Egy speciális lehetőség a speciken és ZH-kon. Néha a játékos kap valamilyen szöveget, amely után eldöntheti, hogy puskázik-e vagy sem. Ebben a döntésben segít a szöveg utáni szám a zárójelben, amely a puskázás sikerének esélyét mutatja. Sikeres puskázás esetén előfodulhat, hogy nem találunk semmi hasznosat, ekkor kapunk egy kis vigaszdíjat. Ha sikerül és találunk is valamit, akkor megtudjuk a pontos választ a következő 1-2 kérdésre. Abban az esetben ha lebukunk, akkor a tesztről automatikus kizárást kapunk és valamilyen büntetést is.
Kocsma: A kocsmában 3 dolgot tudunk csinálni: 1. Vásárlás: Mindenféle tárgyak vásárlására van lehetőség, amellyel nyerhetünk egy kis energiát és türelmet pénz ellenében. 2. Fogadás: a fogadás egy lehetőség egy kis plusz jutalom bezsebelésére. 10 fejszámolást kell elvégeznünk mindegyiket 20 másodpercen belül. Ha 5-öt helyesen megfejtünk akkor sikerrel jártunk, életünk és türelmünk maximumra töltődik, ezenkívül kreditet is kapunk helyes válaszaink függvényében. Ha leglaább 7-et fejtünk meg jól akkor egy különleges egyedi tárgyat is kapunk amit csak itt tudunk megszerezni.
Ha elbukjuk a fogadást, akkor a következő sikeres vizsgáig nem tudunk még egyszer fogadni. 3. Tárgyak felhasználása: A játékban5 tárgy fordul elő, ezekből 3-at itt tudunk felhasználni. • • • • •
Kályhacsőszorító bilincs: Ez egyedi tárgy amit a játék elején tudunk megszerezni és a dimat vizsgán felhasználni. Puskaesélynövelő: 30%-al növeli az esélyünket a sikeres puskázásra, amit minden puskázás előtt tudunk felhasználni. Pontelosztó: 10 pontot szabadon oszthatunk el a tulajdonságaink között. Kasztváltó: Választhatunk egy másik kasztot és élvezhetjük ezentúl annak a kasztnak a szintlépéses előnyeit. Maxratöltő: energiánkat és türelmünket maximumra tölti.
Záróvizsga: A játék végső megmérettetése. Akkor mehetünk záróvizsgázni, ha végeztünk az összes vizsgával. A jelentkezés feltétele, hogy rendelkezzünk 50 türelemmel. A feladatunk, hogy egyre több szót memorizáljunk. Majd a szavakat vissza kell mondani,nem feltétlenül sorrendben. Ha sikerül a szavak ¾ ét visszamondani, akkor egy jeggyel jobbat kapunk. Amennyiben nem, akkor próbálkozhatunk újra amikor megint szerzünk legalább 50 türelmet. A jegyünket bármikor beirathatjuk, ekkor a játéknak vége van és az 5 különböző végződés közül olvashatjuk az egyiket.