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

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

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

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

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

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.

Segítség a megoldáshoz: 1. Készítse el a Window-t az ábrának és az osztálydiagramnak megfelelően.

Access adatbázis elérése OLE DB-n keresztül

XML Webszolgáltatás alapú osztott alkalmazás fejlesztése Johanyák Zsolt Csaba 1

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

Eseménykezelés - Lottó játék

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás

BME MOGI Gépészeti informatika 7.

BME MOGI Gépészeti informatika 14.

BME MOGI Gépészeti informatika 6.

Johanyák Zsolt Csaba: Képnézegető program oktatási segédlet

Mérési adatgyűjtés és adatfeldolgozás 2. előadás

Programozási technológia

A Microsoft Visual Studio 2005 fejlesztőkörnyezet

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

Programozás BMEKOKAA146. Dr. Bécsi Tamás 10. Előadás

Vizuális programozás gyakorlat

Java Programozás 5. Gy: Java alapok. Adatkezelő 1.rész

Vizuális, eseményvezérelt programozás I.

Form1 Form Size 400;400 Text Mozgó kör timer1 Timer Enabled True Interval 100

Elemi Alkalmazások Fejlesztése Beadandó Feladat Juhász Ádám

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

2. Beadandó feladat dokumentáció

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

Entity Framework alapú adatbáziselérés 2

BME MOGI Gépészeti informatika 4.

Szoftvertechnolo gia gyakorlat

2. Beadandó feladat dokumentáció

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

ESEMÉNY VEZÉRELT ALKALMAZÁSOK FEJLESZTÉSE I. Bevezetés. Készítette: Gregorics Tibor

inels timer Működési elv:

Webszolgáltatás és XML alapú adatbázis. 1. Az adatbázis megtervezése

BME MOGI Gépészeti informatika 13.

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

Vizuális programozás gyakorlat

Programozás 2., II. kötet Windows form alkalmazások

A számítógépes adatgyűjtő program használata

GenerikusOsztály<objektumtípus> objektum = new GenerikusOsztály<objektumtípus>();

Johanyák Zsolt Csaba: XML Webszolgáltatás alapú osztott alkalmazás fejlesztése (Mandelbrot halmaz számítás) oktatási segédlet

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Entity Framework alapú adatbáziselérés

Programozás I. Grafika Eseménykezelés. Programozás I. 2. gyakorlat Interakció a grafikus felületen, tagfüggvények. Surányi Márton PPKE-ITK

Interaktív alkalmazások készítése Scratch-ben

A Microsoft, a Windows, a Windows NT, a Windows NT Workstation a Microsoft Corporation bejegyzett védjegye vagy védjegyei az Egyesült Államokban

3.2. Az alkalmazások ablaka

Thermo1 Graph. Felhasználói segédlet

Eseményvezérelt alkalmazások

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

ContractTray program Leírás

CAN alapú járműves adatokat megjelenítő szoftver fejlesztése

7. Előadás. Makrók alkalmazása. Salamon Júlia. Előadás I. éves mérnök hallgatók számára

3. Beadandó feladat dokumentáció

Java Programozás 8. Gy: Java alapok. Adatkezelő 4.rész

munkafüzet open eseményéhez

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

TABULÁTOROK TÁBLÁZATOK KÉSZÍTÉSE. A táblázatok készítésének lehetőségei:

Táblázatok. Táblázatok beszúrása. Cellák kijelölése

1. Beadandó feladat dokumentáció

Események. A lecke tartalmából:


Állomány (fájl) = összetartozó adathalmaz, program, melyet a számítógép egyetlen egységként kezel.

PLC Versenyfeladat. XIV. Országos Irányítástechnikai Programozó Verseny Budapest, március Összeállította az EvoPro Kft.

Gépelje be felhasználó nevét és jelszavát. Ha nem emlékszik az azonosítókra lépjen kapcsolatba ügyfélszolgálatunkkal az alábbi elérhetőségeken:

Eseménykezelés. Aszinkron kommunikáció

9. óra operációs rendszerek. Grafikus operációs rendszer

4. Gy: JAVA osztályok

Elemi alkalmazások fejlesztése III.

CGS Civil 3D Extensions 2012 telepítése

ServiceTray program Leírás

BME MOGI Gépészeti informatika 15.

