1. Beadandó feladat dokumentáció

Hasonló dokumentumok
3. Beadandó feladat dokumentáció

2. Beadandó feladat dokumentáció

2. Beadandó feladat dokumentáció

3. Beadandó feladat dokumentáció

2. Beadandó feladat dokumentáció

2. Beadandó feladat dokumentáció

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

ELTE, Informatikai Kar december 12.

Eseményvezérelt alkalmazások fejlesztése II 5. előadás. Windows Forms alkalmazások párhuzamosítása. Giachetta Roberto

A program modelljéhez automatikusan futtatható egység-teszteket kell készíteni.

Eseményvezérelt alkalmazások fejlesztése II 5. előadás. Windows Forms alkalmazások párhuzamosítása. Cserép Máté

1. beadandó feladat: egyszerű grafikus felületű alkalmazás. Közös követelmények:

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1

Segédlet online felület használatához

3. Beadandó feladat dokumentáció

ReszlAd fájl, kitöltési útmutató:

Változáskezelés Verzió Dátum Változás Pont Cím Oldal Kiadás: Verzió: 2.0. Oldalszám: 2 / 8

Eseményvezérelt alkalmazások fejlesztése I 11. előadás. Szoftverek tesztelése

ContractTray program Leírás

Aromo Szöveges értékelés normál tantárggyal

Kormányzati Elektronikus Aláíró és Aláírás-ellenőrző Szoftver

Jelentkezési lap képző szervek részére

DebitTray program Leírás

Diákigazolvány. Belépés> Adminisztráció> Iskolai oktatás képes menü> diákigazolvány> diákigazolvány igénylés

Alkalmazott modul III 3. feladatcsoport. Közös követelmények:

Ugráló gomb oktatási segédlet Ugráló gomb

DKÜ ZRT. A Portál rendszer felületének általános bemutatása. Felhasználói útmutató. Támogatott böngészők. Felületek felépítése. Információs kártyák

Sú gó az ASIR/PA IR Públikús felú lethez

Bevezetés a QGIS program használatába Összeálította dr. Siki Zoltán

Programozási technológia

Java Programozás 11. Ea: MVC modell

Szöveges fájlok szerkesztése Jegyzettömb használata

Aromo Szöveges értékelés kódolt tantárggyal

Eseményvezérelt alkalmazások fejlesztése II 4. előadás. Windows Forms alkalmazások architektúrája és tesztelése. Giachetta Roberto

Johanyák Zsolt Csaba: Grafikus felület programozása. Copyright 2008 Johanyák Zsolt Csaba

ServiceTray program Leírás

C#---Access adatbáziskezelési gyakorlat

Két csomag elemeiből lehet a felületet elkészíteni: awt: heavy weight komponensek; swing: light weight komponensek (időben később).

3. Ezután a jobb oldali képernyő részen megjelenik az adatbázistábla, melynek először a rövid nevét adjuk meg, pl.: demo_tabla

Swing GUI készítése NetBeans IDE segítségével

LETÉTKEZELŐ NYILVÁNTARTÁSI RENDSZER

UnasShop - Affiliate partnerek beállítása

PwC EKAER Tool felhasználói leírás május

INGATLANVAGYON-KATASZTER SZAKRENDSZER

TERC V.I.P. hardverkulcs regisztráció

Az eszközpaletta. Felsı sor balról jobbra. Második sor balról jobbra 1/7

components : IContainer dx : int dy : int tmidőzítő : Timer toolstripseparator1 : ToolStripSeparator tsmikilépés : ToolStripMenuItem

Albacomp RI Rendszerintegrációs Kft Székesfehérvár, Mártírok útja 9. E K O P - 1. A. 2 - A D A T Á L L O M Á N Y O K

A d m i n i s z t r á c i ó s f e l a d a t o k a I n t e g r á l t K ö n y v t á r i R e n d s z e r b e n

Sorosítás (szerializáció) és helyreállítás. 1. Bináris sorosítás és helyreállítás Szükséges névterek Attribútumok. 1.3.

