BPROF:2dm

A Miau Wiki wikiből
A lap korábbi változatát látod, amilyen Jkv1 (vitalap | szerkesztései) 2022. november 23., 20:06-kor történt szerkesztése után volt. (logikai rendszerterv)

Ez a szócikk a "Rendszertervezés" tantárgy keretében keletkező dokumentum, mely része a szakdolgozat mellékleteinek.

Fogalmak

(potenciális változók a kódhoz)
  • puzzle: X-szer Y-os háló, melyben a sorfejléc (X) és oszlopfejléc (Y) attribútumok alapján kell elhelyezni az odaillő válaszkártyát
  • X(i): sorfejléc, mely megadja a válaszkártya1. attribútumát
  • Y(j): soszlopfejléc, mely megadja a válaszkártya2. attribútumát
  • válaszkártya(k): képkocka, melyet el kell helyezni a megfelelő kockájába a hálónak
  • megoldástér(i,j,k):
  • keretrendszer: puzzle megjelenítő szoftver
  • log: minden tevékenység (pl. egérmozgás, billentyű-leütés, billentyű-kombináció) feljegyzése egy fájlban, dátummal felcímkézve (vö. https://miau.my-x.hu/mediawiki/index.php/Excel-makro#Tanfolyami_vez.C3.A9r-feladatok)
  • kiértékelés: válaszkártyák helyének helyességének ellenőrzése

Megrendelői kezdeményezés

Létezik egy 2DM-játék (https://miau.my-x.hu/miau/254/2dm_kemia_demo/), amelyben a feladat egy 3x3-as* hálóban különféle képeket elhelyezni az oszlop- és sor-fejlécek alapján. A létező 2DM-játék log-ja a vágólapra keletkezik a JavaScript lehetőségei mentén. Az új rendszerben a sebezhetőségek minimalizálása, csalás minden mennyiségű kizárása a cél.

Feladat:

  • Új játék tervezését és
  • futtatását támogató keretrendszer kialakítása úgy, hogy
  • a keretrendszer által olyan output kialakítása, mely a jelenlegi 2DM-megoldás által azonnal futtatható

Nem feladat:

  • online kollaboratív munka támogatása
  • adatbázis-alapú megoldás kialakítása

Jelenlegi 2DM játék

Struktúrája: A jelenleg már elkészült 2DM játék adatbeolvasását,adatstruktúráját ki kell nyomozni annak érdekében, hogy a dolgozatban készülő játék kompatibilis lehessen vele.

Nyomozás lépései:

  1. https://www.cyotek.com/downloads/info/setup-cyowcopy-1.9.0.822-x86.exe alkalmazás segytségével letöltöttem a https://miau.my-x.hu/miau/271/2dm/ weboldal összes fájlját (https://github.com/kje-pitlik/2dm-source).
  2. letöltött adatok: img/,00m.png,03-00.png,03-30.png,03-49.png,03h.png,12-00.png,12-30.png,12-49.png,12h.png,18-00.png,18-30.png,18-49.png,18h.png,30m.png,49m.png,AD_CLOCK.jpg,auth.png,auth_alairas.png,auth_arc.png,auth_dns.png,auth_gepeles.png,auth_hang.png,auth_irisz.png,auth_kez.png,auth_retina.png,auth_ujj.png,BLANK_BLANK.png,BLANK_C1.png,BLANK_C2.png,BLANK_C3.png,BLANK_R1.png,BLANK_R1_BLANK_C1.png,BLANK_R1_BLANK_C2.png,BLANK_R1_BLANK_C3.png,BLANK_R2.png,BLANK_R2_BLANK_C1.png,BLANK_R2_BLANK_C2.png,BLANK_R2_BLANK_C3.png,BLANK_R3.png,BLANK_R3_BLANK_C1.png,BLANK_R3_BLANK_C2.png,BLANK_R3_BLANK_C3.png,BRW.png,circle.png,COIN_1E.png,COIN_20C.png,COIN_2C.png,COLOR_DOT.jpg,COLOR_FLAG.jpg,COLOR_SHAPE.jpg,COLOR_TETRIS.jpg,DIR_B.png,DIR_BC.png,DIR_BL.png,DIR_BR.png,DIR_C.png,DIR_L.png,DIR_M.png,DIR_MC.png,DIR_ML.png,DIR_MR.png,DIR_R.png,DIR_T.png,DIR_TC.png,DIR_TL.png,DIR_TR.png,dot_1.png,dot_2.png,dot_3.png,EUR_COIN.jpg,favicon.ico,flag1.png,flag1_BRW.png,flag1_GRW.png,flag1_GRY.png,flag2.png,flag2_BRW.png,flag2_GRW.png,flag2_GRY.png,flag3.png,flag3_BRW.png,flag3_GRW.png,flag3_GRY.png,FLAG_IRL.png,FLAG_SMR.png,FLAG_SVK.png,FRENCH_CARD.jpg,GRW.png,GRY.png,hearts.png,hearts_jack.png,hearts_king.png,hearts_queen.png,hexagon.png,IRL_1E.png,IRL_20C.png,IRL_2C.png,jack.png,king.png,LArrow.png,logo.jpg,pikes.png,pikes_jack.png,pikes_king.png,pikes_queen.png,queen.png,RArrow.png,SMILEY_DIR.jpg,SMR_1E.png,SMR_20C.png,SMR_2C.png,SVK_1E.png,SVK_20C.png,SVK_2C.png,tetris_1.png,tetris_11.png,tetris_12.png,tetris_13.png,tetris_2.png,tetris_21.png,tetris_22.png,tetris_23.png,tetris_3.png,tetris_31.png,tetris_32.png,tetris_33.png,tiles.png,tiles_jack.png,tiles_king.png,tiles_queen.png,triangle.png,TTT_E1.png,TTT_E2.png,TTT_E3.png,TTT_M1.png,TTT_M2.png,TTT_M3.png, - card-design.css, - carousel.js, - gameProperties.js, - gameScreenEvents.js, - index.htm, - index.js, - style.css, - util.js
  3. ebből egyetlen egy 2DM-játékhoz tartozó objektumok (vö. *BLANK*): ???
  4. egy játékra egyszerűsített manuálisan lebutított saját lokális verzió tesztelése
  5. régi 2DM-játék által igényelt specifikációk véglegesítése
  6. egy régi 2DM-játék (értékes tartalommal történő) manuális előállítása a specifikációk alapján az új játék fejlesztője által
  7. manuálisan készített saját játék tesztelése
  8. ezen manuális saját játék új keretrendszerben való reprodukálása és az output tesztelése

Rendszer megrendelővel egyeztetett követelményei

  • optimális (tesztelt):
    • windows 11
    • Intel Core i5 11th gen
    • 16GB ram
  • választott technológiák:
    • Programnyelv: C#
    • Adattárolás: JSON

Egyéb funkciók

  • UI személyre szabása előre elkészített, akár a felhasználók által személyre szabott téma segítségével - (színvilág/színharmónia nem ellenőrzött, a téma tervezőjének kell figyelnie arra, hogy a felhasznált színek nem olvadnak egybe egymással)
  • nyelvek támogatása, akár a felhasználók által definiált szótár segítségével - (szótár helyessége nem ellenőrzött, nincs kizárva akár a halandzsa nyelv használata sem)

Folyamatábrák

  • Kvíz tervezésének folyamatábrája:........
  • Kvíz megírásának folyamatábrája:........
  • Kvíz kiértékelésének folyamatábrája:........

IT biztonsági kérdések

kulcsok tárolása a forráskódban? https://itnext.io/how-to-store-passwords-and-api-keys-in-project-code-1eaf5cb235c9

Szoftverben használt csomagok és azok licenszeik

Log rendszer

app minimalizálása, bezárása

Rendszer specifikáció

Ajánlott irodalom/demo/minta: http://centroszet.hu/tananyag/ - pl. http://centroszet.hu/tananyag/szervezes2/615_rszletes_rendszerterv.html 

logikai rendszerterv

<iframe frameborder="0" style="width:100%;height:607px;" src="https://viewer.diagrams.net/?tags=%7B%7D&highlight=0000ff&edit=_blank&layers=1&nav=1&title=flowchart.drawio#R7V1bd9q4Fv41rHXOQ1i%2BXx4hJHM603TONG0zPW8GC3AwFrUNCfz6kbAEtiSMHXwBDn1IbWELe9%2F3t7dER72fv%2F8WOovpE3SB31Ek972jDjqKYusK%2BosH1smAbCtWMjIJPZeM7QeevQ0ggwYZXXouiDIXxhD6sbfIDo5gEIBRnBlzwhC%2BZS8bQz%2F7rQtnAriB55Hj86MvnhtPk1FLMffj%2FwHeZEq%2FWTbs5JOhM5pNQrgMyPcFMADJJ3OHTiMlA9HUceFbakh96Kj3IYRxcjR%2Fvwc%2BJiul2Mun9Yv%2FeWb89vtf0S%2Fne%2F%2BPb19%2B3CWTPZa5ZfdyIQjiD08dP%2F4Rrx6teDEbT36B3mi%2Btl%2FutGTqleMvCSXJu8ZrSlpMnUVH7W%2BJBPBkEjobe75%2FD30Ybi9Sx9YIjEZoPIpDOAOpT4aWrun4joIvQV52BcIYvItkxxnSJ9szAck1gHMQh2t0HblL1QjfiEzfyQYZeNtLiEyZO01JB73OIUI52c29Jy86IBQuQW3pOLWzVH6bejF4Xjgj%2FOkbUl00No3n6EsHMs%2BEnjXoDe5FTNB0s28P8B0wiOm4C8bO0o%2BFrMkVFpY1PAtao7DMUfixc693bHkOgiU2cOSdkeKDzr3a6cloTvz%2FIE5OIzibOT7HFvTCcZb2WRpvzUaWIWTI8b1JgE5HiLYAjfcx%2BTxkuXrkg7nnuvhrhMxmlK4Z7lEFyuqPrHPaYwhYq9bG2iu2VbaRNVUqT%2Btm9Ui%2FbEslX4CpMjgS9w%2BapGu0RyV4dKYGiefg1Rgk3WJorWgtWyT7wi2ScYA1Z2SRZD4%2BjUG0wdHSIoQjEEVXaYeKc6Z9O%2FQ9%2Bl%2F0Yitf3jx%2F%2BuxPgv7X5ztF5dgCXJQdk1MYxlM4gYHjP%2BxHGQLur%2FkM4YJw8hXE8Zqk%2Bs4yhlk%2BI6KG67%2Fx%2FV2dnv4k021PBu%2BZszU5850h8Pu7rDulaI%2FyY%2B%2FhQaSCkioZklWC0XnGMYLLcARyBILwKXbCCYjz6E4uxMTOFZsQ%2BE7srbJQxSli8El%2F771M797Dvh0M4KA%2F%2BaT%2FpPF9w1Lw7sV%2FUz6j4597gUBnexHAJ1QCWmNiTqBbHQ%2FJrf%2BFXhDvTYZiKxmbcSez5iB5I3IbIwq75%2Fi4dBjt2oiMhdgbjAM2onx8FCFGxz0MJKacTsVyFjzMX6H9VXdn2l8%2FF9bLeCX379SCcla5rRDLmUqj6oNyljwpJ2eIds46ddkCXxDlfJGSdYJ3up6e7vj19MH2cp48QqVSb3IBzRjMQAzQWLBOkiw8x8oDb9hbeyB0wtHUcy48zimVGxzOAVRGlhRTaSzSEbLTEuQAxpYGmDLoeIKPF14II4bDzgb%2FcR0skUlWHTpzn%2BTXdBL0TOl5bkKAPtHMcxMCuRVXVrUzEb9au96krA%2FQLM6mm7lO4NgN9TgBhS8KbMOFAvpdXG9DEHkbgq5gESO0Q%2FPq%2FY6O4QMsU1EiXmVMR7PqrhqsulM9Tqm7ZgnUXalJ3Wkh%2BjKy20bMhNKamTiNk6rAfbOs9X1vER1yhEftsUB%2FatMUjdMUk9MUS6ApmnE6fYWpCI%2FefQHzWxCDPjFpf8uuvsbHMCKjRkHvylmliCLZ5q3c4XxazJ%2Bq8%2FmP20UhVWnjUcosiqmvtmUX8x47JQszb0UqgU60iWEck%2BRlnIy%2B4in%2F1X2NYPDvm35j3eVscXOQvFjCzkK9PwK112QBQOCy6NwBm0ARZYouF0GUP25HcoH9o4ZErtqOiNMm3WDSJoPxSwcwPT7%2FYibSasOg87DSlFZ82xo0e%2B50lPtgDfzVVkeGHcVw5tioBMNocUNiSDAiMU1CJp%2BZNWrkCvRjXVWNQWDDmqhk6QWNUeVBzYFKlsyIoda1TVlTLD35q1Lfe8So8BMbzMRFSxdVmacS7Ty1aH75Jh2ZSWtEHc6GKAVlWFQdNlsgxS%2FXpVOQ0LkMLdVy0yy9eBva8wGGJqUf25rURfu9E5lCg5aMjJvdlkN7QZPUmZsJS2JLtWqXxz9og0KaiLbUrQsBKdLON4Xz4TKq2Ujs%2BFnKSjRMLR4umnk4Jli6r8sZOnh1VqRl2Am8jvp4jYajBKNoRKF1NdXUM8Kval1ZkXXDMhQThXW2xSmCpqIrdJ69itJN3yfVxWu53Xa%2B3UmxMJoLl23DVB2DD7CB7OrArCFozjMv6aA5N2BpuZJqsQBW1YVRsaTx0cetYkDCDJmtVJtGy3EHn558hhNv5ng3hmFesLlQk30qYobxzWe8YecgBdeJplsSylkOZmlbb4f0UWOYIqkuICkdOxFpkBmWGgpy59lJimILskzTOjpXMQS1MkvLB3BIeeG%2BAU2agY27bUy86TLilq50JSkFKmV413ZxR7bbCNByAq2jrRDp8Kv%2BQEtcEWuoAdo2WRTR6pp26p%2FOYDk1a77I6DfavmSW6l8qWw9MSowwdEF4VATrKvuLynV5SwhbjvVlWWKDffuI82JusKTc6w1Tyrm8nlRCKYCK1QL8VuNxbLbCqprdtNGw%2BeC%2FtqWZYvryTSI9piFk7L2TphESVdxWMWxZazOsVQQ1kkZ7QwrsrXBeALLO7qSj8yS0BCS0aiNhAfS4LAnzeXUyDQVS1yzJilTmGgHcd8wrBbg3SyweGOuD7XmA4wxsX%2FuGH6%2FwGJjgJ90b4usE30swjX6atRmKnXWoAo%2FaqBWmE188yt5m8idaiNAQzH4a8%2Flo6gZ8UyVk82ep5XiJ9upfTrxkUOh51yLFVxmb9WcFWpuacf47Zp6x8%2Bdx%2Bz7Y%2BfwpPsQbCuKv%2Fj9w%2FCUYdsDxt4zWqq2U08%2FcYdeNwnIWUGbYWzPqSvdPvIxW5HMVFoOP7vJqAOcS3PHO7tMEBBdunCuK7thdWFBaphayz7LaVetiGO9wbwyjjUHsvlE0dTnCrvq0q8DK1fxoPEvOEwlXOjY3VSa%2FUWx%2B2Xaz2L5a89aWH9peNJ%2F557GJpXhVEp%2FbT0Jn7M2W2z2BkgVnG1Bk94%2FrNy8mu%2BZGVVvG5TQ%2B298XtgTroG9MRAkXu1mv3FWk9L9iLr4%2BnvIO%2Ftufgz87ag8NPnkdAqzf4%2BfBOTVJtodDdPyasDrZCtuewbiTAuA72238FYzBRxsQhvh4t9NXSkiS7b2i5XC3tRdO1nebfqU%2FuAmUqGRK4f80JqM0KUEnRx1NxxkGUzNVJB4DbNgxFgEBG1ubp51XKCHesIinmA8nnTTop0hwGS%2BWlx5NnMqi1jfGFr6AbnJsaWzXjUxLHAq1H3pG3zDOF%2ByhLR1HwR5qRtpeMcOsC1VIblJrl5veyl50Vy5QynkKlJaRJ%2B5yk1mcoDUhfkWaLKsu41WUaDI9qaKqsiwJlt7vBqv3DjJHvDNU5iP919W3WOd1Th%2FVZSqhZ1IKoNv%2BpRTmx7aFa56kkxMm2Rzu67wgcHd13iuq8VakzXbWVsoUtWnrJ1B4zI83jE0jqBXt%2BqRnEbpG80ghrXkwJwQLuN2zZHX5e5ZUxDWL4ZrSHAQnZBrf0Ep%2F2QmEwCXmMFgT6Oy2pjjhhqW1xkXx3jkFmrjPCwbTWEVoHQYzKvcVJ%2B2GpB6g9BlV1Aw%2BiiIwGPBd6E%2FgZreM%2BaKNxqkMOk8QjK50v6U5xzGLmrAtvj1Oyu5GQMGrxnY6bKU9rqxM1Parf7l%2B4ejP%2FlW%2B6W9R9fY2%2Bvdfy%2BjpSRtsvv%2F%2BdbL8IdlFflI%2BiQgadvwqu8hZEwA%2BjeYt1S9Rru0XZHM5fcaRQoEdb8qGp6VIUX5rRF4mqdw2I5N8MPqN5GXpGmMKl0oytejSN4rJFZ%2FiaXY2uRCEWhQBPDHUQqchhHHaC6O3nz5BF%2BAr%2FgE%3D"></iframe>

Fizikai rendszerterv

Program specifikáció

UI tervek

Adattárolás

Ez a saját téma/nyelvi csomag létrehozásának segítségül is szolgáló leírás.

  • A keretrendszer az adatokat .json fájlokban tárolja. Ezek
    • a beállítási adatok (kiválasztott téma illetve nyelv),

defaultConfig.json

{
 "data": [
   {
     "theme": "dark.json",
     "language": "hu.json"
   }
 ]
}

nyelv fájl

{
   "windowTitle": "Teszt kitöltése...",
   "loadTestFileBtn":"Teszt fájl betöltése",
   "startTestBtn":"Teszt indítása",
   "settingsBtn":"Beállítások",
   "nextBtn": "Következő",
   "previousBtn": "Előző",
   "saveBtn":"Mentés"
}

tesztadatok

(kérdés, válasz lehetőségek)

{
"puzzles": [
   {
     "question": "Ide írjuk a kérdést",
     "correctGridOrder": {
       "1": "C:/Users/x/Y/kep1.png",
       "2": "C:/Users/x/Y/kep2.png",
       "3": "C:/Users/x/Y/kep3.png",
       "4": "C:/Users/x/Y/kep4.png",
       "5": "C:/Users/x/Y/kep5.png",
       "6": "C:/Users/x/Y/kep6.png",
       "7": "C:/Users/x/Y/kep7.png",
       "8": "C:/Users/x/Y/kep8.png",
       "9": "C:/Users/x/Y/kep9.png"
     }
   },…
]
}

téma fájl

{
 "data": [
   {
     "backgroundColor": [ 120, 0, 100, 0 ],
     "buttonColor": [ 150, 0, 255, 0 ]
   }
 ]
}
  • Indoklás:
    • A JSON fájlok egyszerű olvashatósága, értelmezhetősége miatt bárki létre tud hozni saját témát, nyelv sémát.
    • Alternatív megoldások elvetésének indoklása: Egyszerű txt fájlok is megfelelőek a feladatra, ám a JSON fájltípus által biztosított kulcs-érték adatszerkezet nagy segítséget nyújt a fájl manuális átláthatóságához, illetve a programmal való feldolgozhatósághoz.

Tesztelés

Fejlesztői saját 2DM-játékok

A fejlesztés során az alábbi tartalmi kihívások

1. játék

  • X=3
    • X1=...
    • X2=...
    • X3=...
  • Y=3
    • Y1=...
    • Y2=...
    • Y3=...
  • válaszkártyák (9=3*3)
  1. ...
  2. ...
  3. ...
  4. ...
  5. ...
  6. ...
  7. ...
  8. ...
  9. ...

i. játék

  • X>3
  • Y>3
  • X<>Y


Kvíz katalógus

A katalógus menű a GTS-catalog https://github.com/orgs/GTS-catalog/repositories repository-kat fetcheli, és jeleníti meg a listanézetben. A repository-kból csak a ".json" fájlokat jeleníti meg.




Saját kvíz publikálása

https://miau.my-x.hu/mediawiki/index.php/BPROF:2dm_q1