Java Programozás 7. Gy: Java alapok. Adatkezelő 3.rész

Java Programozás 1. Gy: Java alapok. Ismétlés ++

DebitTray program Leírás

BME MOGI Gépészeti informatika 5.

Grafikus felhasználói felületek, eseménykezelés

A Java nyelv. Dialógus ablakok. Elek Tibor

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).

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

1.A. feladat: Programablakok

HASZNÁLATI ÚTMUTATÓ IMMERSION CELSIUS BÚVÁRÓRA

BME MOGI Gépészeti informatika 1.

C# develop feladatleírások

Java Programozás 11. Ea: MVC modell


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

Alkalmazások fejlesztése III. Qt 4 /C++ alapú grafikus alkalmazás Bevezetés I.

Netlock Kft. által kibocsátott elektronikus aláírás telepítése Windows XP SP3 Internet Explorer 8 böngészőbe

ClicXoft programtálca Leírás

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

Építésügyi Monitoring Rendszer (ÉMO) komplex működését biztosító településrendezési tervek digitalizálása EKOP /B kiemelt projekt megvalósítása

TvNetTel Internet Kapcsolat Beállítása

Beszámoló átadása az OBR * -nek a Hessyn Éves beszámoló nyomtatványkitöltő programból

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Beszámoló átadása az OBR * -nek a Hessyn Éves beszámoló nyomtatványkitöltő programból

Átírás:

Ugráló gomb Készítsünk egy egyszerű játékprogramot, ami egy mozgó nyomógombot tartalmaz. A nyomógomb beállított ideig marad egy helyben, majd az ablakon számára elhatárolt terület (panel) egy véletlenszerűen kiválasztott pozíciójában jelenik meg újra. A játék során az a feladat, hogy minél többször kattintsunk a gombon az egér segítségével. A játék előre beállított ideig tart, a form alján elhelyezett végrehajtásjelző tájékoztat az eltelt időről. A feladat egy lehetséges megoldása a következő: 1. Az alkalmazás vázának automatikus generálása Fájl menü, New, Project Project Types: Visual C#, Windows Templates: Windows Forms Application Name: UgraloGomb OK A megoldás és a projekt nevét írjuk át a Solution Explorerben UgrálóGomb-ra. 2. Felület kialakítása A főablak neve legyen Name=frmUgrálóGomb, az őt definiáló állomány nevét is változtassuk meg frmugralogomb.cs-re. Solution Explorerben jobb egérgomb a Form1.cs-n, majd a név átírása. Egy nyomógombot (Button) helyezünk a formra a bal felső sarokba. Name=btStart, Text=&Start. Ezzel lehet majd elindítani a játékot. Egy csúszkát (TrackBar) helyezünk el a nyomógomb jobb oldalára. Name=trbCsúszka. Ezzel lehet majd beállítani, hogy mennyi ideig maradjon egy helyben a mozgó nyomógomb. Egy-egy címkét (Label) helyezünk el a csúszka bal és jobb oldalára. Feladatuk a csúszkával beállítható minimális és maximális időérték kijelzése. Nevük: Name=lMin és Name=lMax. Egy végrehajtásjelzőt (ProgressBar) helyezünk el a form aljába. Ez fog tájékoztatni az eltelt játékidőről. Tulajdonságai: Name=prbVégrehajtásJelző, Dock=Bottom. Egy panelt helyezünk el a nyomógomb alatti ablakterületre, ez lesz a játéktér, ezen belül jelenhet meg a mozgó nyomógomb. Tulajdonságai: Name=pLap, BorderStyle=Fixed3D, Dock=Bottom. Egy nyomógombot (Button) helyezünk a panelre, ezen kell kattintani játék közben. Tulajdonságai: Name=btKapjEl, Text=Kapj el! Két időzítő (Timer) komponenst helyezünk a panelre. Az első feladata az lesz, hogy másodpercenként Tick eseményt generálva lehetővé teszi az eltelt játékidő követését és a végrehajtásjelző léptetését. Tulajdonsága: Name= tmjátékidőidőzítő. A második feladata az lesz, hogy jelezze, hogy mikor telt le az az idő, amit egy helyben maradhat a Kapj El! nyomógomb. Tulajdonsága: Name= tmmozgásidőzítő. 3. Adattagok definiálása. Hozzunk létre az ablak osztályában egy adattagot az elért pontszám tárolására az osztálydiagram segítségével. /// Az elért pontszám. 1

