107
FI MUNI, Brno 2009 Juraj Michálek web: http://georgik.sinusgear.com twitter: http://twitter.com/georgiksk Vývoj v C++

Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

FI MUNI, Brno 2009Juraj Michálek

web: http://georgik.sinusgear.comtwitter: http://twitter.com/georgiksk

Vývoj v C++

Page 2: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

TestujemeBoost

VyvíjameSTL, Allegro, SDL, ClanLib, LUA, Mesa3D...

LadímeEclipse a debuggerbežný debugging, pripojenie k procesupost-mortem

Nástroje

Obsah

Page 3: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Program programátora

1. programátor dostane skvelý nápad2. naprogramuje dokonalý program3. všetko si naprogramuje sám4. zistí, že program je nepoužiteľný

Page 4: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Na vlastných nohách

5. pokúsi sa program opraviť6. zistí, že polovicu funkcií naprogramoval zle7. preprogramuje zlé funkcie8. zistí, že program je opäť nepoužiteľnýgoto 5.

Page 5: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Modely vývoja

Ad-hocAdrenaline JunkieAgilné metódyScrumExtreme ProgrammingTest Driven Development

Page 6: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Testujeme

Od chaosu k štruktúre

Page 7: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

http://www.boost.org“...one of the most highly regarded and expertly designed C++ library projects in the world.”

Herb Sutter and Andrei Alexandrescu

Page 8: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Boost – minuý rok

Page 9: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Boost - 2009

Page 10: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Boost Test Library

Test everything that could possibly breakjednoduchá tvorba tescasovTestSuite – TestCasetest je spustiteľný programbjam integruje spúšťanie testov

Page 11: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

TestCase

using namespace boost::unit_test_framework;

/** * Test basic marshaller functionality */void testServerQuery(){ ServerQuery query = ServerQuery();

query.session = "112"; query.userId = "janko";

BOOST_CHECK_EQUAL( query.sessionAsChar(), "112" ); BOOST_CHECK_EQUAL( query.userIdAsChar(), "janko" );}

Page 12: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Jam

náhrada Makefilerozšíriteľné fukncieautomatická detekcia header filesprenositeľné: Unix, Windows, VMS, Macmalý CPU overheadbuild obrovských projektovškálovateľné(pozn. citlivé na medzery)

Page 13: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

jam + TestCase

Jamfile (Jamroot)import testing ;run tests/testServerQuery.cpp server ;

Shell$ bjam...patience......found 2 targets......updating 2 targets...*** test passed ***

Page 14: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Vývoj

Page 15: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

STL I.

základ pre C++práca s reťazcami

#include <string>operácie nad zoznamami

#include <list> #include <deque>

Page 16: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

STL II.

operácie s asociatívnymi poliami#include <map>

špeciálne algoritmy (triedenie, výpis)#include <algorithm>

zhrnutie: umožňujú urýchlenie vývojahttp://www.sgi.com/tech/stl/

Page 17: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Otázka

Vystačíme so štandardnými funkciami STL?

Page 18: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Odpoveď

Page 19: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Interaktívne aplikácie

Page 20: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Interaktívne aplikácie

rýchla reagovať na užívateľamusia sa prispôsobovať jeho potrebámdobrým príkladom je počítačová hraukážeme si konkrétnu implementáciu

Page 21: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Vhodné knižnice

Allegro

Simple Direct Media Layer

Clanlib Simple Development Kit

Page 22: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Allegro

Allegro Low Level Game Routines

Page 23: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Allegro - aplikácia

spracovanie klávesnice, myši, joystickuspracovanie obrazu, zvukujednoduché GUIovládanie časovačovpoužívanie dátových súborovuvedené príklady z Allegro5 (4.9.x)

Page 24: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Programovanie I.

inicializácia Allegraal_init();

za funkciou main je nutné uviesť makroEND_OF_MAIN();

Page 25: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Inicializácia grafiky

inicializácia grafického prostrediaal_create_display(int w, int h)

Page 26: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

ALLEGRO_BITMAP

štruktúra na uloženie obrazu

vytvorenie obrazovej pamäteALLEGRO_BITMAP *bmp = create_bitmap(x,y);

Page 27: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Grafika

vykreslenie bodu do pamäteal_putpixel(x, y, color)

načítanie obrazu zo súborual_load_bitmap(filename);

kopírovanie medzi pamäťamial_draw_bitmap(bmp, 10, 10, 0);

Page 28: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Grafika

Uvoľnenie obrazovej pamätedestroy_bitmap(bmp);

Page 29: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Klávesnica

zavedenie ovládača klávesniceal_install_keyboard()

odstránenie ovládača klávesniceal_uninstall_keyboard()

načítanie klávesyevent.keyboard.keycode

Page 30: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Myš

inštalácia a odstránenie ovládačaal_install_mouse()al_uninstall_mouse()

Page 31: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Ďalšie vlastnosti

prehrávanie samplov a MIDIukladanie súborov do datafilejednoduchá 3D grafika - polygonyjednoduché GUI

