Spelprogrammering med bilder och ljud

Slides:



Advertisements
Liknande presentationer
Grunder i PowerPoint 2000 Skapa en ny presentation Rita egna objekt
Advertisements

1 Windows programmering (2) Borland C++ Builder 4/5 Modsoft Ab Kent Westerholm.
II130V Konstruktion av webbsidor Välkommen till föreläsning 3 September 2007.
Introduktion till CSS CSS1 - EXEMPEL. Denna webbsida vill vi kopiera och förbättra.
2D1311 Programmeringsteknik med PBL
Programmeringsteknik
Programmeringsteknik Föreläsning 13 Skolan för Datavetenskap och kommunikation.
Programmeringsteknik Föreläsning 18 Skolan för Datavetenskap och kommunikation.
Programmeringsteknik Föreläsning 6 Skolan för Datavetenskap och kommunikation.
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Repetition inför provet
2D1311 Programmeringsteknik med PBL Föreläsning 7 Skolan för Datavetenskap och kommunikation.
Föreläsning 6 Länkade lista Komplexitet Linjärsökning & binärsökning
Metoder i java Det finns två typer av metoder i java
Föreläsning 4 Python: mera om funktioner och parametrar
2D1311 Programmeringsteknik med PBL Föreläsning 6 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 7 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 4 Skolan för Datavetenskap och kommunikation.
Föreläsning 9 Sökning, sortering, grafikprogrammering.
Programmeringsteknik för K och Media
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
Föreläsning 8 Appletprogram/fristående grafiska program Rita linjer, rektanglar mm Skriva text Byta färg Appletprogram html.
1 Föreläsning 8 Grafik AWT. 2 Grafik Frame använder man för att skapa ett fönster Button använder man om man vill ha en knapp att trycka på Canvas är.
CSS3 Några exempel på nyheter i CSS3. Basdokument – som används i flertalet exempel Pingvinsång Fyra små pingviner, klädda i svart och.
i olika programmeringsspråk
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Pathfinding. –Vad är det? –Sökning från A till B.
int res2=Math.max(tal1,tal2);
Programmeringsteknik
Föreläsning 8, kapitel 8 Förbättra strukturen med arv Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
Vektorer (klassen Vector) Sortering
Klicka på Aktivera redigering i meddelandefältet
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Programmeringsteknik för Media1 & K1
1. En infrastruktur för programutveckling
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
DD1311 P ROGRAMMERINGSTEKNIK MED PBL Föreläsning 9 Skolan för Datavetenskap och kommunikation.
CSS del 3 Kvarnbrinkx Medietyper En XHTML-sida kan ha olika CSS-filer för olika medier! Definieras med attributet “media” i link- taggen,
Integrera mp3 i hotpotatoes.  Se hur test-övningen kommer att se ut: N1_Audio_01.htm
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Namnrum, räckvidd och rekursion Linda Mannila
1 ITK:P1 Föreläsning 8 Multimedia för spelkonstruktion DSV Peter Mozelius.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 8 Programmeringsteknik och Matlab DD1312 Klassmetoder Egen modul, Self Metoderna: __str__, __lt__,… Meddelande Arv, Överlagring av metoder,
Introduktion till klasser, objekt och BlueJ Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
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.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
1. Ett problem/uppgift.
UTVECKLING MED RAMVERKET.NET Marcus Medina. Dagens visdomsord ”Google is your friend”
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.
Programmeringsteknik Föreläsning 8 Skolan för Datavetenskap och kommunikation.
Föreläsning 7 Programmeringsteknik och Matlab DD1315 Kommandotolk parametrar Klass Instans Metod konstruktor.
1 Föreläsning 11 Grafisk användargränssnitt med Tkinter.
Föreläsning 9 Arv kap 8.1 Interface kap 9.2 Grafiska användargränssnitt (GUI) kap 10.
Programmeringsteknik Föreläsning 17 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 4 Skolan för Datavetenskap och kommunikation.
1 Föreläsning 8 Mer om klasser och objektorientering.
7. Delegerare och notifierare
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Programmeringsteknik
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Föreläsning 9 Sökning, sortering, grafiska gränssnitt (GUI)
DA7351 Programmering 1 Skapa och placera en komponent i en container Layoutmanagers Applet Händelser och lyssnare Föreläsning 15.
Föreläsning 5: Att använda klasser & objekt
Introduktion till CSS CSS1 - EXEMPEL.
JULEN Varför firar man jul inom kristendomen? (Svårt)
Komma igång med Scratch
Presentationens avskrift:

Spelprogrammering med bilder och ljud Föreläsning 10 Spelprogrammering med bilder och ljud

Grafikpaket Pygame LiveWires Pygame är ett grafikpaket (en samling moduler). LiveWires är ett extralager som gör det enklare att använda Pygame. Appendix A i boken beskriver LiveWires. Pygame LiveWires