private int Eredmény; Hozzunk létre az ablak osztályában egy adattagot véletlenszámok előállítására szolgáló objektum referenciájának tárolására. /// Véletlenszámok előállítására szolgáló objektum. private Random Véletlen; 4. Kezdőérték adás a konstruktorban. Az alábbi utasításokkal beállítjuk az ablakon elhelyezett komponensek tulajdonságait. public frmugrálógomb() { InitializeComponent(); // // A vezérlők kezdeti beállítása // Eredmény=0; // Alsó és felső határérték arra, hogy mennyi ideig maradhat // egy helyben a mozgó nyomógomb. trbcsúszka.minimum=100; trbcsúszka.maximum=1500; // A csúszka jelzővonalainak távolsága. trbcsúszka.tickfrequency=200; // Mekkora elmozdulást jelent a csúszkán a le/fel nyíl billentyű // lenyomása. trbcsúszka.smallchange=100; // Mekkora elmozdulást jelent a csúszkán a Page Up/Page Down nyíl // billentyű lenyomása. trbcsúszka.largechange=500; // A csúszka kezdeti pozíciója. trbcsúszka.value=500; // A bal és jobb oldali címkék (feliratok) szövege. lmin.text=trbcsúszka.minimum.tostring()+" ms"; lmax.text=trbcsúszka.maximum.tostring()+" ms"; tmjátékidőidőzítő.interval=1000; // Mozgó gomb kezdetben letiltva. btkapjel.enabled=false; // Véletlenszámokat előállító objektum létrehozása. Véletlen=new Random(); // Mindkét időzítő kezdetben leállítva. tmmozgásidőzítő.enabled=false; tmjátékidőidőzítő.enabled=false; // Végrehajtásjelző szélsőértékeihez társított számértékek. prbvégrehajtásjelző.maximum=10; //a játékidő s-ban prbvégrehajtásjelző.minimum=0; // Végrehajtásjelző kezdőértéke. prbvégrehajtásjelző.value=0; // Mekkora egy lépés a végrehajtásjelzőn. prbvégrehajtásjelző.step=1; 5. Az ablak fejlécében feliratot megjelenítő metódus definiálása. Az ablak fejlécében ki akarjuk jelezni, hogy mennyi az eddig elért találatok száma, mennyi időközönként mozdul el a nyomógomb, és mennyi idő van még hátra a játékból. 2

/// Friss információkat jelenít meg a játék állásáról az ablak /// fejlécében. private void FeliratKiír() { Text = string.format( "Találatok: {0 Időzítés: {1 ms Még hátravan: {2 s", Eredmény, trbcsúszka.value, prbvégrehajtásjelző.maximum - prbvégrehajtásjelző.value); 6. A játékot elindító Start gomb eseménykezelőjének elkészítése. A Start gombot kijelöljük, Properties ablak, Events gomb, Click esemény, dupla kattintás. /// A Start gombon történő kattintásra reagáló eseménykezelő. /// Kinullázza az eredményt tároló változót és a végrehajtásjelzőt. /// A mozgásidőzítőt a csúszka állapotához igazítja és indítja. /// Engedélyezi a játékidő mérés időzítőjét. /// Engedélyezi a KapjEl gombot, tiltja a Start gombot. /// Kezdeti feliratot jelenít meg az ablak fejlécében. private void btstart_click(object sender, EventArgs e) { Eredmény=0; prbvégrehajtásjelző.value=0; tmmozgásidőzítő.interval=trbcsúszka.value; btstart.enabled=false; tmmozgásidőzítő.enabled=true; tmjátékidőidőzítő.enabled=true; btkapjel.enabled=true; 7. Eseménykezelő készítése a csúszka mozgatásához Kijelöljük a csúszkát, Properties ablak, Events gomb, Scroll esemény, dupla kattintás. /// Eseménykezelő: a felhasználó elmozdította a csúszkát. /// Leállítjuk a mozgásidőzítőt. A csúszka értékének megfelelően /// beállítjuk a mozgásidőzítés idejét. Ha mindez játékidőben történt, /// akkor engedélyezzük a mozgásidőzítőt. Frissítjük a feliratot az /// ablak fejlécében. private void trbcsúszka_scroll(object sender, EventArgs e) { bool VanJáték = tmmozgásidőzítő.enabled; tmmozgásidőzítő.enabled = false; tmmozgásidőzítő.interval = trbcsúszka.value; if (VanJáték) tmmozgásidőzítő.enabled = true; 8. Eseménykezelő készítése a Kapj El! Gombhoz Kijelöljük a gombot, Properties ablak, Events gomb, Click esemény, dupla kattintás. /// Eseménykezelő: a felhasználó kattintott a KapjEl gombon. /// Növeli eggyel az eredményt és frissíti a feliratot az /// ablak fejlécében. private void btkapjel_click(object sender, EventArgs e) { Eredmény++; 3