Page 32: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Knižnice nad Allegrom

Allegro má pomerne veľa funkciiAllegttf - práca s True Type fontamiAllegGL - práca GL grafikouDUMB - práca sa audiom (Vorbis/Ogg)

Page 33: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

KompiláciaKonfiguračný skript

allegro-configLinux, Unix, BeOS, QNX, MacOS, Windows:

g++ foo.cc -o foo `allegro-config --libs`

Page 34: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Zdrojevývoj knižnice

http://alleg.sourceforge.netDokumentácia

http://alleg.sourceforge.net/a5docs/4.9.14/index.htm

Page 35: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Allegro.cc

Game development community networkMattew J. Leverton

http://www.allegro.cc

Page 36: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Knižnica

Simple Direct Media Layer

Page 37: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Programovanie

inicializácia systémuSDL_init(flags)

ukončenie systémuSDL_quit()

Page 38: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Grafika I.

inicializácia grafického prostrediaSDL_SetVideoMode(width, height, video_bpp, videoflags)

obrazové dáta v pamätiSDL_SWSURFACE

obrazové dáta vo video pamätiSDL_HWSURFACE

Page 39: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Grafika II.

štruktúra na uloženie obrazuSDL_Surface

vytvorenie obrazovej pamätesurface = SDL_CreateRGBSurface(SDL_SWSURFACE, width, height, 32, rmask, gmask, bmask, amask);

Page 40: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Grafika III.

načítanie obrazu zo súboruSDL_Surface *SDL_LoadBMP(const char *file)

kopírovanie medzi pamäťamiSDL_BlitSurface(src, srcrect, dst, dstrect);

Page 41: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Klávesnica

stlačenie klávesy vyvolá udalosťSDL_PollEvent(SDL_Event *event)

test na stlačenie konkrétne klávesyevent.key.keysym.sym

Page 42: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Časovač

časovač implementovaný ako počítadlostatic int counter;

inštalácia funkcie volenej v pravidelných intervaloch

SDL_SetTimer(interval, tick);

Page 43: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Myš

zistenie stavu myšiSDL_GetMouseState(*x, *y);

Page 44: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Text

jednoduchý výpis textu nie je

Page 45: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Ďalšie vlastnosti

priama podpora GL knižníczabudovaný mechanizmus pre vláknaspolupráca s jazykmi

Ada, Eiffel, Java, Lua, Perl, PHP, Pike, Python, Ruby

176 rozširujúcich knižníc

Page 46: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Knižnice

SDL je samo o sebe pomerne ťažko použiteľnéSDL_mixer - multikanálový mixérSDL_image - spracovanie obrazových formátovSDL_net - práca so sieťou

Page 47: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Zdroje

vývojhttp://www.libsdl.org

portál s hramihttp://www.lgames.org

Page 48: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Kompilácia

konfiguračný skriptsdl-config

Linux, Windows, BeOS, Mac OSg++ foo.cc -o foo `sdl-config --libs`

Page 49: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Knižnica

ClanLib game Simple Development Kithttp://www.clanlib.org

Page 50: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

LUA

silný skriptovací nástrojvolanie skriptov z programuvolanie programu zo skriptovjednoduchá syntax jazyka

http://www.lua.org

Page 51: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Knižnica

Mesa

http://mesa3d.sourceforge.net

Page 52: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Dino

Page 53: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Games for Linux

podpora hier pre Linuxport a code, save the gamearchív 208 hier, 35 knižníc

http://games.linux.sk

Page 54: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

GUI

Graphic User Interface

Page 55: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Vhodné knižnice

QT

FLTK

GTK

Page 56: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

QT

Trolltech:http://www.trolltech.com

Page 57: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

QT

produkt firmy Trolltechlicencie: open source aj komrčnéknižnica vznikla v roku 1996podporuje C++ a Javu

Page 58: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Platformy

MS/WindowsUnix/X11 - Linux, Sun Solaris, HP-UX, Compaq Tru64 UNIX, IBM AIX, IRIX, Mac OS XEmbedded - Linux platforms with framebuffer support.

Page 59: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Designernástroj na tvorbu GUIrozvrhnutú plochu ukladá do XML súboruz XML definície sa generuje kód programu

Page 60: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Kompilácia

uloženie projektuvytvorenie Makefile z projektu

qmake -o Makefile test.prokompilácia

make

Page 61: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Linguist

nástroj na preklad aplikáciiumožňuje oddeliť kód od textovprekladateľ a programátor pracujú samostatne

Page 62: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Amélia

Page 63: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

KDE

Page 64: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Google Earth

Page 65: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

FLTK

http://www.fltk.org

Page 66: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Knižnica FLTK

The Fast Light Tool KitAutor: Bill Spitzakvenoval sa vývoju rozhraní pre Sun Microsystemsveľa myšlienok zjednodušil a vložil do kitunízko-úrovňová kompatibilita - 10% odlišnosti

Page 67: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Platformy

