Varför behövs det? I Allegro finns t.ex. stöd för:



Relevanta dokument
Agenda. Introducera det individuella projekt Multipla C-filer H-filer Introducera uppgifterna

Föreläsning 3. Programmering, C och programmeringsmiljö

Föreläsning 3. Programmering, C och programmeringsmiljö

Programmeringsteknik med C och Matlab

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

LEGO Mindstorm-robot

#include <stdio.h> #include <string.h>

SgLib Simple Graphics Library

Jag rek. starkt att alla uppgraderar sin TomTom till version 5 eller högre då massor av nya funktioner och en betydande prestandaskillnad finns.

Installationsanvisning för kursens programvara på egen dator

Lösningar till uppgifterna sätts ut på kurssidan på nätet idag kl Omtentamen i Programmering C, 5p, A1, D1, E1, Fri, Pr1, Te/Ek1,

Datorlaboration 0, Programmering i C++ (EDAF30)

Upsättning av Shoutcast-sändning

SORTERING OCH SÖKNING

Funktioner och programstruktur. Föreläsning 5

Användarmanual för Hemsida

För en helt ny användare går det snabbare än tidigare att lära sig de funktioner som finns.

HI1024 Programmering, grundkurs TEN

Vid frågor kontakta oss på eller ring oss på

Smartair System. TS1000 Version 4.23

Redovisa i e-möten via Adobe Connect

Arrays (indicerade variabler) Föreläsning 6

Space Shooter. Projektrapport i kursen Avancerad C/C++ (DVA303) vid Mälardalens Högskola av Lars Lindqvist och Niklas Nolte

FileCentral Desktop. Användarhandledning Version

En kort text om programmering i C.

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

Studentguide Adobe Connect Pro

Visioneer PaperPort DeLuxe 6.1 med Form Typer

Antivirus Pro Snabbguide

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Att använda pekare i. C-kod

Hur man kompilerar och kör IT++-program med MinGW. 1 Sammanfattning. 2 Om dokumentet. 3 Om min konfiguration

Funktioner och programstruktur. Föreläsning 5

HIGs Remote Desktop Service med Linux

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

Planering Programmering grundkurs HI1024 HT 2014

Vad har vi lärt oss så här långt Vad är en sträng? Strängkonstanter. Att skriva ut och läsa in strängar. Att arbeta med strängar.

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Växtviskaren EITF11 Digitala projekt VT15, I12

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

Region Skåne Verksamhetsledningssystem (VLS)

Arrays (indicerade variabler) Föreläsning 4

HI1024 Programmering, grundkurs TEN

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

Introduktion. Markera den gröna bocken. Skriv in URL:en Klicka på knappen Platser.

Tentamen i. för D1 m fl, även distanskursen. lördag 19 januari 2013

Code-Lite tutorial ( /RoJ)

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Kom igång. Version 3

HI1024 Programmering, grundkurs TEN

En grund i bildbearbetning för webben i Photoshop CS5

Föreläsning 4. Val, boolska värden, läsbarhet, osv

Easy Planning blir med dessa funktioner ett mycket kraftfullt verktyg för planering. Vi hoppas att våra kunder ska få stor nytta av programmet.

1. Introduktion Tillvägagångsätt Robotkittet DSP Digital Kamera HC FAQ Appendix...

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Övning 7. Timer, serieport

Installationsanvisning för Su Officemallar 2003 För PC

Handbok Dumpa skärmen

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

OOP Objekt-orienterad programmering

Att komma igång. Föreläsning 1

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Nu till dagens ämne: Vi rekapitulerar det första problemet ur ProblemI:

Space Invaders - Slutrapport

Loopar och datatyper. Föreläsning 3

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Guide till Lidingö stads app (Netpublicator) för digitala nämndhandlingar

ClaroRead Plus Mac Manual. Artikel.nr

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

TDDI82 - Projekt. Christoffer Holm. Institutionen för datavetenskap (IDA)

Att komma igång. Föreläsning 1