9. Eseménykezelő készítése a mozgásidőzítő Tick eseményéhez Kijelöljük a mozgásidőzítőt, Properties ablak, Events gomb, Tick esemény, dupla kattintás. /// Eseménykezelő: lejárt a mozgásidőzítő ideje. A KapjEl gombot /// egy véletlenszerűen kiválasztott új pozícióba helyezi át. private void tmmozgásidőzítő_tick(object sender, EventArgs e) { btkapjel.left = Véletlen.Next(pLap.Width - btkapjel.width); btkapjel.top = Véletlen.Next(pLap.Height - btkapjel.height); 10. Eseménykezelő készítése a játékidő időzítőhöz Kijelöljük a játékidő időzítőt, Properties ablak, Events gomb, Tick esemény, dupla kattintás. /// Eseménykezelő: lejárt a játékidőidőzítő időegysége. Lépteti a /// végrehajtásjelzőt. /// Frissíti a feliratot az ablak fejlécében. Ha lejárt a játékidő, akkor /// leállítja a két időzítőt, letiltja a KapjEl gombot és engedélyezi a /// Start gombot. private void tmjátékidőidőzítő_tick(object sender, EventArgs e) { prbvégrehajtásjelző.performstep(); if (prbvégrehajtásjelző.value == prbvégrehajtásjelző.maximum) { tmmozgásidőzítő.enabled = false; tmjátékidőidőzítő.enabled = false; btstart.enabled = true; btkapjel.enabled = false; 11. Az érvénytelen találatok kiszűrése Csak az egérrel elért találatokat tekintjük érvényesnek, ezért meg szeretnénk akadályozni, hogy a játékos a Return gomb megnyomásával is pontot szerezzen. Ehhez először létrehozunk egy bool típusú adattagot az ablak osztályában Érvényes néven. /// Meghatározza, hogy találatot jelent-e a Click esemény. private bool Érvényes; Csak akkor érvényes a találat, ha a Kapj el gomb Click eseményénél az egér a nyomógomb felett tartózkodott. Ezért készítünk egy eseménykezelőt, ami igazra állítja az Érvényes adattagot, ha az egérkurzor belép a nyomógomb területére (Kapj el gomb MouseEnter eseménye). /// Igazra állítja az Érvényes adattagot, amikor az egérkurzor belép a /// nyomógomb területére. private void btkapjel_mouseenter(object sender, EventArgs e) { Érvényes = true; Ezután készítünk egy eseménykezelőt, ami hamisra állítja az Érvényes adattagot, ha az egérkurzor kilép a nyomógomb területéről (Kapj el gomb MouseLeave eseménye). /// Hamisra állítja az Érvényes adattagot, amikor az egérkurzor kilép a /// nyomógomb területéről. private void btkapjel_mouseleave(object sender, EventArgs e) { Érvényes = false; Végül úgy alakítjuk át a nyomógomb Click eseménykezelőjét, hogy csak akkor számoljon 4

találatot, ha az Érvényes adattag értéke igaz. /// Eseménykezelő: a felhasználó kattintott a KapjEl gombon. /// Növeli eggyel az eredményt és frissíti a feliratot az /// ablak fejlécében. Csak akkor számol találatot, ha az /// Érvényes adattag értéke igaz. private void btkapjel_click(object sender, EventArgs e) { if (Érvényes) { Eredmény++; Feladat Tegyük lehetővé a felhasználó számára, hogy állítsa be a játékidő nagyságát. A játék közben ezen ne lehessen változtatni. Tehát a beállítás csak két játék közötti időben legyen lehetséges. 5