Unix, LinuxMicrosoft WindowsMacOSs podporou OpenGL a GLUT

Page 68: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

FLUID

Fast Light User-Interface Designerjednoduchý designer na tvorbu GUI

Page 69: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Knižnica

http://www.gtk.org

Page 70: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

GTK

GIMP ToolKitPeter Mattis, Spencer Kimball, Josh MacDonaldGNU Network Object Model Environment (GNOME)

C++, Guile, Perl, Python, TOM, Ada95, Objective C, Free Pascal, Eiffel

komplexne riešená knižnica

Page 71: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Glade 3

http://glade.gnome.orgdesign GUI - www.srobick.com

Page 72: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

ACE

The ADAPTIVE Communication Environmenthttp://www.cs.wustl.edu/~schmidt/ACE.html

Open source C++ framework

reactor, proactoracceptor, connector

Page 73: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Ladíme

Když něco rozeberem, tak leda debuggerem

Page 74: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

výkonné multiplatformové IDEhttp://www.eclipse.org

C/C++ - CDT pluginhttp://www.eclipse.org/cdt

Page 75: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Break point

Page 76: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Naštartujeme Debugger

Page 77: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

A zastavíme

Page 78: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Prechádzka po stacku

Page 79: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Ladíme lokálnu aplikáciu

Možnosti:

Aplikácia vrámci workspacu.(videli sme)

Aplikácia mimo workspace.(ukážeme si)

Page 80: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Import binárky

Page 81: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Toto ešte zvládneme

Page 82: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

A teraz príde trik – bez medzier!

Nesprávne!

Správne

Page 83: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Drobnosti pred štartom

Page 84: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Debug – lokálna aplikácia

Page 85: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Čo z bežiacimi aplikáciami?

Pripojíme sa na aplikáciu.

Page 86: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Pripojenie k bežiacenu procesu

Page 87: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Čo s aplikáciami na serveri?

Väčšina debuggerov podporujevzdialené pripojenie.

Page 88: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Aplikácia to neprežila

Post-mortem analýza

Zostal len jej obraz: coredump

Page 89: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Rýchla analýza coredumpu

Page 90: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Módy debuggera

Spustenie lokálnej aplikácie.

Pripojenie k lokálnemu procesu.

Pripojenie k vzdialenému procesu.

Post-mortem.

Page 91: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Nástroje

Profesionál vie používať správne nástrojena správny účel.

Page 92: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Subversion - SVN

verzovací nástrojjednoduchý na používanie

http://subversion.tigris.orgrepository, check-out, commit, merge

http://www.asinus.org/wiki/VideoTutorialSubversion

Page 93: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

SVN klient pre Windowshttp://tortoisesvn.tigris.org

Page 94: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Source Control & Project Managementhttp://trac.edgewall.orghttp://trac-hacks.org/

Page 95: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

GNU a Windows

Minimalist GNU For Windowshttp://www.mingw.org

Cygwin http://www.cygwin.comhttp://cygwinports.dotsrc.org/

Page 96: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Doxygen

generovanie dokumentácie preC, C++, Java, PythonPHP, C#, D

použitiedoxygen -g project.configdoxygen project.config

Page 97: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

C#, .NET a Mono

open source implementácia .NETRozhranie napr. GTK#

http://www.mono-project.comSilverlight pre Linux - Moonlight

Page 98: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Python

silný objektovo orientovaný jazykplatformovo nezávislýintegrovateľný s C a C++

http://www.python.orghttp://www.py.cz

Page 99: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Twisted

udalosťami riadený sieťový frameworkpodpora TCP, UDP, SSL/TLS, multicastUnix socketsveľké množstvo protokolov

HTTP, NNTP, IMAP, SSH, IRC, FTP...http://twistedmatrix.com/trac/

Page 100: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

PyGame

kombinácia sily Pythonua rýchlosti SDL (kód v C)

http://www.pygame.org

Page 101: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

ProjektGoogle Code

http://code.google.com/opensourceSourceForge

http://sourceforge.netFreshMeat

http://freshmeat.net

Page 102: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Ohloh

porovnanie projektovrôzne metriky

http://www.ohloh.net

Page 103: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Open Source projekt

otvoriť program svetu - Open Sourceniekto môže vo vašej práci pokračovať

http://atanks.sf.net

Page 104: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

se-radio.net

Software engineering radiozaujímavý a kvalitný podcast

http://www.se-radio.net

Page 105: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

A je tu záver

Otázky?

Page 106: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

Myšlienka

Existuje mnoho ciest ako vytvoriť program.

Zvoľte si tú, ktorá vás naučí najviac.

Page 107: Vývoj v C++ · Simple Direct Media Layer Clanlib Simple Development Kit. Allegro Allegro Low Level Game Routines. Allegro - aplikácia spracovanie klávesnice, myši, joysticku spracovanie

FI MUNI, Brno 2009Juraj Michálek

web: http://georgik.sinusgear.comtwitter: http://twitter.com/georgiksk

Ďakujem za pozornosť