Installations- och bruksanvisning för Gree Smart app: Hansol -seriens luftvärmepump med WiFi

Introduktion till Adobe Acrobat Connect. I denna guide beskrivs hur man använder Adobe Connect samt användning av headset och webbkamera.

Tentamen i Objektorienterad programmering

Snabbguide Visma Compact API Version 5.1 Copyright Visma Spcs AB Visma Compact API

19. Skriva ut statistik

Detta sätt lämpar sig bra om man bara kort vill kommentera den inlämnade uppgifter som helhet. Gör så här:

Handbok Shisen-Sho. Dirk Doerflinger Eugene Trounev Frederik Schwarzer Granskare: Frerich Raabe

Handbok Kstuds. Tomasz Boczkowski Granskare: Eugene Trounev Översättare: Stefan Asserhäll

Spelutforskaren lagrar spelstatistik. Markera ett spel för att visa dess CSRDrankning. Spela spel i fönster eller i helskärmsläge.

Loopar och datatyper. Föreläsning 3

1284_omslag.qxd :13 Sida 1 ECDL START OFFICE 2003 Allmän IT Windows XP Word 2003 Outlook 2003

Chapter 3: Using Classes and Objects

Sida: 1 (10) Datum: Uppdaterad av: HNS. Ägare: MK SL Målgrupp: Student. Personal. Växjö 7.3) (Del

TeamViewer Installation och användning

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Tentamen i Programmering C, Fri, Kväll,

Tentamen TEN1 HI

BMI = (vikt i kg) / (längd i m) 2. Lösningsförslag

Blogga med wordpress. Lina Tannerfalk Wiberg

Manual för Typo3 version 4.04

2. Komma igång Skapa grupper och elever Skriv också ut sidan 13 så att eleverna har en snabbguide till programmet.

lex källkod lex.l lexkompilator lex.yy.c C- kompilator lex.yy.c a.out sekvens av tokens a.out input specifikation av tokens mha reguljära uttryck

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Quick start manual. Smart-House Rev 2.0

SharpMap. GIS-komponenter för.net

Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.

Laboration 2 Grunderna i Photoshop

Tentamen OOP

Twincat: PLC Control

TDP005, Projekt: Objekt-orienterade System. Laboration: Eclipse

Transkript:

Allegro Introduktion Översikt vad är Allegro? Vad är lib och h-fil Kolla kodexempel Strukturen på ett Allegrospel Hur kommer jag igång? Var kan jag läsa mer Addons Alternativ

Vad är Allegro? Ett spelprogrammeringsbibliotek ( lib ) Eller: multimedia-lib Det innehåller generella hjälpfunktioner som är nyttiga bl.a. då man gör spel Kan vara lika användbart i andra typer av program Allegro är fri programvara (öppen källkod)

Varför behövs det? I Allegro finns t.ex. stöd för: Grafik Ladda in bildfiler Direkt tangentbordsavkänning Timer Ljud Mus Joy-stick Skriva text i grafikläge Fonter Inget av detta stöds av standard-c

Multiplattform Linux Windows, mingw32 (dvs det som CB använder) Windows, msvc DOS Mac OSX Solaris BeOS m.fl.

Vad är ett lib Ihopbuntade objektfiler Var är objektfiler nu igen? - C-filer som är kompilerade men inte länkade till ett program! Vad är då skillnaden mellan lib och program? - Libbet är alltså inte länkat... Men är inte länka samma som att bunta ihop filerna? - Nej, i libbet kopplas inte funktionerna ihop med anropen. Normalt sett finns heller inget main() i ett lib.

Vad är ett lib? Man kan inte bygga ett program genom att bara länka ett lib Man måste t.ex. själv skriva ett main Man måste också t.ex. anropa en funktion i libbet för att den ska utföras. Detta är inte märkligare än att du anropar funktioner som printf, scanf, puts, etc. (de körs inte heller självmant)

Hur använda ett lib? En (eller flera) h-filer hör till ett lib Inkludera <allegro.h> för att använda Allegro (jfr stdio.h hör till libc ) Läs i dokumentationen vad funktionerna heter, semantiken (dvs vad det utför), parametrar och returvärden Länka ditt program med allegro: Linux: gcc *.o `allegro config libs release`

Hur länka med Allegro i Windows? Länka ditt program med allegro: Windows (Code::Blocks v.8.02): Välj menyn Settings Välj alternativet Compiler and debugger Välj fliken Linker settings I rutan Other linker options skriv: lalleg lkernel32 luser32 lgdi32 lcomdlg lole ldinput lddraw ldxguid lwinmm ldsound

Strukturen på Allegrospel Initiera Allegro Initiera grafik Initiera timer Initiera tangentbord Koden för spelet: Initiera spelet ladda in bilder bygg upp datastrukturer Meny (intro) Själva spelloopen

Initieringen och main #include <allegro.h> int main(void) { if (allegro_init() == 0) { install_keyboard(); if (set_gfx_mode(gfx_autodetect, 800, 600, 0, 0) == 0) { run_game(); } } return 0; } END_OF_MAIN()

Spelloop int run_game(void) { int status, updates=0; Game game; init_game(&game); do { while (my_ticks > updates) { command = get_input(); status = move(&game, command); if (status == DEAD) break; update_game(&game); updates++; } } draw_graphics(&game); } while (status!= DEAD); return status; }