KTI Közlekedéstudományi Intézet Nonprofit Kft. Vasúti Vizsgaközpont

BME MOGI Gépészeti informatika 18. Grafika, fájlkezelés gyakorló óra. 1. feladat Készítsen alkalmazást az = +

Kézikönyv. Szelekciós jegyzék létrehozása

1. Bevezetés. Főkönyv ablakon (1. ábra) az Új rekord felvitele ( vegyes tétel rögzítése (2. ábra).

Kormányzati Elektronikus Aláíró és Aláírás-ellenőrző Szoftver

HVK Adminisztrátori használati útmutató

FELHASZNÁLÓI ÚTMUTATÓ

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

QGIS tanfolyam (ver.2.0)

Grafikus felhasználói felület (GUI) létrehozása A GUI jelentése Egy egyszerű GUI mintaalkalmazás létrehozása

ClicXoft programtálca Leírás

Algoritmus terv 3. Fejezet: Folyamatok meghatározása

3. beadandó feladat: háromrétegű grafikus felületű alkalmazás. Közös követelmények:

ONLINE SZAKÉRTŐI KERETRENDSZER

POSZEIDON dokumentáció (4.2)

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

VARIO Face 2.0 Felhasználói kézikönyv

Készítsen egy adatbázist (egytáblásat) egy számítástechnikai tanfolyam résztvevőiről. Az adattábla rögzítse a következőket:

ivms-4200 kliensszoftver

Tanrend jelentő képző szervek részére

BME MOGI Gépészeti informatika 14.

Felhasználói dokumentáció. a TávTagTár programhoz. Készítette: Nyíri Gábor, hdd@nc-studio.com GDF Abakusz regisztrációs kód: GDFAba43

Prezentáció, Prezentáció elkészítése. Diaminták

Thermo1 Graph. Felhasználói segédlet

BME MOGI Gépészeti informatika 7.

Ügyfélkapuból hivatalos ügy indítása

Segédlet online felület használatához

A Java nyelv. Dialógus ablakok. Elek Tibor

Hozzunk létre két rekordot a táblában, majd véglegesítsünk (commit):

FÜRKÉSZ. Digitális tachográf, és gépkocsivezet i chipkártya kielemz program. Használati útmutató

Aromo Szöveges Értékelés

Időkönyvelő Projektfeladat specifikáció

Az MS Excel táblázatkezelés modul részletes tematika listája

A Novitax ügyviteli programrendszer első telepítése

Oktatás. WiFi hálózati kapcsolat beállítása Windows XP és Windows 7-es számítógépeken. SZTE Egyetemi Számítóközpont

Hungaropharma Zrt. WEB Áruház felhasználói útmutató. Tartalomjegyzék

Hiteles Elektronikus Postafiók

1.1.1 Dátum és idő függvények

Ügyfélforgalom számlálás modul

Átutalási csomag karbantartó modul

Euro költségátalány. MNB Árfolyam letöltés. Műveletek \ MNB Árfolyam letöltés menüpontban.

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

Útmutató a évi szabadidősportos pályázatok elektronikus beadásához

Tájékoztató. Használható segédeszköz: -

BME MOGI Gépészeti informatika 13.

TÁJÉKOZTATÓ A CCN V VERZIÓHOZ Változások a V verzió kiadása után

RIEL Elektronikai Kft v1.0

SEGÉDLET a GYÓGYSZERÉSZI ADATGYŰJTÉS OSAP1578 program használatához

Elmib Önkormányzati hibabejelentő. Felhasználói kézikönyv v1.0

GPRS Remote. GPRS alapú android applikáció távvezérléshez. Kezelési útmutató

Átírás:

1. Beadandó feladat dokumentáció Készítette: Hallgató Harald E-mail: haha@inf.elte.hu Feladat: Készítsünk egy Sudoku játékprogramot. A Sudoku egy olyan 9 9-es táblázat, amelyet úgy kell a 0-9 számjegyekkel kitölteni, hogy minden sorában, minden oszlopában és minden házában egy számjegy pontosan egyszer szerepeljen. (Házaknak a 9 9-es táblázatot lefedő, de egymásba át nem érő kilenc darab 3 3 résztáblázatot nevezzük.) A 81 darab kis négyzet bármelyikére kattintva a négyzet felirata változzon meg: az üres felirat helyett 1-esre, az 1-es helyett 2-esre, és így tovább, végül a 9-es helyett üresre. Ennek megfelelően bármelyik négyzeten néhány (legfeljebb kilenc) kattintással egy tetszőleges érték állítható be. Egy adott négyzeten történő kattintgatás esetén soha ne jelenjék meg olyan szám, amely az adott négyzettel egy sorban, egy oszlopban vagy egy házban már szerepel. A program számolja a játékos lépéseit, valamint az eltelt időt. A programnak támogatnia kell új játék kezdését, játék betöltését, valamint mentését. Új játék kezdésekor legyen véletlenszerűen kitöltve pár mező, amelyeket utólag nem lehet módosítani. Játék mentésekor jegyezzük meg az így zárolt mezőket és betöltéskor ennek megfelelően állítsuk vissza a játéktáblát. Ezen felül a program nehézségi szinteket is kezeljen, amely meghatározza a játék maximális idejét (ezért a hátralévő időt jelenítsük meg), valamint új játék esetén az előre beállított mezők számát. Elemzés: A játékot három nehézségi szinttel játszhatjuk: könnyű (60 perc, 6 generált mező), közepes (20 perc, 12 előre generált mező), nehéz (10 perc, 18 előre generált mező). A program indításkor közepes nehézséget állít be, és automatikusan új játékot indít. A feladatot egyablakos asztali alkalmazásként Windows Forms grafikus felülettel valósítjuk meg. Az ablakban elhelyezünk egy menüt a következő menüpontokkal: File (Új játék, Játék betöltése, Játék mentése, Kilépés), Beállítások (Könnyű játék, Közepes játék, Nehéz játék). Az ablak alján megjelenítünk egy státuszsort, amely a lépések számát, illetve a hátralévő időt jelzi. A játéktáblát egy 9 9 nyomógombokból álló rács reprezentálja. A nyomógomb egérkattintás hatására megváltoztatja a megjelenített számot. A számot változtatáskor egyesével növeljük, és csak azokat az értékeket engedjük, amelyek még nem szerepelnek az adott sorban, oszlopban és házban. A táblán az előre generált mezőket nem engedjük megváltoztatni, ezeket sárgával jelöljük. 1

A játék automatikusan feldob egy dialógusablakot, amikor vége a játéknak (kiraktuk a táblát, vagy letelt az idő). Szintén dialógusablakokkal végezzük el a mentést, illetve betöltést, a fájlneveket a felhasználó adja meg. A felhasználói esetek az 1. ábrán láthatóak. Kilépés Játék vége Mentés «invokes» Lépés Felhasználó Betöltés «precedes» «invokes» «precedes» Nehézség állítása Új játék «invokes» Játékidő múlása «include» «include» «include» Könnyű Közepes Nehéz 1. ábra: Felhasználói esetek diagramja Tervezés: Programszerkezet: A programot háromrétegű architektúrában valósíjuk meg. A megjelenítés a View, a modell a Model, míg a perzisztencia a Persistence névtérben helyezkedik el. A program csomagszerkezete a 2. ábrán látható. Perzisztencia: Az adatkezelés feladata a Sudoku táblával kapcsolatos információk tárolása, valamint a betöltés/mentés biztosítása. A SudokuTable osztály egy érvényes Sudoku táblát biztosít (azaz mindig ellenőrzi a beállított értékek), ahol minden mezőre ismert az értéke 2

(_fieldvalues), illetve a zároltsága (_fieldlocks). Utóbbit a játék kezdetekor generált, illetve értékekre alkalmazzuk. A tábla alapértelmezés szerint 9 9 -es 3 3 -as házakkal, de ez a konstruktorban paraméterezhető. A tábla lehetőséget az állapotok lekérdezésére (IsFilled, IsLocked, IsEmpty, GetValue), valamint szabályos léptetésre (StepValue), illetve direkt beállítás (SetValue, SetLock) elvégzésére. A hosszú távú adattárolás lehetőségeit az ISudokuDataAccess interfész adja meg, amely lehetőséget ad a tábla betöltésére (LoadAsync), valamint mentésére (SaveAsync). A műveleteket hatékonysági okokból aszinkron módon valósítjuk meg. Az interfészt szöveges fájl alapú adatkezelésre a SudokuFileDataAccess osztály valósítja meg. A fájlkezelés során fellépő hibákat a SudokuDataException kivétel jelzi. A program az adatokat szöveges fájlként tudja eltárolni, melyek az stl kiterjesztést kapják. Ezeket az adatokat a programban bármikor be lehet tölteni, illetve ki lehet menteni az aktuális állást. A fájl első sora megadja a tábla méretét, valamin a házak méretét (ami alapértelmezés szerint 9 és 3). A fájl többi része izomorf leképezése a játéktáblának, azaz összesen 9 sor következik, és minden sor 9 számot tartalmaz szóközökkel választva. A számok 0-9 közöttiek lehetnek, ahol 0 reprezentálja a még üres mezőt. 2. ábra: Az alkalmazás csomagdiagramja 3

Modell: A modell lényegi részét a SudokuGameModel osztály valósítja meg, amely szabályozza a tábla tevékenységeit, valamint a játék egyéb paramétereit, úgymint az idő (_gametime) és a lépések (_gamestepcount). A típus lehetőséget ad új játék kezdésére (NewGame), valamint lépésre (StepGame). Új játéknál megadható a kiinduló játéktábla is, különben automatikusan generálódnak kezdő mezők. Az idő előreléptetését időbeli lépések végzéséve (AdvanceTime) tehetjük meg. A játékállapot változásáról a GameAdvanced esemény, míg a játék végéről a GameOver esemény tájékoztat. Az események argumentuma (SudokuEventArgs) tárolja a győzelem állapotát, a lépések számát, valamint a játékidőt. A modell példányosításkor megkapja az adatkezelés felületét, amelynek segítségével lehetőséget ad betöltésre (LoadGameAsync) és mentésre (SaveGameAsync) A játék nehézségét a GameDifficulty felsorolási típuson át kezeljük, és a SudokuGame osztályban konstansok segítségével tároljuk az egyes nehézségek paramétereit. Nézet: A nézetet a GameForm osztály biztosítja, amely tárolja a modell egy példányát (_model), valamint az adatelérés konkrét példányát (_dataaccess). A játéktáblát egy dinamikusan létrehozott gombmező (_buttongrid) reprezentálja. A felületen létrehozzuk a megfelelő menüpontokat, illetve státuszsort, valamint dialógusablakokat, és a hozzájuk tartozó eseménykezelőket. A játéktábla generálását (GenerateTable), illetve az értékek beállítását (SetupTable) külön metódusok végzik. A játék időbeli kezelését egy időzítő végzi (_timer), amelyet mindig aktiválunk játék során, illetve inaktiválunk, amennyiben bizonyos menüfunkciók futnak. A program teljes statikus szerkezete a 3. ábrán látható. 4

View::GameForm - _dataaccess :ISudokuDataAccess - _model :SudokuGameModel - _buttongrid :Button ([,]) - _timer :Timer Form Program - Main() :void + GameForm() - GameForm_Load(Object, EventArgs) :void - Game_GameAdvanced(Object, SudokuEventArgs) :void - Game_GameOver(Object, SudokuEventArgs) :void - ButtonGrid_MouseClick(Object, MouseEventArgs) :void - MenuFileNewGame_Click(Object, EventArgs) :void - MenuFileExit_Click(Object, EventArgs) :void - MenuGameEasy_Click(Object, EventArgs) :void - MenuGameMedium_Click(Object, EventArgs) :void - MenuGameHard_Click(Object, EventArgs) :void - Timer_Tick(Object, EventArgs) :void - GenerateTable() :void - SetupTable() :void - SetupMenus() :void «async» - MenuFileLoadGame_Click(Object, EventArgs) :void - MenuFileSaveGame_Click(Object, EventArgs) :void «enumerati... Model:: GameDifficulty -_difficulty Easy Medium Hard EventArgs Model::SudokuEventArgs - _gametime :Int32 - _steps :Int32 - _iswon :Boolean + SudokuEventArgs(Boolean, Int32, Int32) «property» + GameTime() :Int32 + GameSteps() :Int32 + IsWon() :Boolean Persistence::SudokuTable - _regionsize :Int32 - _fieldvalues :Int32 ([,]) - _fieldlocks :Boolean ([,]) + SudokuTable() + SudokuTable(Int32, Int32) + IsEmpty(Int32, Int32) :Boolean + IsLocked(Int32, Int32) :Boolean + GetValue(Int32, Int32) :Int32 + SetValue(Int32, Int32, Int32, Boolean) :void + StepValue(Int32, Int32) :void + SetLock(Int32, Int32) :void - CheckStep(Int32, Int32) :Boolean «property» + IsFilled() :Boolean + RegionSize() :Int32 + Size() :Int32 «indexer» + this(int32, Int32) :Int32 -_table -_model Model::SudokuGameModel - GameTimeEasy :Int32 = 3600 - GameTimeMedium :Int32 = 1200 - GameTimeHard :Int32 = 600 - GeneratedFieldCountEasy :Int32 = 6 - GeneratedFieldCountMedium :Int32 = 12 - GeneratedFieldCountHard :Int32 = 18 - _dataaccess :ISudokuDataAccess - _table :SudokuTable - _gamedifficulty :GameDifficulty - _gamestepcount :Int32 - _gametime :Int32 + SudokuGameModel(ISudokuDataAccess) + NewGame() :void + AdvanceTime() :void + Step(Int32, Int32) :void - GenerateFields(Int32) :void - OnGameAdvanced() :void - OnGameOver(Boolean) :void «property» + GameStepCount() :Int32 + GameTime() :Int32 + Table() :SudokuTable + IsGameOver() :Boolean + GameDifficulty() :GameDifficulty «event» + GameAdvanced() :EventHandler<SudokuEventArgs> + GameOver() :EventHandler<SudokuEventArgs> «async» + LoadGameAsync(String) :Task + SaveGameAsync(String) :Task -_dataaccess «interface» Persistence::ISudokuDataAccess + LoadAsync(String) :Task<SudokuTable> + SaveAsync(String, SudokuTable) :Task -_dataaccess Persistence::SudokuFileDataAccess «async» + LoadAsync(String) :Task<SudokuTable> + SaveAsync(String, SudokuTable) :Task Exception Persistence:: SudokuDataException + SudokuDataException() 3. ábra: Az alkalmazás osztálydiagramja 5

Tesztelés: A modell funkcionalitása egységtesztek segítségével lett ellenőrizve a SudokuGameModelTest osztályban. Az alábbi tesztesetek kerültek megvalósításra: SudokuGameModelNewGameEasyTest, SudokuGameModelNewGameMediumTest, SudokuGameModelNewGameHardTest: Új játék indítása, a mezők kitöltése, valamint a lépésszám és nehézség ellenőrzése a nehézségi fokozat függvényében. SudokuGameModelStepTest: Játékbeli lépés hatásainak ellenőrzése, játék megkezdése előtt, valamint után. Több lépés végrehajtása azonos játékmezőn, esemény kiváltásának ellenőrzése. SudokuGameModelAdcanceTimeTest: A játékbeli idő kezelésének ellenőrzése, beleértve a játék végét az idő lejártával. 6