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

Slides:



Advertisements
Liknande presentationer
Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Advertisements

1 2I1049 Föreläsning 8 KTH-MI Peter Mozelius Grafiska gränssnitt, Java interface och händelsehantering.
Repetition av språket Java
Stefan Möller OOP F16:1 OOP Objekt-orienterad programmering Föreläsning 16 Grafiska användargränssnitt, GUI Ytor Komponenter Layout-managers Lyssnare.
Next previous Frameworks. Konstruktion av fönster, gränssnitt och användning av grafik i Java OOMPA 2000 Föreläsning 15 Innehåll, kort om: Frameworks Grafik.
Next previous GRIP 2000 Föreläsning 4 Innehåll Inmatningstyper Modeller för interaktiva applikationer Observer MVC Lyssnare Pluggbara komponenter Exempel.
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Objektorienterad utveckling
Klassarv och inkapsling
Repetition av objektorientering
Objektorienterad utveckling Lektion 2 Objekt, överlagring, överskuggning, klasshierarkier och dynamisk bindning KTH Peter Mozelius.
TNSL04 – IT grundkurs. VT2008. Föreläsning nr 4, torsdag 28 feb. kl Klasser, objekt, metoder, parametrar, konstruktorer, samlingar och tillstånd.
TNSL04 – IT grundkurs. VT2009. Föreläsning nr 4, måndag 2 mars. kl Snabbrepris av grundbegreppen: Klasser, objekt, konstruktorer, anrop till konstruktorer,
Metoder i java Det finns två typer av metoder i java
Övning5 Så här ska man tänka när man löser uppgift 1 på tentan lite grafik, så här söker man genom en lista så här läser man från en fil i java lösa uppgift.
Programmeringsteknik för K och Media
Att programmera i språket Java
1 ITK:P1 Föreläsning 4 Grafiska gränssnitt och händelsehantering DSV Peter Mozelius.
1 ITK:P1 Föreläsning 6 Layoutmodeller i Java DSV Marie Olsson.
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
Exception Handling Kapitel 9. Agenda Exceptions try, throw and catch Skapa en egen exception-klass Multipla throw / catch Slänga vidare en exception Olika.
Streams and File I/O Kapitel 10. Agenda Exceptions Textfiler Skriva Appenda Läsa File Sökvägar.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Programmering i C# 3. Klasser.
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Next previous Föreläsning ii - Mer om Java bla this och konstruktorer Av Björn Eiderbäck Adress: Rum 1641, 6tr NADA Osquars Backe.
MSPEL Föreläsning 2 Text, teckensnitt och grafiska komponenter
Metodik för problemlösning Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar.
1 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson.
Föreläsning 15 (16) Introduktion till Swing. Historik (java.awt) JDK 1.0 – AWT (Abstract Window Toolkit) Paket för gränssnittsprogrammering Har en del.
OOP F6:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList toString() – metoden.
1 MSPEL Lektion 2 DSV Peter Mozelius Spel i Java applets.
1 ITK:P1 Föreläsning 8 Multimedia för spelkonstruktion DSV Peter Mozelius.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Next previous GRIP 2000 Föreläsning 4 Innehåll Inmatningstyper Modeller för interaktiva applikationer Observer MVC Lyssnare Pluggbara komponenter Exempel.
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
TILLÄMPAD DATALOGI (TILDA) Övning 3
OOP F14:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 14 Repetition Tips inför inlämningsuppgift 2.
1 ITK:P2 F6 Sortering av generiska containerklasser DSV Peter Mozelius.
PROGRAMMERINGSTEKNIK Övningsgrupp 3 Marcus Hjelm
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
0. Kod, Klassdiagram och Sekvensdiagram import java.awt.event.*; import javax.swing.*; import java.awt.*; public class TwoThreads implements ActionListener.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
Class VattenKraft{ public static void main(String[] args){ int num=150; int i, totflöde, maxflöde; int[] fall = new int[num]; //vattenflödet i vattenfallen.
ITK:P2 F8 Strömmar och filhantering DSV Peter Mozelius.
Föreläsning 9 Arv kap 8.1 Interface kap 9.2 Grafiska användargränssnitt (GUI) kap 10.
2I1073 Lektion 1 KTH-MI Peter Mozelius XHTML, stilmallar och Javascript.
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
Föreläsning 3 Villkorssatsen if Slingor: while och for Felsökning.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
TILLÄMPAD DATALOGI (TILDA) Övning 2
TILLÄMPAD DATALOGI (TILDA) Övning 2
Programmeringsteknik för K och Media
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
OOP&M - teori1 OOP del III– Föreläsning vecka 9 GUI Containers och LayoutManagers (Inner classes)
OOP&M - teori1 OOP&M del III– Föreläsning 3 vecka 6 Kontrollkomponenter (Components) Som Applets.
OOP&M - teori1 OOP del III– Vecka 10 Händelser Kontrollkomponenter (Components) Featuring: Applets.
DA7351 Programmering 1 Skapa och placera en komponent i en container Layoutmanagers Applet Händelser och lyssnare Föreläsning 15.
Föreläsning 15: Exceptions & lite swing, gränssnitt
Föreläsning 14: Grafik & mera händelsehantering
Föreläsning 13: Swing (GUI), händelser, timer
Föreläsning 8: Exempel och problemlösning
Föreläsning 12: Exempel och problemlösning
Repetitionsföreläsning 2: Quiz & problemlösning med swing
Repetitionsföreläsning 1: Lite rekursion & problemlösning
Presentationens avskrift:

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

Lektion 4 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;

Lektion 4 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);

Lektion 4 omgång = 0; användarVinst = 0; datorVinst = 0; skapaGränssnitt(); }//konstruktor public void skapaGränssnitt() { Container container = getContentPane();

Lektion 4 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);

Lektion 4 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");

Lektion 4 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);

Lektion 4 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);

Lektion 4 container.add("Center",resultatPanel); //gör fönstret synligt och stängbart setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); }//skapaGränssnitt

Paus

Lektion 4 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

Lektion 4 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); }

Lektion 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); }

Lektion 4 //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!");

Lektion 4 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"); }

Lektion 4 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

18 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?

19 En snabbskiss på en frågesport Interfacet ActionListener för användarkommunikation

20 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?

21 En snabbskiss på ett Memory