Vad finns i LiveWires? Modulerna games och color games innehåller klasserna Screen (grafikfönstret) Sprite (figurer som kan flytta sig i grafikfönstret) Text (text i grafikfönstret) Message (text som bara syns en stund) Animation (en samling bilder som bildar en film) Mouse (tar emot inmatning från musen) Keyboard (tar emot tangenttryckningar) Music (laddar och spelar musikfiler) color innehåller färgkonstanter

moving_pan.py Ett exempel från kap 11, med en Sprite som styrs av användaren (med musrörelse): Grafikfönstret öppnas En bakgrundsbild laddas in Figuren "Pan" (en Sprite) skapas Inmatning från musen tas emot för att styra Pan

# Moving Pan # Demonstrates mouse input from livewires import games games.init(screen_width=640, screen_height=480, fps=50) class Pan(games.Sprite): """ A pan. Controlled by the mouse. """ def update(self): """ Move to mouse coordinates. """ self.x = games.mouse.x self.y = games.mouse.y uppdateringshastighet ärver attribut och metoder ger muspekarens koordinater

def main(): wall_image=games.load_image("wall.jpg", transparent = False) games.screen.background = wall_image pan_image = games.load_image("pan.bmp") the_pan = Pan(image = pan_image, x = games.mouse.x, y = games.mouse.y) games.screen.add(the_pan) games.mouse.is_visible = False games.screen.event_grab = True games.screen.mainloop() main() muspekaren håller sig innanför grafikfönstret

Klassen Sprite Klassen Sprite har inbyggda attribut, t ex: image (bilden) x och y (positionen) dx och dy (hastighet i x- och y-led) right, left, top, bottom (bildkanternas position) och inbyggda metoder, t ex: update (anropas automatiskt i varje steg) destroy (tar bort alla referenser till objektet) overlapping_objects (lista med överlappare)

bouncing_pizza.py Annat exempel från kap 11, med en Sprite (pizzan) som styrs av programmet: dx och dy sätts till 1 när pizzan skapas vi definierar om pizzans update-metod så att den byter riktning om den kommer till någon av fönsterkanterna

class Pizza(games.Sprite): """ A bouncing pizza. """ def update(self): """ Reverse a velocity component if edge of screen reached. """ if self.right > games.screen.width or self.left < 0: self.dx = -self.dx if self.bottom > games.screen.height or self.top < 0: self.dy = -self.dy

Animationer En Animation är en serie bilder som kan spelas upp som en film. Explosionen i explosion.py i kap 12 är ett exempel. Först skapar man en lista med bildfiler. Sen ett Animation-objekt, med bildlistan, postition och visningsparametrar.

Bildlistan explosion_files = ["explosion1.bmp", "explosion2.bmp",

Animation-objekt explosion = games.Animation( images = explosion_files, x = games.screen.width/2, y = games.screen.height/2, n_repeats = 0, repeat_interval = 5) bildlistan position antal filmvisningar tid mellan successiva bilder

Ljud Ljudfiler måste vara på formatet *.wav Ljudet laddas med metoden load_sound och styrs med metoderna play och stop Exempel: missile_sound = games.load_sound("missile.wav") missile_sound.play(3) Man kan ha upp till åtta ljud igång samtidigt!

Musik Musik fungerar ungefär som ljud, men Det finns bara en musikkanal (motsvaras av objektet games.music) Man kan ladda musikfiler på flera olika format, t ex MP3 och MIDI Exempel: games.music.load("theme.midi") games.music.play(-1) #-1=evigt sound_and_music.py demonstrerar!

Interaktion I spel vill man att objekten ska reagera när dom kommer i kontakt med andra objekt. Sprite har ett attribut overlapping_sprites -en lista med de objekt som överlappar. I astrocrash-programmet definieras en klass Collider som ska hantera krockar.

class Collider(games.Sprite): def update(self): """ Check for overlapping sprites. """ super(Collider, self).update() if self.overlapping_sprites: for sprite in self.overlapping_sprites: sprite.die() self.die() def die(self): """ Destroy self and explode. """ new_explosion = Explosion(x = self.x, y = self.y) games.screen.add(new_explosion) self.destroy()

Programutveckling Alla större program i boken har utvecklats på följande sätt: Skriv först en algoritm för programmet. Skriv en superenkel förstaversion av programmet och provkör den. När den fungerar… Bygg på med lite till och provkör igen. Upprepa tills programmet är klart (astrocrash finns i åtta versioner i bokens kapitel 12). Detta kallas prototypprogrammering!

Fortsättningskurser Nästa obligatoriska kurs från oss är DN1214 Numeriska metoder i höst Valfria datakurser att fortsätta med är DD1320 Tillämpad datalogi, följt av t ex DD1385 Programutvecklingsteknik DD1334 Databasteknik Välkomna!

Kursenkät Kursenkäten finns på kursens webbsida, under rubriken "Kursanalys" Berätta för oss hur vi skulle kunna göra kursen bättre till nästa år!