Metoder og værktøjer til programmering



Relaterede dokumenter
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int wmid, wmevent; programmering med

Systemkald DM Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/ Afleveret af: Jacob Christiansen,

Billedbehandling. Processering af digitale billeder

// Definition af porte og funktioner

MySQL C API. Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere.

ESP30076 임베디드시스템프로그래밍 (Embedded System Programming)

Introduktion til ActionScript

Objektorienteret Programmering

Løsning af skyline-problemet

Processer og tråde. dopsys 1

Libraries i C. Thomas Bøgholm. Marts En kort introduktion. Aalborg Universitet

Kursusarbejde 3 Grundlæggende Programmering

Introduktion til C programmering

Softwareudvikling: Miljøer

Programmering i C Intro og grundlæggende C 5. marts 2007

Embedded controller, almen.

Programmering i C. Lektion december 2008

Komplekse tal og Kaos

Kursusgang 12. Oversigt: Sidste kursusgang Layout-manager Event-håndtering. Design af brugerflader 12.1

DANMARKS TEKNISKE UNIVERSITET

Projekt rapport. for. Zigbee kommunikation

Vejledning til Photofiltre nr.171 Side 1 Lave et postkort i A6 størrelse, hvor LibreOffice Draw bliver brugt til opsætning

Datamaters arkitektur og programmering

TIPS & TRICKS. Erik Wendelboe Nielsen, Econocap. PTC/User 2014

Erklæring af variabler. Void indstil (Indstiller starttidspunkt og måleinterval).

A Profile for Safety Critical Java

StarWars-videointro. Start din video på den nørdede måde! Version: August 2012

Intro til AVR. Mads Pedersen, OZ6HR

Forløb kreativ-kommunikativ toning

Grundlæggende Programmering ITU, Efterår Skriftlig eksamen i Grundlæggende Programmering

GRAFIK OG BILLEDE PORTFOLIO DAN KLESSEN BOOSTING BUSINESS MEDIEGRAFIKER SVENDEPRØVE

C# spil (del 1) - Kom i gang med et simpelt spil

Vejledning til Photofiltre nr. 120 Side 1

Programmering. Udvidet Programmering. Kurserne. Kurset: programmering i sproget Java. Lærerne: Morten Larsen og Peter Sestoft

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

Hvad er Objekter - Programmering

Datatekniker med programmering som speciale H5

Vejledning til opgraderet version af Danmarks Arealinformation

Tips og Tricks. Erik Wendelboe Nielsen Christian Woergaard. econocap. PTC/USER Fredericia

Start på Arduino og programmering

Rybners Teknisk Skole. Tømrer afdeling. Frank Kleemann Aarestrup

Fra programmering til mikroprocessor

Indholdsfortegnelse Introduktion... 5 Start Photoshop Elements 11 (Velkomstskærmen) Opret en ny kalender via Create-menuen... 16

Brugermanual 3D Webcam

Programmering C RTG

Specifikation Abstrakt OO OS-API Rev Specifikation. Abstrakt, objektorienteret operativsystem-api

DM507 Algoritmer og datastrukturer

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

System Arkitektur og Integration

DM507 Algoritmer og datastrukturer

Kursusarbejde 2 Grundlæggende Programmering

Kapitel 1 I gang med C#

Designmanual for websider

Internt interrupt - Arduino

Adobe Titel Designer

Transkript:

Metoder og værktøjer til programmering Hjemmeside http://www.control.aau.dk/~jal/mvp.php Spørgsmål vedrørende kurset: jal@es.aau.dk

Metoder og værktøjer til programmering Kursusgange: Brugergrænseflader med SDL Netværksprogrammering med sockets Trådprogrammering med posix debugging med ddd

Kurset i dag Kort introduktion til SDL Kompilering af programmer skrevet med SDL Initialisering/de-initialisering af SDL Grafik med SDL Eventhåndtering i SDL Kodegranskning/diskussion af jeres programmer med SDL i grupperne

Information om SDL SDLs officielle hjemmeside http://www.libsdl.org/ Application Programming Interface (API) http://www.libsdl.org/cgi/docwiki.cgi/ Kort introduktion http://www.libsdl.org/intro.en/

