ITK:P1 Lektion 4. Lektion 4. Lektion 4. Att implementera en spelidé i Java. DSV Peter Mozelius



Relevanta dokument
ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter

Mer om grafiska komponenter. Händelsestyrda program

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se

Laboration 15 Grafiskt användargränssnitt

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

Föreläsning 3: Händelsestyrda program och användargränssnitt

Föreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers

Lösningsförslag till tentamen

Lösningsförslag till tentamen

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 18

Föreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers. Exempel: FlowLayout. Klassen FlowLayout

2I1073 Lektion 2. Lektion 2a. Lektion 2a. Servlets, säkerhet, och filhantering. import java.io.*; import javax.servlet.*; import javax.servlet.http.

ITK:P1 Föreläsning 8. Verktyget Javadoc. Kommentarer för Javadoc. Multimedia för spelkonstruktion

Lösningsförslag till tentamen

Lösningsförslag till tentamen

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

Lösningsförslag till tentamen

Malmö högskola 2007/2008 Teknik och samhälle

lgammal2.txt // Lösningar till gammal tentamen // Uppgift 1 a

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

Repetitionsföreläsning 2: Quiz & problemlösning med swing Inget nytt material.

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering

Grafiskt användargränssnitt (GUI-Graphical User Interface) intro Komponenter

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

kl

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Föreläsning 15 (16) Historik (java.awt) Historik (javax.swing) Introduktion till Swing

Lösningsförslag till tentamen

Föreläsning 13: Swing (GUI), händelser, timer

Java-concept och Swing. Swing low, sweet chariot

Lektion Händelsehanterare

Rita Egna Bilder, Timer

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 7 Erik Nilsson, Institutionen för Datavetenskap, LiU

Properties. Användbara metoder som kan anropas i propertychanged:

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

Föreläsning 14: Grafik & mera händelsehantering

Laboration 24 Databasen MySQL och java

Laboration 4: Game of Life

Lösningsförslag till tentamen

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

MVC-mönstret. model-view-control i Swing

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP och DSV1:P2

LYCKA TILL!!! TENTAMEN I Programmeringsteknik F1. Var vänlig och läs detta: CTH TIN 211. DATAVETENSKAP Göteborg ( ) TENTAMEN

Inlämningsuppgift 1 Programmeringsteknik MN1 vt02

Grafiska användargränsnitt i Java. Föreläsning 7 Innehåll. Använda klasspaketet Swing. Klasspaket i Java. Grafiska användargränsnitt i Java

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP och DSV1:P2

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h

LiTHehack? Här? lithehack se koma Tisdagar och torsdagar

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Objektorienterad Programmering DAT043. Föreläsning 5 29/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Lösningsförslag till tentamen

Tentamen FYTA11 Javaprogrammering

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Tentamen i Objektorienterad programmering

Lösningsförslag till tentamen

Modellsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

Swing. MER Java Foundation Classes (JFC) Hur lära sig? Vad är farorna. LayoutManagers. Exempel på några av komponenterna

Trådar. Motivering. Många program måste kunna hålla på med flera saker samtidigt, till exempel. fleranvändarsystem.

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

PROGRAMMERINGSTEKNIK för F1 och TM1 (TIN212)

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Lösningsförslag till tentamen

Grafiska komponenter.

Tentamen i Objektorienterad programmering E

Föreläsning 11. Att rita egna bilder.

Lösningsförslag till tentamen

Tentamen i Objektorienterad programmering E

Swing. MER Java Foundation Classes (JFC) Vad är farorna. Hur lära sig? LayoutManagers. Exempel på några av komponenterna

Fönsterhantering, grafik

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

Lösningar för tenta 3 DAT043,

Lösningar till tentamen i EDAF25

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Fortsättningskurs i programmering F 5. GUI händelsehantering - undantagshantering Hugo Quisbert AWT. Paket för hantering av grafik

Projekt 2 XL. Observer-mönstret

F7: Användargränssnitt, interaktivitet och grafik. Carl Nettelblad

Lösningsförslag till tentamen

GUI-program med Swing

Malmö högskola 2007/2008 Teknik och samhälle

Frames, menyer och GUI-program

Föreläsningar nov 19, nov 20 v 47.

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 00 - juni - 17 Tentamen i Objektorientering och Java Skrivtid 5 h

Tentamen i Objektorienterad programmering

Tentamen. Lösningsförslag

Laboration 13, Arrayer och objekt

Arv och polymorfi. Lite terminologi; Basklass eller superklass: En klass som fungerar som bas för vårt arv. Vi skapar nya klasser utifrån den.

Transkript:

ITK:P1 Att implementera en spelidé i Java DSV Peter Mozelius import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Lektion4 extends JFrame implements ActionListener { final int STEN = 0, SAX = 1, PÅSE = 2; private int användarval, datorval, omgång; private int användarvinst, datorvinst; private JButton sten, datorsten; private JButton sax, datorsax; private JButton påse, datorpåse; private JPanel användarpanel, datorpanel, resultatpanel; private JLabel infolabel, resultatlabel; private JTextField användarresultat, datorresultat; Lektion4() { super("lektionsexempel 4"); setsize(400, 200); 1

omgång = 0; användarvinst = 0; datorvinst = 0; skapagränssnitt(); //konstruktor public void skapagränssnitt() { Container container = getcontentpane(); datorpanel = new JPanel(); datorpanel.setlayout(new GridLayout(1,4)); datorpanel.add(new JLabel("Datorn väljer:", JLabel.CENTER)); datorsten = new JButton("STEN"); datorsax = new JButton("SAX"); datorpåse = new JButton("PÅSE"); datorpanel.add(datorsten); datorpanel.add(datorsax); datorpanel.add(datorpåse); Container.add("North", datorpanel); användarpanel = new JPanel(); användarpanel.setlayout(new GridLayout(1,4)); användarpanel.add(new JLabel("Du väljer här:", JLabel.CENTER)); sten = new JButton("STEN"); sax = new JButton("SAX"); påse = new JButton("PÅSE"); 2

sten.addactionlistener(this); sax.addactionlistener(this); påse.addactionlistener(this); användarpanel.add(sten); användarpanel.add(sax); användarpanel.add(påse); container.add("south", användarpanel); resultatpanel = new JPanel(new GridLayout(2,2)); resultatpanel.setbackground(new Color(255,204,0)); användarresultat = new JTextField(" Dina vinster: "); resultatpanel.add(användarresultat); datorresultat = new JTextField(" Datorns vinster: "); resultatpanel.add(datorresultat); infolabel = new JLabel("Börja spela genom att ", JLabel.RIGHT); resultatpanel.add(infolabel); container.add("center",resultatpanel); //gör fönstret synligt och stängbart setvisible(true); setdefaultcloseoperation(exit_on_close); //skapagränssnitt 3

Paus public void actionperformed(actionevent e) { int val; if (e.getsource() == sten) { val = STEN; else if (e.getsource() == sax) { val = SAX; else { val = PÅSE; evaluera(val); //actionperformed public void evaluera(int val){ användarval = val; datorval = (int)(math.random() * 3); //visa datorns val if (datorval == STEN) { datorsten.setbackground(color.red); datorsax.setbackground(color.lightgray); datorpåse.setbackground(color.lightgray); 4

else if (datorval == SAX) { datorsten.setbackground(color.lightgray); datorsax.setbackground(color.red); datorpåse.setbackground(color.lightgray); else { datorsten.setbackground(color.lightgray); datorsax.setbackground(color.lightgray); datorpåse.setbackground(color.red); //visa resultatet resultatlabel.sethorizontalalignment(0); infolabel.sethorizontalalignment(0); infolabel.settext("resultat omgång " + ++omgång +":"); if (användarval == datorval) resultatlabel.settext("oavgjort, ingen får poäng!"); else if(användarval == STEN && datorval == SAX användarval == SAX && datorval == PÅSE användarval == PÅSE && datorval == STEN) { resultatlabel.settext("du vinner! En gång till?"); användarresultat.settext(" Dina vinster: " + ++användarvinst + "st"); 5

else { resultatlabel.settext(" Du förlorade! Gör ett nytt val!"); datorresultat.settext(" Datorns vinster: " + ++datorvinst + "st"); //evaluera public static void main(string[] arg) { new Lektion4(); //Lektion4 Vad har ni för spelidéer? Har någon av er börjat fundera på spelidéer till inlämningsuppgiften? Två av våra standardförslag är: 1. Frågesport, relativt lätt för betygen upp till C 2. Memory, svårare och för betygen A och B En snabbskiss på en frågesport En relativt enkel inlämningsuppgift här på P1 att bygga ett javaprogram där användaren svarar på olika frågor enligt de exempel som finns på P1:s hemsida Innan ni sätter igång med programmeringen så finns det mycket att vinna om ni först gör en objektmodellering Förslag på klasser och interface? 18 6

En snabbskiss på en frågesport 19 Interfacet ActionListener för användarkommunikation En snabbskiss på ett Memory En lite knepigare inlämningsuppgift för ett högre betyg är att knåpa ihop ett Memoryspel Svårare problemlösning och mera grafik än i den enklare frågesporten Ett körbart exempel finns på P1:s hemsida Vilka klasser och interface kan man tänka sig? Vilken klass sköter om användarinteraktionen? 20 En snabbskiss på ett Memory 21 7