BPROF:2dm
Ez a szócikk a "Rendszertervezés" tantárgy keretében keletkező dokumentum, mely része a szakdolgozat mellékleteinek. Tartalmazza a felhasznált technológia részletes leírását, informatikai felépítését. A dokumentum a reprodukálhatóság elősegítéséhez készült
Tartalomjegyzék
- 1 Szakdolgozat alrendszerei
- 2 Fogalmak
- 3 Megrendelői kezdeményezés
- 4 Rendszerspecifikáció
- 5 Program specifikáció
- 6 Tesztelés
- 7 Üzleti hasznosítás
Szakdolgozat alrendszerei
- GTS (Graphical Test Software), ez a tesztek lejátszására kifejlesztett szoftver
- GTDS (Graphical Test Designer Software), ez a tesztek tervezésére kifejlesztett szoftver
- Theme4GTS ,ez a témák létrehozására fejlesztett szoftver
- Language4GTS ,ez a nyelvek létrehozására fejlesztett szoftver
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
- ...
- teszt:
- hiba:
- játék:
- ...
- rendszer
- réteg
- modul
- alrendszer
- szoftver...
- licensz
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 támogassa a puzzle megtervezését,
- az adat-megjelenítést/adatbevitelt,
- a puzzle megírását és
- a log-elemzést (vö. https://miau.my-x.hu/mediawiki/index.php/Excel-makro - Tanfolyami vezérfeladat).
- 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:
- 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).
- 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
- ebből egyetlen egy 2DM-játékhoz tartozó objektumok (vö. *BLANK*): ???
- egy játékra egyszerűsített manuálisan lebutított saját lokális verzió tesztelése
- régi 2DM-játék által igényelt specifikációk véglegesítése
- 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
- manuálisan készített saját játék tesztelése
- 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# (verzio: C# 10.0,net6.0)
- lokális adattárolás: JSON
- publikus adattárolás: Firebase NoSQL adatbázis
Egyéb követelmények
Internet elérése szükséges a Kvíz Katalógus használatához, hiszen csatlakoznia kell a Firebase adatbázishoz
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
- Puzzle tervezésének folyamatábrája:........
- Puzzle megírásának folyamatábrája:........
- Puzzle kiértékelésének folyamatábrája:........
https://miau.my-x.hu/miau/292/2dm_figures/ folyamatabrak lesznek
IT biztonsági kérdések
- olyan programozási nyelv kell, ami............................
- kulcsok tárolása a forráskódban? https://itnext.io/how-to-store-passwords-and-api-keys-in-project-code-1eaf5cb235c9
- tanács: nem az .exe -be fordítjuk bele a kulcsot, hanem valamilyen keychain szolgáltatásból nyeri ki
- https://learn.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-7.0&tabs=windows
- Hálózaton keresztül történő adatátvitel feltörhetősége
- Logika nem a kliens,hanem a szerver oldalon kell, hogy tárolva legyen
- Adatbázishoz való hozzáférés kiosztása
- JSON alapú adattárolás megfelelősége
Programnyelv
interpretált vs fordított
- Interpretált programnyelv:
Az interpretált sorról sorra olvassák be a programit, és futtatnak le minden parancsot
Ezek a programnyelvek szignifikánsabban lassabbak, mint a fordított programnyelvek.
pl.: Python, Ruby
- fordított programnyelv:
Közvetlenül a CPU-ba vannak írva, és ezért gyorsabban lehet futtatni öket, mint az interpretált nyelveken íródott programokat.
Hátránya, hogy a fejlesztéskor minden változtatás futtatásakor rebuildelni kell a teljes programot.
pl.: C++, Rust
-> Mindenképpen fordított programnyelvvel szeretném megírni a szakdolgozatot, meg kell találni a legmegfelelőbb nyelvet erre.
Tesztelt prorgamnyelvek
C#
- C# visszafejtése JetBrains dotPeek szoftver segítségével: https://miau.my-x.hu/mediawiki/index.php/BPROF:Csharp_Visszafejt%C3%A9se
- C# helyett mi? https://sinister.ly/Thread-Which-programming-language-is-hard-to-reverse-engineering
- konklúzió: WPF idejét múlt, C# feltörhető, nem használom erre a feladatra
Ruby
Mivel nem fordított nyelv, ezért a kódot nem lehet "elrejteni". A program egy *.rb fájl lenne, és ezt kellene futtatni egy interpreter segítségével.
Ruby kód példa GUI alkalmazásra:
require 'tk' require 'socket' require 'rubygems' window = TkRoot.new do title "Main Window" minsize(400, 300) end notebook = Tk::Tile::Notebook.new(window) do width 400 height 300 end tab1 = Tk::Tile::Frame.new(notebook) notebook.add tab1, :text => "Tab 1" button1 = TkButton.new(tab1) do text "Go to Tab 2" command { tab2 = Tk::Tile::Frame.new(notebook) notebook.add tab2, :text => "Tab 2" notebook.select(tab2) } end button1.pack notebook.pack Tk.mainloop exit if Object.const_defined?(:Ocra)
Ruby futtatása:
<kép>
Rust
Fordított programnyelv, tehát IT biztonsági szempontból megfelelő..
use druid::widget::{Button, Flex, Label}; use druid::{AppLauncher, LocalizedString, PlatformError, Widget, WidgetExt, WindowDesc, Data}; #[derive(Clone, Data)] struct Counter(i32); fn main() -> Result<(), PlatformError> { let elso = "sss"; let masodik = 120; let harmadik = false; let main_window = WindowDesc::new(ui_builder) .title("Hello, Druid!") .window_size((200.0, 100.0)); let data: Counter = Counter(0); AppLauncher::with_window(main_window) .use_simple_logger() .launch(data) } fn ui_builder() -> impl Widget<Counter> { let text = LocalizedString::new("hello-counter") .with_arg("count", |data: &Counter, _env| (*data).0.into()); let label = Label::new(text).padding(5.0).center(); let button_plus = Button::new("+1") .on_click(|_ctx, data: &mut Counter, _env| (*data).0 += 1) .padding(5.0); let button_minus = Button::new("-1") .on_click(|_ctx, data: &mut Counter, _env| (*data).0 -= 1) .padding(5.0); let flex = Flex::row() .with_child(button_plus) .with_spacer(1.0) .with_child(button_minus); Flex::column() .with_child(label) .with_child(flex) }
cargo run --bin valami
létrehoz egy valami.exe fájlt. ..........................
......
........
Logika tárolása
C# nem a legbiztonságosabb, ezért más megoldást kell keresni. Van olyan lehetőség is, hogy a keretrendszer logikáját nem maga a kliens,hanem a szerver kezeli.
licenszelés
A szoftver licensszel való védése már egy erős IT biztonsági lépés.
ki kaphat licenszt?
Ingyen kellene adni, mert nem tartom reálisnak, hogy a tanárok/iskolák erre költenének. -> önkormányzatoknak kellene ezeket managelni?
Licensz tárolása adatbázisban (Firebase)
_______________________________ | licensz tulaj | licensz kód | ############################### | ............. | ........... | ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Amelyik kód bent van az adatbázisban a megfelelő rekordokkal, az hozzáférhet a programhoz
licensz generálása
Szerveren° futtatandó scriptnek kellene kérésre generálnia licensz kulcsokat, és azokat eltárolni a Firebase-s adatbázisban
° milyen szerveren?
licensz archiválása
licensz árazása
Szoftverben használt csomagok és azok licenszeik
majd a végén, amikor kész lesz a szoftver
- NewtonSoft.Json 1.0.2 (https://www.newtonsoft.com/json) - https://github.com/JamesNK/Newtonsoft.Json/blob/master/LICENSE.md
- Profanity.Detector 0.1.8 (https://github.com/stephenhaunts/ProfanityDetector) - https://github.com/stephenhaunts/ProfanityDetector/blob/main/LICENSE
- FireSharp 2.0.4
- Octokit 4.0.1
Log rendszer
A rendszer minden felhasználói tevékenységet feljegyez mind fejlesztési, mind a csalás elkerülése érdekében.
Jelenleg logolható:
- app minimalizálása, bezárása, puzzle elindítása
Tervezett funkciók:
- internet használat elemzés (van-e esetleg olyan kulcsszavú keresés, mint amilyen szavak/kifejezések vannak az éppen aktív puzzle fájljaiban?)
- egérmozgás elemzés (mennyire határozott a teszt író -> túl nagy határozottság akár azt is jelentheti, hogy valahonnan megszerezte a megoldásokat a teszthez ?)
- ismert közösségi,csevegésre használt alkalmazások meg vannak-e nyitva (Messenger,Discord,facebook.com,Skype,Teams stb), ezek csalásra adhatnak lehetőséget
- külső meghajtók vannak-e csatolva
- adat mozgatás történt-e a számítógépen a teszt írása közben (x lokációról y lokációra való fájl mozgás)
- operációs rendszerre telepített képfelismerési program detektálása
- távolról van-e vezérelve a gép
- képernyőkép készítésének logolása
- automatikus egér mozgató (ha van ilyen, https://2b2t.miraheze.org/wiki/Baritone) auto clicker detektálása
- ...
Rendszerspecifikáció
Ajánlott irodalom/demo/minta: http://centroszet.hu/tananyag/ - pl. http://centroszet.hu/tananyag/szervezes2/615_rszletes_rendszerterv.html
Logikai rendszerterv
Fizikai rendszerterv
Program specifikáció
A követekző alfejezetben fogom összegyűjteni a program különféle specifikációját
User interface
Választott UI technológia
- WPF, xaml
- továbbá kiegészítés C# segítségével
Alternatívák
- WinUI
- Avalonia (https://avaloniaui.net/)
- WinForm
- MAUI (https://devblogs.microsoft.com/dotnet/introducing-net-multi-platform-app-ui/)
- UWP
- Uno (https://platform.uno/)
- Blazor (https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor)
Adattárolás
Eredeti, elvetettt ötlet
Githubon organizációban tárolt adatok. Ez se informatikailag, se IT biztonságilag nem volt megfelelő ötlet, ám nem kellett adatbázist fenntartani hozzá.
Lokális adattárolás választott formája
- 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 adatbázis szerű átláthatósághoz, illetve a programmal való feldolgozhatósághoz.
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),
Unrestricted adattárolás választott formája
Firebase adatbázis
Adatbázis jogosultságai
Csak megfelelő ID-val lehet elérni az adatbázist, melyet az alkalmazás tárol. Ezt megfelelően kell tárolni, hogy ne lehessen kinyerni a forráskódból, Az ID csak az áruház adatait tároló adatrészhez kap olvasási jogosultságot. .......
Egyéb ötletek
Egyszeri jelszóval (OneTimePassword) azonosítsuk a klienst. Ehhez generáltatni kell egy jelszót, melyet el kell tárolni az adatbázisban is valami módon.
Konfiguráció
A rendszer konfigurálható paramétereit json fájlokban tároljuk, melyek a rendszer különböző életciklusaiban kerülnek betöltésre.
defaultConfig.json
Rendszer újraindításától lép életbe.
{ "data": [ { "theme": "dark.json", "language": "hu.json" } ] }
Nyelv fájl
Rendszer újraindításától, vagy új nyelv kiválasztásakor lép életbe.
{ "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
A tesztfolyamat adatok betöltése után lép életbe. Az elérési útvonalnak a publikált képekre kell mutatni. EZ a githubos környezet eseten a githubra felötlött képekre mutat. (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" } },… ] }
Esetleges többletadat figyelmen kívül hagyása.
Téma fájl
Rendszer újraindításától, vagy új téma kiválasztásakor lép életbe.
{ "data": [ { "backgroundColor": [ 120, 0, 100, 0 ], "buttonColor": [ 150, 0, 255, 0 ] } ] }
Értelmezése: argb színkódolást használ a szoftver, mely az Alpha, Red,Green és Blue színekből állít elő szint.
pl:
"backgroundColor" színkódjának értelmezése
120: Alpha
0: Red
100: Green
0: Blue
...
Hibaelhárítás
(note: milyen funkciok vannak amik segitenek a hibaelharitasban)
A log megjelenítése a felhasználónak. Log automatikus kielemzése (pár alap esetet tudok előre definiálni, pl.: rossz json struktura, rossz fajlkiterjesztes stb), és tanács adás a felhasználónak, hogy vajon mi történt, és mit tudna tenni, hogy legközelebb ne történhessen meg ilyen eset. A szoftver kísérletet tehet a hiba automatikus kijavítására ezekben az esetekben:
- hibás .json fájl struktúra -> amennyiben logikus hiba van (hiányzik "," ":" "{" karakter), pótolni tudja azokat. Természetesen tudomást ad a felhasználónak, hogy nem feltétlen a kívánt adat lett előállítva.
- Amennyiben olyan eset áll elő, ami nem pre-definiált, akkor support kontaktálás (email)
- ...
Előredefiniált hibák:
- ...
- ...
Perzisztencia
Egy konfig fájlba vannak írva a külön beállítások (nyelv, téma), tehát ezek perzisztensek. A teszt írása közben készülő, sérülésmentes logfájl segítségével (a teszt tervező engedélyével) vissza lehet állítani a folyamat utoljára elmentett állapotát, akár rendszer újraindulás után is
Tesztelés
Ebben a fejezetben fogom leírni mind a belső (saját magam/KJE-n belüli) mind a külső (.......) tesztelési folyamatokat, észrevételeket, eredményeket.
Belső tesztelés
A keretrendszer megvalósításakor intézményen belüli, és kívüli személyeket felkértünk a tesztelésre. Kiosztott jogosultságokkal belső tesztelés folytatódott intézményen belül, melynek segítségével több hibát is felfedeztünk. privat kanban boardon (majd elkészül)
Github Actions szolgáltatás segítségével minden egyes Branch Merge (vö.: https://www.w3schools.com/git/git_branch_merge.asp?remote=github) alkalmával tesztelendő a kód, ezen és ezen szempontokból (ezek a logikai szempontok, ezekből még nem tudjuk, hogy miket lehet megvalósítani):
- Projekt buildelhetőségének tesztelés:
- A program le tud futni, nincs benne hiba
- ...
- Játék játszhatóságának tesztelése
- Sikerült adatot betölteni
- Van output a játékból
Nem szempont:
- Tartalmi ellenőrzés
Mivel ez csupán forráskód, ezért nem szükséges a szakdolgozatíró saját magának írt kódot ellenőrizni tartalmi szempontból, hiszen nem publikus
Projekt buildelhetőségének tesztelés
GitHub action fájl:
name: build and test on: push: pull_request: branches: - '**' paths-ignore: - 'README.md' env: DOTNET_VERSION: '6.0.x' # The .NET SDK version to use # Defines a single job named "build-and-test" jobs: build-and-test: # When the workflow runs, this is the name that is logged # This job will run three times, once for each "os" defined name: build-and-test-$Sablon:Matrix.os runs-on: $Sablon:Matrix.os strategy: matrix: os: [windows-latest] # Each job run contains these five steps steps: # 1) Check out the source code so that the workflow can access it. - uses: actions/checkout@v2 # 2) Set up the .NET CLI environment for the workflow to use. # The .NET version is specified by the environment variable. - name: Setup .NET uses: actions/setup-dotnet@v1 with: dotnet-version: $Sablon:Env.DOTNET VERSION # 3) Restore the dependencies and tools of a project or solution. - name: Install dependencies run: dotnet restore # 4) Build a project or solution and all of its dependencies. - name: Build run: dotnet build --configuration Release --no-restore # 5) Test a project or solution. - name: Test run: dotnet test --no-restore --verbosity normal
Github Action kód magyarázat
Alap konfiguráció
Ez az alap konfig, még nem a kódot teszteli, hanem megmondja, hogy mit kell/mit nem kell testtelni. a Github Action action neve
name: build and test
Minden branchet végig tesztel, minden egyes Git push eseménykor:
on: push: pull_request: branches: - '**'
A Readme.md fájlokat kihagyja a tesztből:
paths-ignore: - 'README.md'
Beállitja a .NET verziót 6.0.X-re (mivel a keretrendszer ezt használja vö.: *link a specifikáciokbol*, X >= 0)
env: DOTNET_VERSION: '6.0.x'
valamiiiii
jobs: build-and-test:
sdrdfsdffdfdfd
name: build-and-test-$Sablon:Matrix.os runs-on: $Sablon:Matrix.os strategy: matrix: os: [windows-latest]
Forráskód tesztelése
Itt kezdődik a prejekt testz
Játék játszhatóságának tesztelése
Készülnie kell egy Unit tesztelő algoritmusnak, mely tudni fogja a keretrendszerek paramétereit, argumentumjait, és ennek megfelelően megpróbálja mind valid, mind invalid adatokkal feltölteni a keretrendzsert. Ennek eredményeaképpen látni fogjuk, hogy milyen inputra milyen output fog keletkezni, és felfedhetőek lesznek az inkonzisztens adatok által létrehozott hibák is.
Külső tesztelés
Publikus tesztelés, ezen a kanban boardon kell gyűjteni a problémákat a projekttel kapcsolatban: https://github.com/users/SiposPtr/projects/2
Fejlesztői saját 2DM-játékok
Hogyan nézzen ki egy lefejlesztendő játék, amennyiben a fejlesztő kézzel, és nem az erre megadott alrendszert (GTDS) használja.
1. játék
- X=3
- X1= oszlop1
- X2= oszlop2
- X3= oszlop3
- Y=3
- Y1= sor1
- Y2= sor2
- Y3= sor3
- válaszkártyák (9=3*3)
- VK1= kép1-nek a lokális elérési útvonala
- VK2= kép2-nek a lokális elérési útvonala
- VK3= ...
- ...
- ...
- ...
- ...
- ...
- VK9= kép9-nek a lokális elérési útvonala
- Maga a feladat megfogalmazása
i. játék
- X>3
- Y>3
- X<>Y
Teszt katalógus
A katalógus a Firebase adatbázist fetcheli, és jeleníti meg.
A katalógus a GTS alrendszer része, mivel:
- a tesztírónak elég egy alkalmazást tudnia használni
- a teszt megírása amúgy is a GTS rendszerben fog történni, így kézenfekvő a kvízek letöltése onnan, ahol a kvízt két-három kattintással később le is lehet játszani
Saját teszt publikálása
https://miau.my-x.hu/mediawiki/index.php/BPROF:2dm_q1
Üzleti hasznosítás
ide mit kéne? Lényegében iskoláknak készült, hogy a tanulókat számon kérjék stb.................