Kompilering af programmer med SDL Brug sdl-config! Exempel på Makefil til SDL: CC = gcc SRCS = sdl_program.c OUT = sdl_program SDL_FLAGS = $(shell sdl-config --cflags --libs) compile: $(CC) $(SDL_FLAGS) -o $(OUT) $(SRCS) clean: - rm $(OUT) Eller command line: gcc $(sdl-config --cflags --libs) program.c

Initialisering/de-initialisering af SDL int SDL_Init(Uint32 flags); flags: options, kan eksempelvis være: SDL_INIT_AUDIO SDL_INIT_VIDEO SDL_INIT_EVERYTHING SDL_INIT_EVENTTHREAD void SDL_Quit();

Initialisering/de-initialisering af SDL Eksempel: initialiser sdl med video og audio #include <SDL.h> #include <stdio.h> void init(){ if(sdl_init(sdl_init_video SDL_INIT_AUDIO)){ printf("unable to initialize SDL: %s\n", SDL_GetError()); exit(0); } atexit(sdl_quit); }

Grafik: Surface SDL_Surface *SDL_SetVideoMode(int width, int height, int bitsperpixel, Uint32 flags); width, height: selvforklarende ;) bitsperpixel: farvedybde flags: options, kan eksempelvis være: SDL_SWSURFACE SDL_HWSURFACE SDL_DOUBLEBUF SDL_FULLSCREEN

Grafik: surface Eksempel: gør hele skærmen parat til at blive tegnet på #include <SDL.h> #include <stdio.h> int main(){ init(); SDL_Surface *screen; } screen = SDL_SetVideoMode(1440, 900, 32, SDL_HWSURFACE SDL_DOUBLEBUF SDL_FULLSCREEN); if(screen == NULL){ fprintf(stderr, "Unable to set 1440x900 video: %s\n", SDL_GetError()); exit(1); }

Grafik: locking surfaces I SDL skal nogle surfaces låses før man kan tilgå de enkelte pixels i den SDL_MUSTLOCK(surface) evaluerer til 0 hvis surface ikke behøver at blive låst int SDL_LockSurface(SDL_Surface *surface); låser en surface void SDL_UnlockSurface(SDL_Surface *surface); låser en surface op

Grafik: locking surfaces Eksempel: wrappere til lock og unlock void slock(sdl_surface* ps){ if(sdl_mustlock(ps)) SDL_LockSurface(ps); } void sunlock(sdl_surface* ps){ if(sdl_mustlock(ps)) SDL_UnlockSurface(ps); }

Grafik: tegn på en surface int SDL_FillRect(SDL_Surface *dst, SDL_Rect *dstrect, Uint32 color); dst: surfacen der skal tegnes på dstrect: et rektangel der viser hvor der skal fyldes farve i color: farven der skal fyldes i rektanglet int SDL_Flip(SDL_Surface *screen); screen: surfacen der skal flippes

Grafik: tegn på en surface Eksempel: Tegn et stort rødt rektangel SDL_Rect r; r.x = 50; r.y = 50; r.w = 1440-2*r.x; r.h = 900-2*r.y; Uint32 colour = SDL_MapRGB(screen->format, 255, 0, 0); slock(screen); SDL_FillRect(screen, &r, colour); SDL_Flip(screen); sunlock(screen);

Grafik: andre muligheder Tegn bitmaps på en surface Manipuler enkelte pixels 3D-grafik med opengl Og flere ting...

Events SDL kaster events i forbindelse med: Tastetryk på keyboarded Musemanipulation Joystickmanipulation Manipulation af vinduet der bliver tegnet i

Events void SDL_PumpEvents(void); Opdaterer eventkøen med events fra alle perifære enheder int SDL_PollEvent(SDL_Event *event); event: den første event i eventkøen returnerer: 1 hvis der er event i eventkøen, 0 ellers

Events Eventtyper: SDL_KEYDOWN/UP SDL_MOUSEMOTION SDL_MOUSEBUTTONDOWN/UP SDL_VIDEORESIZE SDL_VIDEOEXPOSE SDL_QUIT og en del flere...

Events Eksempel: Lyt efter tastetryk SDL_Event event; for(;;){ SDL_PumpEvents(); while(sdl_pollevent(&event)){ switch(event.type){ case SDL_KEYDOWN: if(event.key.keysym.sym == SDLK_q) exit(0); else //gør noget andet break; case SDL_QUIT: exit(0); break; default: printf("non-handled event caught.\n"); } } }

Kodegranskning/diskussion af jeres programmer med SDL i grupperne om 15 minutter