Hoofdstuk 10.1 Toepassing: Bitmap-editor. nKlik punten op scherm nPlaatje verschuiven left, right, up, down nPlaatje bewerken clear, invert, bold, outline.

Slides:



Advertisements
Verwante presentaties
Zelf objecten maken in VBA Ynte Jan Kuindersma, BIRD Automation Nationale Officedag 2009 EDE, 14 Oktober 2009.
Advertisements

Van domeinklasse tot implementatie
MagentaPurpleTeal PinkOrangeBlue LimeBrown RedGreen Introductie C# /.NET
automatische garbage collection klein object georiënteerd betrouwbaar
Project Software Engineering Universiteit AntwerpenBetrouwbaarheid 2.1 Ontdek de 7 verschillen.
Hoofdstuk 10.2 Rekenmachine-casus.
OOS Object geOrienteerd Software-ontwerp - 4 Codeerperikelen Singleton Specificeren Scheiding GUI en Domein Facade.
Omgevingen zijn dan geïmplementeerd als Symbol Tables. Symbol Table mapt een symbool met een Binding Meerdere noties van binding –Meerdere manieren te.
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.1 Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische Wetenschappen.
Modula vs Java MODULE Show; CONST PI = ; TYPE PointRc = RECORD x,y : INTEGER; speed : REAL; angle : REAL; END; VAR a,b : PointRc; BEGIN.
Hoofdstuk 6: Controle structuren
Hoofdstuk 2 Hallo, C# !.
Server side scripting 1 Webtechnologie Lennart Herlaar.
1 Toegepaste Informatica Keuzevak C++ 3°jaar. 2 Studiefiche  Software  Boek (hfst 3-5)  Presentatie (website)
Algoritmiek Arrays: wat zijn dat en wat kun je ermee? Loops: hoe hou je ze in bedwang? Hoorcollege 6 - Ma. 9 okt L.M. Bosveld-de Smet.
Algoritmen en Datastructuren (ALDAT) EVMINX4 Dagdeel 2.
Array nDeclaratie nCreatie nOpvragen nWijzigen nLengte String [ ] a; a = new String[10]; ……a[5]…… a[5] = ……; …a.Length… …is eigenlijk overbodig! List a;
Hoorcollege 8 Game object structuren. Arrays in games Grid-gebaseerd speelveld (zoals Tetris) Lijst van spelers Lijst van inventory items Lijst van alle.
Hoorcollege 13 Animatie, game physics. De speler Wordt aangestuurd via toetsenbord Kent verschillende soorten bewegingen Rennen Stilstaan Springen Doodgaan.
Hoofdstuk 8.5 Subklassen. versie-management problematiek Voortborduren op eerder gedaan werk nEerste poging: “knip&plak” class Twee { int x, y; int oud.
Eerste deeltoets Uitwerking. Resultaten Gemiddeld: 6,01 Tips voor de volgende keer: – Werk in klad uit, schrijf duidelijk – Oefenen met loops en tellertjes.
Hoorcollege 14 Vijanden, excepties. Wat zit allemaal in een level? Startpositie van de speler Waterdruppels Tiles Vijanden Einde van het level Achtergronden.
Hoofdstuk 8 Objecten en klassen.
Hoorcollege 7 Collections, arrays. Programma ‘Snowflakes’ Sneeuwvlok object.
The Architecture.  GameLoop  Opbouw  Verschillende Modules  Comminucatie  Tekenen.
JAVA --- H71 thread= draad in het programma (pad) gewone applets = één thread, volgt één pad multithreading = er worden twee of meer paden gestart, die.
CONTROLESTRUCTUREN (DEEL 2)
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Hibernate Object relational mapping
Algoritmiek Java GUIs, AWT en Swing API Overzicht te bestuderen stof, voorbeeldtentamen Hoorcollege 15 - Ma. 11 dec L.M. Bosveld-de Smet.
Algoritmiek Software Development O-O Design Hoorcollege 11 - Ma. 13 nov L.M. Bosveld-de Smet.
JAVA1 H 22. COLLECTIONS FRAMEWORK. 1. INLEIDING. Collections framework Is een verzameling van data structuren, interfaces en algoritmen Meest voorkomende.
1 HOOFDSTUK 5 CONTROLESTRUCTUREN (DEEL 2) 5.1. INTRODUCTIE  Vervolg discussie omtrent gestructureerd programmeren  Introductie van de overblijvende controlestructuren.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Het ARM bord met wat library functies.
Hoorcollege 12 Afronding Penguin Pairs & overzicht Tick Tick.
Hoofdstuk 2 Java. Soorten Java-programma’s nJava Applet programma “leeft” op een WWW-pagina nJava Application programma heeft een eigen window nJavascript.
Hoofdstuk 9 Objecten en klassen.
Hoorcollege 9 Jewel Jam The revenge. Hierarchie van game objecten Game object (lijst) Game object (grid) Game object (lijst) Game object.
Hoofdstuk 5 Interactie. Controls Form Label Button Label TextBox.
Hoorcollege 5 Herhaling, game object interactie. Ball class class Ball { Texture2D colorRed, colorGreen, colorBlue; Texture2D currentColor; Vector2 position,
C++ C++ als een verbetering van C Abstracte datatypen met classes Constructoren en destructoren Subklassen binding van functies 1.
The beast has been released! 4 arcade-style games Interviews with famous people in the game industry Develop browsers games for any device (phone, tablet,
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 2 definitie.
Constructoren Genesis 1:1 Aarde a1 = new Aarde(“Adam”, “Eva”);
Animatie nAnimatie: “tekenfilm” programma toont automatisch veranderende beelden nGemakkelijk te programmeren met gebruik van de klasse Thread “draadje”
Hoofdstuk 11.3 Algoritmen: Zoeken in een netwerk.
Hoofdstuk 8.5 Subklassen. versie-management problematiek Voortborduren op eerder gedaan werk nEerste poging: “knip&plak” class Twee { int x, y; int oud.
Hoofdstuk 14.1 Algoritmen: Zoeken in een netwerk.
Hoofdstuk 10.3 Tekst-editor: MDI-interface Dialogen Files lezen Abstracte klassen.
Hoofdstuk 3 Methoden om te tekenen.
Over-erving nObjecten van een subklasse erven variabelen en methoden&properties van de superklasse kleiner straal CirkelGroei geërfd zelf gede- clareerd.
Gelijkheid van Strings static bool Gelijk( string s, string t) { } int m = s.Length; int n = t.Length; for (i=0; i
Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken.
Klasse uit library Android.App Activity Bij het starten van een app: nOperating system maakt een Activity -object aan… n…en neemt dat onderhanden met de.
Eerste deeltentamen nNagekeken werk ligt voor in de zaal nNeem je eigen werk mee: in het college wordt het besproken nVragen over de beoordeling: in de.
1e Deeltentamen nNagekeken werk ligt voor in de zaal (alfabetisch op achternaam) nNeem het even mee, de uitwerking wordt in het college besproken nDiscussies.
Aangepaste timing nTheorie (16 colleges + 2 deeltentamens) nPraktijk (16 keer, 3 inleveropdrachten) college Tent. 1 Tent. 3 college prakt. 1 prakt. 3 prakt.
Aangepaste timing nTheorie (16 colleges + 2 deeltentamens) nPraktijk (16 keer, 2 inleveropdrachten) college Tent. 1 Tent. 2 college prakt. 1 prakt. 2 prakt.
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Activity Bij het starten van een app:
ISensorEventListener
string versus char string char klasse primitief type
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Gameprogrammeren: Tiles in Tick Tick
Declaratie Declaratie reserveert geheugenruimte
1. Een klasse is… Een groepje opdrachten Een groepje variabelen
Voorbeeld: Simulatie van bewegende deeltjes
Voortborduren op eerder gedaan werk
Interface In de library In je eigen programma wat is er nodig om een
Exceptions Exception:
Transcript van de presentatie:

Hoofdstuk 10.1 Toepassing: Bitmap-editor

nKlik punten op scherm nPlaatje verschuiven left, right, up, down nPlaatje bewerken clear, invert, bold, outline n“Game of life”

Opdeling in klassen nHoofdscherm gebruikersinterface, menu’s, akties, files nBitmapControl tekenen van het plaatje op het scherm nBitMap plaatje in geheugen, operaties

Member-variabelen nclass Hoofdscherm uBitmapControl viewer; uMenuStrip menuStrip; nclass BitmapControl uBitMap model; nclass BitMap ubool [, ] vakjes; : Form : UserControl zelfgemaakt

Methoden Hoofdscherm nclass Hoofdscherm : Form uHoofdscherm uvergroten // eventhandler voor Resize uafsluiten // eventhandler voor "Close"-menu

Methoden BitmapControl nclass BitmapControl : UserControl uBitmapControl uteken// eventhandler voor Paint uklik// eventhandler voor MouseClick ustarten, stoppen // voor animatie-menu uuitvoeren // voor andere menu-keuzes

Methoden BitMap nclass BitMap uconstructorBitMap, BitMap upropertiesBreedte, Hoogte upunten zettenveranderKleur, vraagKleur uschuivenLeft, Right, Up, Down ubewerkenClear, Invert, Bold, Outline combineer game of lifeLife, buren

Methoden BitMap (versie 2) nclass BitMap : System.Drawing.Bitmap uconstructorBitMap, BitMap upropertiesBreedte, Hoogte upunten zettenveranderKleur, vraagKleur uschuivenLeft, Right, Up, Down ubewerkenClear, Invert, Bold, Outline combineer game of lifeLife, buren

class Hoofdscherm public Hoofdscherm( ) { } this. Text = "Bitmap Editor"; this. viewer = new BitmapControl(); this. menuStrip = new MenuStrip( ); this. maakMenu(); this. Controls. Add(menuStrip); this. Controls. Add(viewer); this. Resize += this.vergroten; this. vergroten(null, null); // meteen al even

class Hoofdscherm private void maakMenu( ) { ToolStripDropDownItem menu; } MenuStrip menuStrip; menu = new ToolStripDropDownItem("File"); menuStrip. Items. Add(menu); menu.DropDownItems.Add("Close", null, this.afsluiten); menu = new ToolStripMenuItem("Move"); menuStrip. Items. Add(menu); menu.DropDownItems.Add("Left", null, viewer.uitvoeren); BitmapControl viewer; menu.DropDownItems.Add("Right",null, viewer.uitvoeren); menu.DropDownItems.Add("Up", null, viewer.uitvoeren); menu.DropDownItems.Add("Down",null, viewer.uitvoeren);

class Hoofdscherm void vergroten (object o, EventArgs ea) { viewer.Location = new Point(10,40); viewer.Size = new Size (w, h); } int w = this.ClientSize.Width – 20; int h = this.ClientSize.Height – 50; void afsluiten (object o, EventArgs ea) { this.Close(); }

Methoden BitMap nclass BitMap uconstructorBitMap, BitMap upropertiesBreedte, Hoogte upunten zettenveranderKleur, vraagKleur uschuivenLeft, Right, Up, Down ubewerkenClear, Invert, Bold, Outline combineer game of lifeLife, buren

class BitMap public BitMap ( int w, int h ) { } vakjes = new bool [w, h]; public BitMap ( BitMap ander) { } public void verander ( int x, int y, bool b ) { } public bool vraag ( int x, int y ) { } vakjes[x, y] = b; return vakjes[x, y] ; vakjes = new bool [ander.Breedte, ander.Hoogte]; this.Kopieer(ander); public int Breedte { } get { return vakjes.GetLength(0); } property

class BitMap void combineer ( Bitmap ander { this. verander (x, y, ); for (int x=0; this.Breedte; x++) for (int y=0; y<this.Hoogte; y++) this.vraag(x,y)ander.vraag(x,y)comb (,) comb),Functie } void Clear ( ) { this.combineer(this, (a,b)=>false ); } void Invert ( ) { this.combineer(this, (a,b)=>!a ); } void Kopieer(Bitmap ander) { this.combineer(ander, (a,b)=>b ); } delegate bool Functie (bool, bool) ; nieuwe expressie: naamloze functie nieuwe type-declaratie: het type van een functie

class BitMap public void Left ( ) { } this.verander( x-1, y, this.vraag(x,y) ); for (int y=0; y<this.Hoogte; y++) for (int x=0 ; x<this.Breedte; x++) 1 { this.verander( this.Breedte-1, y, false ); }

class BitMap public void Right ( ) { } this.verander( x, y, this.vraag(x-1,y) ); for (int y=0; y<Hoogte; y++) for (int x=0 ; x<Breedte; x++) Breedte-1; x>0; x-- ) { this.verander( 0, y, false ); }

class BitMap public void Bold ( ) { BitMap ander; ander = new BitMap(this); ander. Left ( ); this. combineer (ander, (a,b)=>a||b ); ander = new BitMap(this); ander. Down ( ); } this. combineer (ander, (a,b)=>a||b );

class BitMap public void Outline ( ) { BitMap ander; ander = new BitMap(this); ander. Left ( ); ander. Down ( ); } this. combineer (ander, (a,b) => a != b );

class BitMap public void Life ( ) { BitMap oud; oud = new BitMap(this); this. verander (x, y, } int n = oud. buren(x,y); n==3 || n==2 && oud.vraag(x,y) ); for (int y=0; y<Hoogte; y++) for (int x=0; x<Breedte; x++) { }

class BitMap public int buren (int x, int y ) { int xl = x-1; int xr = x+1; int yb = y-1; int yo = y+1; return n; int n = 0; if ( this.isZwart(xl,yb) ) n++; if ( this.isZwart(x,yb) ) n++; if ( this.isZwart(xr,yb) ) n++; if ( this.isZwart(xl,y ) ) n++; if ( this.isZwart(xr,y ) ) n++; if ( this.isZwart(xl,yo) ) n++; if ( this.isZwart(x,yo) ) n++; if ( this.isZwart(xr,yo) ) n++; if (xl<0) xl += Breedte; if (xr>=breed) xr -= Breedte; if (yb<0) yb += Hoogte; if (yo>=hoog) yo -= Hoogte; xl xr yb yo

Game of Life meer-cellig “wezen” loopt! stabiel patroon

Methoden BitmapControl nclass BitmapControl : UserControl uBitmapControl uteken// eventhandler voor Paint uklik// eventhandler voor MouseClick ustarten, stoppen // voor animatie-menu uuitvoeren // voor andere menu-keuzes membervariabele: Bitmap model;

class BitmapControl { Bitmap model; public BitmapControl ( ) { } model = new Bitmap(20, 20); this. Paint += teken; this. MouseClick += klik;

class BitmapControl void teken ( object o, PEA pea ) { gr. FillRectangle (br, x, y, 1, 1); } Brush br; if (model.vraag(x,y)) br = Brushes.Red; elsebr = Brushes.White; for (int y=0; y<Hoogte; y++) for (int x=0; x<Breedte; x++) { } int d = this. Diameter; x*d, y*d, d, d );x*d+1, y*d+1, d-1, d-1 ); this. lijnen (gr, d); Graphics gr = pea.Graphics;

class BitmapControl public int Diameter { Size s = this. ClientSize; s.Width / model.Breedte return s.Height / model.Hoogte Math. min (, ); } get { }

class BitmapControl private void lijnen ( Graphics gr, int d) { // horizontale lijnen } // verticale lijnen Pen p = Color.Blue; gr. drawLine ( p, 0, y*d, model.Breedte*d, y*d ); for (int y=0; y <= Hoogte; y++) gr. drawLine ( p, x*d, 0, x*d, model.Hoogte*d ); for (int x=0; x <= Breedte; x++)

class BitmapControl void klik ( object o, MouseEventArgs mea ) { } mea. X mea. Y / diam int diam = this. Diameter; model. verander (, ); mea.Button==MouseButtons.Left this. Invalidate ( );

class BitmapControl void uivoeren ( object sender, EventArgs ea ) { } this. Invalidate ( ); String keus = sender.ToString(); if (keus=="Clear") this.model.Clear(); if (keus=="Left") this.model.Left(); if (keus=="Right") this.model.Right(); if (keus=="Up") this.model.Up(); if (keus=="Down") this.model.Down(); if (keus=="Step") this.model.Step();

class BitmapControl void starten ( object o, EventArgs ea ) { } void stoppen ( object o, EventArgs ea ) { } Thread animatie; animatie = new Thread(animatieFunctie); animatie. Start( ); void animatieFunctie( ) { } this.model.Life( ); this.Invalidate( ); while (true ) { } Thread.Sleep(50); (animatie!=null) { animatie = null;