IIII. labor Képfileok kezelése (media resources) Canvas Egérkezelés.

Slides:



Advertisements
Hasonló előadás
Osztály leszármaztatás
Advertisements


Krizsán Zoltán iit 1.1.  Aszinkron történésről értesítés egy vagy több objektum számára.  Delegátumok segítségével valósítja meg a C#.  event típus,
1. foreach( fejlesztő in Lurdyház ) { fejlesztő.Agy. Delete If( delegate ( Content c ) { return c.ContainsAny( „Win32 / User32.dll”, „GDI”,„GDI+”,„WindowsForms”,
3 5 6 Application Services Deployment Services Databinding USER INTERFACE SERVICES XAML Accessibility Property System Input & Eventing BASE SERVICES.
Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt fejlesztőrendszerek Felhasználói felületek Balogh András.
FelültöltésVHDL Felültöltés (Overloading) n Áttekintés n Példák.
 Gauss szűrő uniform sampler2D colorMap; const float kernel[9] = float[9]( 1.0, 2.0, 1.0, 2.0, 4.0, 2.0, 1.0, 2.0, 1.0); out vec4 outColor; void main(){
Socket programozás Példák
Öröklődés 2..
© Kozsik Tamás Tömbök, kollekciók és egyéb alaposztályok.
TRANZIENS ADATTÁROLÁS State objektum Egy alkalmazásszintű gyűjtemény (Dictionary), mely Tombstone esetén megőrzi tartalmát a memóriában kulcs/érték párokként.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Fájlkezelés, IO Kivételkezelés Belső osztályok
Tömbök ismétlés Osztályok Java-ban Garbage collection
Az objektum-orientált tervezési alapelvek kritikai vizsgálata
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
A Java programozási nyelvSoós Sándor 1/16 Java programozási nyelv 6. rész – Java a gyakorlatban Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Java programozási nyelv 3. rész – Osztályok I.
C# tagfüggvények.
Delegátumok C#-ban Krizsán Zoltán iit 1.0.
C# osztályok Krizsán Zoltán 1.0.
Oracle multimédia Kiss Attila Információs Rendszerek Tanszék
Kivételkezelés.
PHP V Osztályok, Objektumok. Osztály class Person { var $name; // tulajdonság, változó function getName() { // metódus, tagfüggvény return $this->name;
Multimédiás programok készítése Macromedia Director fejlesztői környezetben 4. előadás Készítette: Kosztyán Zsolt
Számítógépes Grafika 2. gyakorlat Programtervező informatikus (esti) 2011/2012 őszi félév.
Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - III. / 1 13.Állományok, bejegyzések 14.Folyamok 15.Közvetlen hozzáférésű állomány.
Eye-RIS rendszer programozása D46 laborgyakorlat.
Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek JFace.
Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek SWT haladó komponensek.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
1 Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Vizuális programozás Rajzolás Windows Forms alkalmazásokban GDI+
1. Gyakorlat - Alapok 1. Írjon konzolprogramot, amely kiírja a “Hello ELTE” üzenetet! Használja a System.out.println() -t! 2. Írjon konzolprogramot, amely.
Könyvtár, csomag és alprogramokVHDL Könyvtár, csomag és alprogram n Library és use n Package n Alprogramok –Procedure –Function –Resolution function Egy.
A PHP 5 újdonságai Az OOP terén. Miről lesz szó? Osztályok kezelése – Új direktívák – Konstruktor – Destruktor Interfészek Kivételkezelés.
Objektum orientált programozás a gyakorlatban
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Motor IIII. Vezérlés Szécsi László. Letöltés diák: //l09-engine4.ppt.
Transzformációk, textúrák, árnyalás Szécsi László.
DirectX9 empty project Szécsi László. Project létrehozása Microsoft DirectX SDK (August 2008) telepítése Start Menu \ Microsoft DirectX SDK (August 2008)\
V. labor Thread, animáció. Animáció A figurák a lépés kijelölése után nem rögtön az új helyen teremnek, hanem egyenes vonal mentén mozognak a cél felé.
OIS. Kezdeti teendők Letöltés: OgreLabControllersBase.zip Kicsomagol, betölt:.sln Additional include és library path beállítása Working directory beállítása.
SzgLab 3. Java. I. labor Alapok, OOP váz, megjelenítés konzolon.
II. labor Lépések kezelése. Új metódus a Square osztályba public static int letterToFileIndex(char letter) throws NumberFormatException { int i = 0; for.
III. labor AWT, eseménykezelés Applet. Új class: ButtonView import java.awt.*; import java.awt.event.*; import java.util.LinkedList; public class ButtonView.
User interface Szécsi László. Egg projectben DXUTgui.cpp – CDXUTDialogResourceManager::CDXUTDialogReso urceManager() m_SpriteBufferBytes11 = 0; ezt kihagyták,
 Map  Reduce  Scan  Histogram  Compact const size_t dataSize = 1024; cl_kernel mapKernel = cl.createKernel(clProgram, "map"); float* hData = new.
GPGPU labor X. Monte Carlo módszerek. Kezdeti teendők Tantárgy honlapja, Monte Carlo módszerek A labor kiindulási alapjának letöltése (lab10_base.zip),
GPGPU labor IX. Lineáris egyenletrendszerek megoldása.
GPGPU Labor 15.. Párhuzamos primitívek Map Reduce Scan Histogram Compact.
GPGPU labor II. GPU mint vektor processzor. Kezdeti teendők Tantárgy honlapja, Bevezetés – Alap könyvtárak letöltése Tantárgy honlapja, GPU mint vektor.
HTTP kommunikáció Androidon HttpClient-en keresztűl HttpPost/HttpGet objektum használatával HttpClient execute metódusának meghívása.
Java programozási nyelv Filekezelés
Java programozási nyelv Adatbekérés konzolról
Programozás III KOLLEKCIÓK.
Logikai programozás 3.. ISMÉTLÉS Elágazás-szervezés: a/ B :- A 11, A 12, …, A 1n. B :- A 21, A 22, …, A 2k. … B :- A m1, A m2, …, A mr. b/ B :- (A 11,
Rendezőalgoritmusok. Feladatok I. 1.Hozzunk létre új StandardEXE VB projektet. Töröljük Form1-t 2.Add/Module/New, majd Properties/átnevezzük: „MainModule”
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 7. gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 6. gyakorlat.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Krizsán Zoltán, iit C# osztályok 2 Adattagok  Osztály hatáskörben definiált változó.  Formája: [attribútum] [módosító] típus azonosító [=kezdő érték][,
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
B M Java Programozás 4. Gy: Java GUI IT A N Tipper, MVC kalkulátor
B M Java Programozás 9. Gy: Java alapok IT A N Adatkezelő 5.rész
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Szálszinkronizáció.
Előadás másolata:

IIII. labor Képfileok kezelése (media resources) Canvas Egérkezelés

Új class: ImageView import java.awt.*; import java.awt.event.*; import java.util.LinkedList; public class ImageView extends Canvas implements View { private Chessboard board; // kirajzolandó üzenet-stringek private LinkedList messages = new LinkedList (); public ImageView(Chessboard board) { this.board = board; }

Új: ImageView metódusok public void display() { repaint(); } public void paint(Graphics g) { g.setColor(new Color(0, 0, 0)); g.drawRect(5, 5, 430, 430); } public void printMessage(String message) { messages.addFirst(message); if(messages.size() > 6) messages.removeLast(); repaint(); }

Új class: ImageController import java.awt.*; import java.awt.event.*; public class ImageController { private ImageView view; private Chessboard board; public ImageController() { board = new Chessboard(); view = new ImageView(board); } public void createFrame(){ Frame frame = new Frame("Chess"); frame.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.add(view); frame.setSize(450, 600); frame.setResizable(false); frame.setVisible(true); }

Chess.main public static void main(String[] args) { // TODO code application logic here System.out.println("!!!! Starting chess game !!!!"); //new ConsoleController(); //(new ButtonController()).createFrame(); (new ImageController()).createFrame(); }

ImageView.paint public void paint(Graphics g) { g.setColor(new Color(0, 0, 0)); g.drawRect(5, 5, 430, 430); // színes négyzetek rajzolása for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { if ((i + j) % 2 == 1) g.setColor(new Color(0.6f, 0.5f, 0.3f)); else g.setColor(new Color(0.95f, 0.85f, 0.6f)); g.fillRect(20 + i * 50, 20 + j * 50, 50, 50); } // folyt köv.

ImageView.paint // rácsvonalak rajzolása, számok, betűk rajzolása g.setColor(new Color(0, 0, 0)); for (int i = 0; i < 9; i++){ g.drawLine(20 + i * 50, 20, 20 + i * 50, 420); g.drawLine(20, 20 + i * 50, 420, 20 + i * 50); if (i != 8){ g.drawString(String.valueOf(Square.fileIndexToLetter(i)), 42 + i * 50, 17); g.drawString(String.valueOf(Square.fileIndexToLetter(i)), 42 + i * 50, 432); g.drawString(String.valueOf(8 - i), 10, 47 + i * 50); g.drawString(String.valueOf(8 - i), 425, 47 + i * 50); }

Próba

ImageView.paint végére int messageStringPosition = 510; for(String message : messages) { g.drawString(message, 20, 47 + messageStringPosition); messageStringPosition -= 20; }

Önálló feladat a kiírt üzenetstringek fölfelé halványodjanak – ImageView.paint-ben – g.setColor – először fekete, aztán egyre világosabb szürke 2 perc

Próba public ImageView(Chessboard board) { this.board = board; // ideiglenes tesztszöveg printMessage("proba1"); printMessage("proba2"); printMessage("proba3"); printMessage("proba4"); printMessage("proba5"); printMessage("proba6"); }

Ágyazzuk be képfileokat a projektbe így csak a.jar filet elég valakinek odaadni, nem kell a sok.png megfelelő folderbe pakolva folder létrehozása: chesslab/src/chesslab/images képfileok letöltése és bemásolása – clean & build ezek után kódból egy kép filenevének elérése getClass().getResource("images/wking.png")

Images folder létrehozása 1

Images folder létrehozása 2

Másoljuk be a képeket

Clean & build ez beágyazza a képeinket a megfelelő helyekre

ImageView: képek tárolása import java.awt.*; import java.awt.event.*; import java.util.LinkedList; import java.util.HashMap; public class ImageView extends Canvas implements View { private Chessboard board; private LinkedList messages = new LinkedList (); protected HashMap pieceImages = new HashMap ();

ImageView: képek betöltése public ImageView(Chessboard board) { this.board = board; printMessage("proba1"); printMessage("proba2"); printMessage("proba3"); printMessage("proba4"); printMessage("proba5"); printMessage("proba6"); Toolkit toolkit = Toolkit.getDefaultToolkit(); MediaTracker mediaTracker = new MediaTracker(this); int id = 0; Image wKingImage = toolkit.getImage( getClass().getResource("images/wking.png")); mediaTracker.addImage(wKingImage, id); id++; pieceImages.put("K", wKingImage);// folyt köv.

ImageView: képek betöltése folyt. Image wQueenImage = toolkit.getImage(getClass().getResource ("images/wqueen.png")); mediaTracker.addImage(wQueenImage, id); id++; pieceImages.put("Q", wQueenImage); Image wKnightImage = toolkit.getImage(getClass().getResource ("images/wknight.png")); mediaTracker.addImage(wKnightImage, id); id++; pieceImages.put("N", wKnightImage); Image wRookImage = toolkit.getImage(getClass().getResource ("images/wrook.png")); mediaTracker.addImage(wRookImage, id); id++; pieceImages.put("R", wRookImage); Image wBishopImage = toolkit.getImage(getClass().getResource ("images/wbishop.png")); mediaTracker.addImage(wBishopImage, id); id++; pieceImages.put("B", wBishopImage); Image wPawnImage = toolkit.getImage(getClass().getResource ("images/wpawn.png")); mediaTracker.addImage(wPawnImage, id); id++; pieceImages.put("P", wPawnImage); Image bKingImage = toolkit.getImage(getClass().getResource("images/bking.png")); mediaTracker.addImage(bKingImage, id); id++; pieceImages.put("k", bKingImage); Image bQueenImage = toolkit.getImage(getClass().getResource("images/bqueen.png")); mediaTracker.addImage(bQueenImage, id); id++; pieceImages.put("q", bQueenImage); Image bKnightImage = toolkit.getImage(getClass().getResource("images/bknight.png")); mediaTracker.addImage(bKnightImage, id); id++; pieceImages.put("n", bKnightImage); Image bRookImage = toolkit.getImage(getClass().getResource("images/brook.png")); mediaTracker.addImage(bRookImage, id); id++; pieceImages.put("r", bRookImage); Image bBishopImage = toolkit.getImage(getClass().getResource("images/bbishop.png")); mediaTracker.addImage(bBishopImage, id); id++; pieceImages.put("b", bBishopImage); Image bPawnImage = toolkit.getImage(getClass().getResource("images/bpawn.png")); mediaTracker.addImage(bPawnImage, id); id++; pieceImages.put("p", bPawnImage);

ImageView: képek betöltése vége try { for (int i = 0; i < id; i++) { mediaTracker.waitForID(i); } } catch (InterruptedException ie) { System.err.println(ie); System.exit(-1); } } // ImageView konstruktor vége

ImageView.paint kieg. // a színes négyzeteket rajzoló dupla ciklus végére // de még a ciklustörzsön belülre Piece p = board.getPiece(i, 7 - j); if (p != null) { String key = p.toString(); Image im = pieceImages.get(key); g.drawImage(im, 20 + i * 50, 20 + j * 50, null); }

Próba

Új metódus: ImageController. squareClicked public void squareClicked(Square square) { if (!board.isPieceGrabbed()) { if (!board.grabPiece(square)) { view.printMessage("Invalid starting square!"); } else { view.printMessage("Click destination square!"); } } else { if (board.dropPiece(square)) { if (board.getWhiteOnTurn()) { view.printMessage("White to move!"); } else { view.printMessage("Black to move!"); } } else { view.printMessage("Invalid destination square, move cancelled!"); } view.display(); }

ImageController konstruktor végére view.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getY() 20 && e.getX() 20) { Square s = new Square( (e.getX() - 20) / 50, 7 - (e.getY() - 20) / 50); squareClicked(s); } });

Próba

Önálló feladat legyen piros keret a megfogott figura körül ImageView.paint –et kell ezzel kiegészíteni Graphics.drawRect hasznos lesz (olvasgassuk az API referenciát hozzá) A modellből olvassuk ki hozzá, hogy van-e megfogott figura, és hogy hol – akár lekérdező függvényt is adhatunk a modellhez, hogy hozzáférjünk az információhoz – keret csúcs koordináták: [20 + file * 50, 20 + (7-rank)*50] 6 perc

IIII. labor vége – szorgalmi feladat ha ki van jelölve egy figura, akkor nézzük meg az összes mezőre, hogy oda léphet-e ahova léphet, azokat a mezőket keretezzük be zölddel