Sovelmat. Janne Käki

Samankaltaiset tiedostot
Java ja grafiikka. Ville Sundberg

Luento 6. T Ohjelmoinnin jatkokurssi T1 & T Ohjelmoinnin jatkokurssi L1. Luennoitsija: Otto Seppälä

Javan perusteita. Janne Käki

JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++

H T M L eli kuinka laadin itselleni päheät kotisivut. Janne Käki

Ohjelmoinnin perusteet Y Python

Harjoitustyö (TKO_2023)

JAVA-OHJELMOINTI 3 op A274615

Luokat ja oliot. Ville Sundberg

4. Luokan testaus ja käyttö olion kautta 4.1

H T M L eli kuinka laadin itselleni päheät kotisivut. Janne Käki

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Luentomateriaali. Informaatioverkostot: Studio 1. Janne Käki MUUTTUJAT SWING POLYMORFISMI UML-KAAVIOT SOVELMAT SILMUKAT POIKKEUKSET JAVADOC

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

Ohjelmoinnin peruskurssien laaja oppimäärä

Mikä yhteyssuhde on?

Jypelin käyttöohjeet» Ruutukentän luominen

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Olio-ohjelmointi Käyttöliittymä

Kuvat. 1. Selaimien tunnistamat kuvatyypit

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

1 Tehtävän kuvaus ja analysointi

Tee html-sivu, jossa on yllä olevat kaksi taulukkoa.

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Olio-ohjelmointi Javalla

Metodien tekeminen Javalla

14. Poikkeukset 14.1

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet

YHTEYSSUHDE (assosiation)

Ohjelmointi 2 / 2010 Välikoe / 26.3

Code Camp for Girls. Sanna Nygård. Lokakuussa

9. Periytyminen Javassa 9.1

Pakkauksen kokoaminen

Ohjelmoinnin jatkokurssi, kurssikoe

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

9. Periytyminen Javassa 9.1

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Osio 4: Tietovirrat. Properties- eli ominaisuustiedostot Logger: lokitietojen käsittely

7. Oliot ja viitteet 7.1

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä

HTML5 video, audio, canvas. Mirja Jaakkola

Muusta kuin vesisioista

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

Olio-ohjelmointi Virhetilanteiden käsittely

COLLABORATE - OPISKELIJAN OPAS

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).

Graafinen käyttöliittymä, osa 3

14. Poikkeukset 14.1

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

8. Näppäimistöltä lukeminen 8.1

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

Tapahtumapohjainen ohjelmointi

Osio 4: Graafinen käyttöliittymä

Rajapinta (interface)

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

JavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko

Poikkeustenkäsittely

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Ohjelmoinnin peruskurssien laaja oppimäärä

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Pakkauksen kokoaminen

Kahoot! Kirjautuminen palveluun. Sinikka Leivonen

QT tyylit. Juha Järvensivu 2008

GRAAFISEN KÄYTTÖLIITTYMÄN OHJELMOINTI JAVA SWING

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Johdatus L A TEXiin. 7. Taulukot ja kuvat. Dept. of Mathematical Sciences

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Olio-ohjelmointi Suunnittelumallit Adapter ja Composite. 1. Adapter

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Suunnittelumalleja, MVC. Juha Järvensivu 2008

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

CSS-kielen avulla määritellään HTML-dokumentin tyyli. CSS avulla voidaan tarkemmin määritellä eri elementtien ominaisuuksia.

Ohjelmoinnin peruskurssi Y1

Listarakenne (ArrayList-luokka)

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2007

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

Graafisen käyttöliittymän ohjelmointi

Ohjelmointi 2, välikoe

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Oliot viestivät metodeja kutsuen

Java layoutit. Juha Järvensivu 2007

12. Näppäimistöltä lukeminen 12.1

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

Luento 3: 3D katselu. Sisältö

KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Visma Fivaldi. Ohjeet Java web startin ja HTML5-työkalun aktivointiin

Vesisika. metsiemme työmyyrä.

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Transkriptio:

Sovelmat Janne Käki 24.11.2006

Sovellus extends JFrame public static void main(string[] args), joka tyypillisesti vain luo kehysluokan ilmentymän luontimetodi Sovelma extends JApplet ei main-metodia, ei (välttämättä) luontimetodiakaan public void init() - selain kutsuu automaattisesti - alustaa esimerkiksi käyttöliittymän lisäksi: start(), stop(), destroy()

Sovelman ajaminen appletviewer-ohjelmassa tai selaimessa, selaimien ongelmana sovelmakoodin jääminen välimuistiin (muutokset eivät näy ilman selaimen uudelleenkäynnistystä) Molemmat tarvitsevat HTML-sivun, jolle sovelma sijoitetaan Tulostukset ja virheilmoitukset tulevat joko terminaaliin (appletviewerillä) tai ns. Java-konsoliin (selaimella) <html> <head> <title>kolee appletti</title> </head> <body> <table width= 100% 100% height= 100% 100% border= 0 > <tr> <td align= center center valign= middle middle > </td> </tr> </table> </body> </html> <applet code= KoleeAppletti.class KoleeAppletti.class width= 400 400 height= 300 300 > </applet>

Appletviewer Unix-terminaalissa ja Windowsin komentorivillä: appletviewer sivujokasisaltaaappletin.html XEmacsissa:

Java-konsoli