Spelloop med multipla banor Kan se ut så här (run_level motsvarar den tidgare run_game): void run_game(void) { int level_nr=0, new_level; Level level; Game game; init_game_basics(&game); do { init_level(level_nr, &game, &level); new_level = run_level(&level); if (new_level) level_nr++; } while (new_level && level_nr<maxlevel); }

Händelsehantering int get_input(void) { int command; if (key[key_space]) { command = DROP; } else if (key[key_left]) { command = MOVE_LEFT; } else if (key[...]) { command = ROTATE_CLOCK_WISE; } else if (...)... } return command; }

Händelsehantering I get_input.h : #define DROP 0 #define MOVE_LEFT 1 #define ROTATE_CLOCK_WISE 2...

Rita världen void draw_graphics(game *game) { /* Rita hela världen: bakgrund äpplen&mask eller alla bitar */ }

Allegros BITMAP En BITMAP är en yta som man kan rita på och med Transparens genom färgen 0xff00ff draw_sprite() och blit() ritar en bitmap på en annan Endast draw_sprite() tar hänsyn till transparens Ritoperationer: line, rect, circle, polygon, etc Text output: textprintf_ex() Text input: tecken för tecken... readkey() + keypressed(); scanf() funkar inte!

Fonter Bitmappade fonter Färg Monokrom (samma färg över hela) Inbyggd font (mycket primitiv...) Hjälpprogram för ttf till bitmap Addons för ttf och antialiasing

Hur kommer jag igång? Ladda ner zip-en från Allegro - packa upp och läs allegro/docs/build/ compiler.txt Ladda ner och packa upp dx70_mgw.zip kopiera lib\* till MinGW\lib\ och include\* till MinGW\include (ligger troligen i CodeBlocks) Efter installation: Lägg till allegro-libbet (dvs -lalleg) och därefter -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lole32 -ldinput -lddraw -ldxguid -lwinmm -ldsound) som extra länkkommando i CB. Tuta och kör!

Kunskapskällor Allegros hemsida (se länksidan) Allegro.cc forum m.m. (länk från Allegro) Allegros docs (API), följer med Allegro Exemplen, följer med. Experimentera! Bok: Game Programming All in One

Addons Bildfiler: jpg, png, gif Grafik: OpenGL, mm Fonter: ttf, mm Nätverk GUI Trådar

Alternativ SDL Allegro lättare för nybörjare SDL använt i fler kommersiella program SDL är ej komplett Licenser SDL: LGPL Allegro: PD Använda systemets API (dåligt)