SgLib Simple Graphics Library



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

Övningar Dag 2 En första klass

Objektorienterad programmering i Java. Föreläsning 5 Kort om Java-Applets

ID1004 Laboration 3, 5-6 November 2012

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Detaljbeskrivning av Player

In- och utenheter. Händelsebaserad programmering i GLUT. Interrupt-baserad interaktion. Sampling / polling. Händelsebaserad interaktion (forts.

C++ Objektorientering - Klasser. Eric Elfving

Grafik i DrRacket AV TOMMY KARLSSON

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

Inledande programmering med C# (1DV402) Introduktion till C#

TDIU01 Programmering i C++

TDIU01 - Programmering i C++, grundkurs

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

Introduktion till arv

Grundläggande programmering med C# 7,5 högskolepoäng

WINDOWS PRESENTATION FOUNDATION LEKTION 1

Det finns många flaggor till g++,

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

TDIU01 - Programmering i C++, grundkurs

2D1339 Programkonstruktion för F1, ht 2003

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Installationsanvisning för Su Officemallar 2011 För Mac Word och PowerPoint

Laboration 4: Digitala bilder

Klassen javax.swing.timer

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

Laboration 3 GUI-programmering

Att använda pekare i. C-kod

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

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

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

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

C++ Objektorientering - Klasser. Eric Elfving Institutionen för datavetenskap

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

JAVA Mer om klasser och objektorientering

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

Lab1 Introduktion. 1 Syfte. 2 Innehåll Win32API Skapa trådar Kritiska sektioner Mailslothantering. 3 Förberedelse & Tips

Installationsanvisning för Su Officemallar 2011 För Mac Word och PowerPoint

Så här skriver du ditt första program i C++

TDDC76 - Programmering och Datastrukturer

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

2D1339 Programkonstruktion för F1, ht 2004

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

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

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

Two-Factor Authentication. A. Vad är Two-Factor Authentication (Tvåfaktors-autentisering)? B. Hur man ställer in Two-Factor Authentication?

Komponenter med COM (och COM+/VC++ 7.0)

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

Programmering. Hur, var, när och varför. 22 November. Lars Ohlén Tieto

Enkla datatyper minne

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

Objektorienterad programmering

Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser

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

DD1342 Programkonstruktion för F1, ht 2007

Övning: Arbeta med Azure Explorer

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Gå till nästa bygge. Ibland vill man hoppa till nästa bild i presentationen utan att behöva gå igenom alla byggen på diabilden igen.

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Kodexempel från Programmering 2 Tobias Wrigstad, Ph.D.

Versionshantering med Git

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

TDDC76 - Programmering och Datastrukturer

Relationer mellan objekt

Överflyttning av värld

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Tentamen i Objektorienterad Programmering 5p, Au, D, Fri, Pr,

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Manual - Phonera Online Backup

1 Klasser och objektorientering Vad är objektorientering?

KLASSER. Inkapsling Abstrakt datatyp Public och private. Klassmedlemmar Datamedlemmar Exempel Funktionsmedlemmar

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.

Kursvärdering. Denna manual beskriver hur du kan skapa en mapp i Fronter som heter Kursvärdering där du ladda upp reslutat från kursutvärderingar.

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Backcode. Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet

Kom igång. Readyonet Lathund för enkelt admin. Logga in Skriv in adressen till din webbsida följt av /login. Exempel:

Ett enkelt program i C++, hello.cpp. #include <iostream> int main() { std::cout << "Hello World\n"; return 0; } C++, Övning 1

Objektorienterad Programmering (TDDC77)

Objektorientering: Lagring, räckvidd och livstid

Lab5 för prgmedcl04 Grafik

TDP005 Projekt: Objektorienterat system

Laboration 1. En första bekantskap med C++ Namn: Godkänd den: Rest:

grundläggande C++, funktioner m.m.

Datorövning 1. int sgd(int m, int n) { int rest; while ( n!= 0 ) { rest = m % n; m = n; n = rest; return m;

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

Programsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010

Installationsanvisning för kursens programvara på egen dator

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

Påminnelse: en datatyp för bilder. Programmering. En datatyp för bilder. Spegelbild. hh.se/db2004

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

Lösningsförslag övning 2.

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

Ljud och video på webbsidor

Transkript:

SgLib Simple Graphics Library SgLib är en förenkling av glut som I sin tur bygger på open GL. Om du inte känner till glut och open GL, räcker det att veta att sglib är en samling filer som gör det lättare att göra grafiska applikationer(program). Skapa en ny windows applikation. Skapa en Win32 Consol applikation om du vill ha debugutskrifter(genoma att använda cout) i ett svart fönster(vid sidan av ditt spelfönster). Gör du en hello world applikation så får du automatiskt en main som duger. Eller... Skapa en Win32 applikation där du bara har kvar winmain funktionen. Denna kod är det enda som behöver vara kvar. #include "stdafx.h" #include "ManicMainer.h" int APIENTRY _twinmain(hinstance hinstance, HINSTANCE hprevinstance, LPTSTR lpcmdline, int ncmdshow) // TODO: Place code here. return 0; Notera att det går bra att börja med att göra sitt program i en konsollapplikation, eftersom koden innanför main kommer att vara exak t densamma. Dock fungerar inte cout i en ren Win32 applikation. Förberedelser för att använda sglib Kopiera in följande filer från hemsidans projektflik, underrubrik resurser: Kopiera glut32.dll hit. Zippa upp sglib.zip h i t. Kopiera 2 glut32.lib hit. 3 1 För den avancerade användaren finns det naturligtvi s effektivare metoder, men denna är den lättaste.

En komplett sglib applikation. #include "stdafx.h" #include "ManicMainer.h" #include "sglib\sglib.hpp" #define WIDTH 200 #define HEIGHT 200 #define XPOS 100 #define YPOS 100 class CManicGame:public Application public: CManicGame() Application::init("Manic Mainer!",WIDTH,HEIGHT,XPOS,YPOS); // Initialize game! // Sätter upp att ontimer skall anropas med ett visst intervall(1). Application::setAndStartTimer(1); void ondraw() Graphics g; // Rensar skärmen. g.drawcircle(30,70,10); void ontimer() Indikerar att vi använder sglib Skapar fönstret vi kan rita i med graphicsklassen updatedisplay();//obs!! anropa aldrig OnDraw() själv! Anropas var gång fönstret flyttas eller updatedisplay anropas. Anropas med det intervall du angav i setandstarttimer. ; Allt som behövs i main!!! int APIENTRY _twinmain(hinstance hinstance, HINSTANCE hprevinstance, LPTSTR lpcmdline, int ncmdshow) CManicGame app; app.showmodal(); // Visar fönstret och går in i eventloopen. return 0; Resultated av denna oerhörda kodmängd är detta:

Om du tittar i sglib.hpp så ser du v ad du kan göra mer med graphics objektet. Att göra en bitmapp som går att rita ut. För tillfället är det bara 24 bitars BMP filer som går att använda. Ett enkelt sätt att förvissa sig om att din bild är på detta format är att kopiera in den i mspaint och spara den som bmp därifrån. Då kan du använda paintshop eller vilket annat verktyg du vill för att skapa bilden. Rita en bitmapp Lägg till en variabel av typen Sprite till din applikationsklass class CManicGame:public Application Sprite player; int m_x, m_y; // Player position. public:... I konstruktorn kan du ladda bitmappen: CManicGame() Application::init("Manic Mainer!",WIDTH,HEIGHT,XPOS,YPOS); // Initialize game! player.initfrombmp("player.bmp"); player.addtransparentcolor(255,255,255); // Vitt är genomskinligt! // Sätter upp att ontimer skall anropas med ett visst intervall(1). Application::setAndStartTimer(1); I ondraw ritar du den: void ondraw() Graphics g; player.draw(g,m_x,m_y); g.drawcircle(30,70,10); I ontimer kan du flytta den: void ontimer() if(application::iskeydown(sg_right)) m_x = (m_x + 3) ; if(application::iskeydown(sg_left)) m_x = (m_x - 3) ; if(application::iskeydown(sg_down)) m_y = m_y - 3; if(application::iskeydown(sg_up)) m_y = m_y + 3; updatedisplay();

Klasserna som kommer med sglib 1.0 Application Graphics Bitmap init( ) setandstarttimer( ) showmodal( ) updatedisplay( ) iskeydown( ) v o n D r a w ( ) v ontimer( ) v onkeydown( ) v onmousedown( ) v onmouseup( ) v onmousemove( ) setclearcolor() ; setcolor( ) setcoloralpha() sgsetpensize() drawline( ) drawrect( ) drawfilledrect( ) d r a w C i r c l e ( ) drawfilledcircle( ) drawtriangle( ) drawfilledtriangle( ) drawquad( ) drawfilledquad( ) d r a w T e x t ( getwindowwidth(); getwindowheight(); width height pbuf draw() initfrombmp() addtransparentcolor() Detaljer om metoderna kan du läsa om i sglib.hpp eller källkoden..

Teknisk information för den som är intresserad När jag bygger sglib så har jag ett custom steg på slutet av bygget. Detta för att slippa ha massa olika inkluderingsfiler för studenten att hålla reda på: För linux porterare, notera pragma definitionen i orginalfilen för sglib.hpp. Notera också att iskeydown i application inte fungerar för linux än... Tar tacksamt emot kod för detta... Såhär är libbet uppbyggt: (Där sglib.hpp byggs enligt ovan av de andra filerna). C Cpp sglib.hpp sglib.h sginternal.h GLUT OpenGL WIN32/Linux