Sovelma vs. sovellus TÄTÄ ET NÄHNYT LUENNOLLA Sovelmalla kiinteä ikkunan koko, sovelluksella joustava Sovelma ei saa kirjoittaa mihinkään tiedostoon, sovellus saa ns. servletit (palvelinsovelmat eli palvelmat )) saavat temmeltää jossain määrin vapaammin Jotkin asiat on tehtävä sovelmissa hieman monimutkaisemmin, esimerkkinä kuvan lataaminen javax.swing.imageicon-olioksi: sovellus ImageIcon kuva = new ImageIcon( mursu.png mursu.png ); sovelma ImageIcon kuva = null; try { kuva = new ImageIcon(this.getImage( new java.net.url(this.getcodebase(), mursu.png ))); } catch (java.net.malformedurlexception e) { e.printstacktrace(); }

Grafiikkaohjelmointi Janne Käki 24.11.2006

Swing-komponentin piirtäminen Jokainen komponentti vastaa siitä, miten se piirretään ruudulle Piirtojärjestelmä vastaa siitä, milloin tämä tapahtuu komponentti.repaint() kutsu tätä tarvittaessa Piirtojärjestelmä korvaa tämä tarvittaessa omalla toteutuksella paintcomponent(graphics g) komponentti.paint(graphics g) paintborder(graphics g) paintchildren(graphics g)

Grafiikkakonteksti java.awt.graphics Mahdollistaa piirtämisen tiettyyn kontekstiin, esimerkiksi näytöllä olevaan paneeliin tai koneen muistissa olevaan kuvaan. paintcomponent-metodi saa tällaisen piirtojärjestelmältä valmiina. Sisältää metodeja, joiden avulla voidaan piirtää mm. viivoja, ovaaleja, monikulmioita, tekstiä sekä muistiin ladattuja kuvia. java.awt.graphics2d Edellisen aliluokka, jossa uusina ominaisuuksina mm. erityisten kuvio- olioiden piirtäminen sekä affiinit koordinaatistonmuunnokset. Jokainen Graphics-olio on yleensä pohjimmiltaan myös Graphics2D-olio.

Piirtäminen tapahtuu metodien avulla: tapahtuu Graphics-luokan perustuu komponentin omaan koordinaatistoon: public void paintcomponent(graphics g) { (0, 0) x super.paintcomponent(g); g.setcolor(this.koleeväri); g.drawoval(-20, -40, 100, 50); g.fillrect(80, 35, 20, 200); g.setcolor(this.getforeground()); g.setfont(this.päheefontti); g.drawstring( hähä hähä,, 10, 150); hähä } g.drawimage(this.kuva, 100, 100, null); y (width-1, height-1) Myös komponentin rajojen ulkopuolelle voi piirtää,, mutta nämä osat eivät näy ruudulla.

Kaksoispuskurointi java.awt.image javax.swing.jpanel Jos komponentti piirretään osissa, piirtämistä ei kannata tehdä suoraan näytölle, vaan koneen muistissa näkymättömissä olevaan kuvaan ( bufferiin( bufferiin ). Valmis kuva piirretään sitten ruudulla näkyvään komponenttiin yhtenä kokonaisuutena, jolloin vältetään kuvan välkkyminen ja eri osien eriaikainen piirtyminen. Swing-komponentit ovat kuitenkin oletusarvoisesti valmiiksi kaksoispuskuroituja. On siis turvallista piirtää suoraan niihin.

Kuvan piirtäminen g.drawimage(image img, int x, int y, ImageObserver obs); Mistä se kuva saadaan? Mitäs laitan koordinaateiksi? Mikä kumma tää nyt sit on? Helpoin tapa: 1. Luo ImageIcon-olio haluamastasi kuvatiedostosta. 2. Kysy Kysy Image Image-olio siltä. On myös muita, vaikeampia tapoja. Komponentin sen pisteen, johon haluat sijoittaa kuvan vasemman yläkulman. Saavat olla myös negatiivisia. Joku, joka odottelee (tarvittaessa) kuvan latautumista muistiin. Jos käytät ImageIcon:ia kuvan hakemiseen, tämä voi hyvin olla null null.

Kuvan piirtäminen Graphics2D:llä g2.drawimage(image img, AffineTransform xform, ImageObserver obs); Mahdollistaa ns. affiinien muunnosten tekemisen piirrettävälle kuvalle. Kuvaa voi esimerkiksi pyöritellä vapaasti. Muunnokset esitetään 3 x 3 -matriisina, java.awt.geom.affinetransform. Ohjelmoijan ei kuitenkaan välttämättä tarvitse juuri vaivata päätään matriisialgebralla riittää, että tietää mitä haluaa (siirtää, kääntää, skaalata, vääntää) ja kuinka paljon :)

Geometriset muunnokset Siirto (translation) Viistoutus (shearing) Kierto (rotation) Skaalaus (scaling) Peilaus (mirroring)

MVC-arkkitehtuurimalli MODEL ohjelman tila visualisoidaan käyttäjälle käyttäjän toimenpiteet muuttavat ohjelman tilaa VIEW CONTROLLER käyttäjä reagoi näkemäänsä käyttöliittymän välityksellä

Graafinen vuorovaikutteinen peli x dsfa y ohjelman tila visualisoidaan käyttäjälle käyttäjän toimenpiteet muuttavat ohjelman tilaa MODEL CONTROLLER VIEW käyttäjä reagoi näkemäänsä käyttöliittymän välityksellä

dsfa x y MODEL VIEW CONTROLLER Pelimaailman malli: paikat, olennot, esineet Pelimaailman (tai sen tietyn osan) visualisaatio Muutoksen aiheuttaja, pelimoottori Muistaa kuka missäkin on, mitä tekemässä, millaisessa kunnossa, ja niin edelleen Piirtää pelin grafiikan (ja toistaa musiikin, ääni- tehosteet, yms.) Kuuntelee pelaajan antamia komentoja ja reagoi niihin Pitää yllä pelaajasta riippumattomia pelitapahtumia