OpenGL:n perusteet - Osa 1: Ikkunan luominen

Koko: px
Aloita esitys sivulta:

Download "OpenGL:n perusteet - Osa 1: Ikkunan luominen"

Transkriptio

1 OpenGL:n perusteet - Osa 1: Ikkunan luominen OpenGL on käyttöjärjestelmäriippumaton kirjasto 2D- ja 3D-grafiikan piirtoon. Tämä artikkelisarja opettaa sinulle 3D-grafiikan perusteet OpenGL:ää käyttäen. Esimerkeissä käytetään C\C++ kieltä. Tämä on artikkelisarjan ensimmäinen osa. 1 Johdanto Ennen vanhaan grafiikkaa piirrettiin kirjoittamalla se suoraan näytönohjaimen muistiin. Kun tiettyyn osoitteeseen näytönohjaimen muistissa kirjoitettiin tavu, syttyi vastaavaan kohtaan näyttöä vastaavan värinen pikseli. Ja kun yksi pikseli kerran osattiin piirtää, niin monesta pikselistähän sai aikaan mitä tahansa kuvia. Kaikki kuitenkin muuttui 3D-kiihdytinten myötä. Enää grafiikkaa ei piirrettykään tietokoneen prosessorin avulla, vaan näytönohjaimen prosessorin avulla, joka on varta vasten suunniteltu grafiikan piirtämiseen ja suoriutuu tehtävästä näin ollen jopa 300 kertaa nopeammin. Ongelmaksi muodostuu kuitenkin se, että jokainen näytönohjain on erilainen ja eri grafiikkakoodin kirjoittaminen kaikille mahdollisille näytönohjaimille olisi mahdotonta. Tämän takia asia hoidetaan niin sanottujen rajapintojen kautta. Eli näytönohjaimesi ajurit tarjoavat sinulle standardoituja funktioita, jotka toimivat samoin kaikilla näytönohjaimilla. 3D-korttien alkuaikoina tällaisia rajapintoja oli kolme: Glide, Direct3D ja OpenGL. Glide:ä ylläpitäneen 3Dfx:n hävittyä myös Glide kuoli pois. Niinpä nykyään on olemassa kaksi rajapintaa: Microsoftin DirectX-paketin osana oleva Direct3D ja SGI:n alun perin kehittämä, nykyään ARB:n (Architectural Review Board, suurimpien näytönohjainvalmistajien, kuten ATI:n ja Nvidian, yhteenliittymä) ylläpitämä OpenGL. Molemmat ovat suurinpiirtein yhtä nopeita ja molemmilla voi tehdä samat asiat. Ainut ero on, että siinä missä Direct3D toimii vain Windows-käyttöjärjestelmässä (ja Xbox-pelikonsolissa?), OpenGL toimii käytännössä kaikissa käyttöjärjestelmissä ja jopa kämmenmikroissa ja matkapuhelimissa (OpenGL ES). Tämä artikkeli käsittelee OpenGL-rajapintaa, joka on aloittelijalle Direct3D:tä hieman helpompikin. 2 Tarvittavat kirjastot OpenGL:n otsikkotiedostot tulevat kaikkien yleisimpien kääntäjien mukana. Ne ovat nimeltään opengl.h ja glu.h. Lisäksi, koska tässä artikkelissa teemme Windows-ohjelmia, pitää mukaan liittää windows.h. Ohjelma pitää myös linkittää kirjastojen opengl32.lib ja glu32.lib kanssa. Katso

2 kääntäjäsi ohjeista kuinka tämä tehdään. Esim. Dev-Cpp:lla tämä tehdään kirjoittamalla projektin asetuksista löytyvään linker-kenttään "-lopengl32 -lglu32". Myöhemmin tulet tarvitsemaan vielä tiedostoa glext.h. Kyseinen tiedosto päivittyy vähän väliä, joten imuroi itsellesi uusin versio osoitteesta: OpenGL:ää käyttävän C/C++kielisen tiedoston alku näyttäisi siis tyypillisesti tältä: #include <windows.h> #include <gl\gl.h> #include <gl\glu.h> #include <gl\glext.h> 3 Ikkunan luominen Ennen kuin voit piirtää yhtään mitään on sinun luotava ikkuna. Ikkunalla ei varsinaisesti ole mitään tekemistä OpenGL:n kanssa. Se on vain välttämätön paha, joka on tehtävä ennen kuin pääsemme asiaan. Vaikka OpenGL onkin käyttöjärjestelmäriippumaton on ikkunan luominen jokaisella käyttöjärjestelmällä aina erilainen prosessi. Tämä artikkeli käsittelee Windows-ohjelmointia, joten näytän kuinka ikkuna luodaan Windowssissa. Ikkunan luonnissa on periaatteessa 3 eri vaihetta: 1. Rekisteröi ikkunaluokka 2. Luo ikkuna 3. Luo ikkunaan renderöintikonteksti Ensimmäinen vaihe on helppo. Täytetään WNDCLASS-tyyppinen rakenne ja rekisteröidään se RegisterClass()-funktiolla. Kummatkin on määritelty windows.h:ssa. Sinun ei siis itse tarvitse toteuttaa kumpaakaan! WNDCLASS-rakenteen määrittely näyttää tältä: typedef struct _WNDCLASS UINT style; WNDPROC lpfnwndproc; int cbclsextra; int cbwndextra;

3 HANDLE hinstance; HICON hicon; HCURSOR hcursor; HBRUSH hbrbackground; LPCTSTR lpszmenuname; LPCTSTR lpszclassname; WNDCLASS; ja RegisterClass()-funktion prototyyppi tältä: ATOM RegisterClass( CONST WNDCLASS *lpwndclass // address of structure with class data ); Luodaan nyt yksi WNDCLASS-rakenne, täytetään se asianmukaisesti ja rekisteröidään se. WNDCLASS wc; memset(&wc, 0, sizeof(wndclass)); wc.style = CS_HREDRAW CS_VREDRAW CS_OWNDC; wc.hcursor= LoadCursor(NULL, IDC_ARROW); wc.lpfnwndproc = (WNDPROC) WindowProc; wc.hinstance = GetModuleHandle(NULL); wc.lpszclassname = "OpenGLtutoriaali"; if (!RegisterClass(&wc)) return 0; Huomattavaa tässä olivat kentät lpfnwndproc ja lpszclassname. lpszclassname:en pitää keksiä jokin uniikki nimi tälle ikkunaluokalle. Tätä nimeä tarvitaan myöhemmin. Jokainen ikkuna tarvitsee toimiakseen viestinkäsittelijäfunktion. lpfnwndproc sisältää tämän funktion. Palaamme viestinkäsittelijöihin myöhemmin. Loput kentät sisältävät erilaisia asetuksia kuten käytettävän hiiren kursorin jne. Anna niiden olla sellaisena kuin ne ovat yllä, sillä niiden muuttaminen saattaa tehdä ikkunasta OpenGL-yhteensopimattoman. Seuraava vaihe on vähintään yhtä helppo. Luodaan ikkuna CreateWindowEx()-funktiolla. Sen prototyyppi näyttää tältä:

4 HWND CreateWindowEx( DWORD dwexstyle, // extended window style LPCTSTR lpclassname, // pointer to registered class name LPCTSTR lpwindowname, // pointer to window name DWORD dwstyle, // window style int x, // horizontal position of window int y, // vertical position of window int nwidth, // window width int nheight, // window height HWND hwndparent, // handle to parent or owner window HMENU hmenu, // handle to menu, or child-window identifier HINSTANCE hinstance, // handle to application instance LPVOID lpparam // pointer to window-creation data ); Luodaan nyt ikkuna käyttäen kyseistä funktiota. HWND hwnd; hwnd=createwindowex(ws_ex_appwindow, "OpenGLtutoriaali", " OpenGL:n perusteet - Osa 1: Ikkunan luominen", WS_CLIPSIBLINGS WS_CLIPCHILDREN WS_OVERLAPPEDWINDOW, 0, 0, 800, 600, NULL, NULL, GetModuleHandle(NULL), NULL); Jälleen ainoat huomionarvoiset parametrit ovat lpclassname, johon siis pitää antaa äsken rekisteröimämme ikkunaluokan nimi, lpwindowname, joka sisältää ikkunan otsikkorivillä näkyvän tekstin ja nwidth ja nheight, jotka sisältävät ikkunan koon. x ja y ovat ikkunan sijainti suhteessa näytön vasempaan ylänurkkaan. Funktio palauttaa kahvan luotuun ikkunaan. Ota se talteen, sillä sitä tarvitaan myöhemmin. Loput parametrit ovat jälleen erilaisia asetuksia, jotka vaikuttavat ikkunan ulkonäköön ja käyttäytymiseen. Jos esim. haluat, että ikkunan kokoa ei voi muuttaa, lisää dwstyle-parametrin perään vielä liput "& ~WS_MAXIMIZEBOX & ~WS_SIZEBOX" ja jos haluat, että ikkunalla ei ole reunoja eikä otsikkoriviä vaihda dwstyle-parametrin WS_OVERLAPPEDWINDOW-lippu WS_POPUP-lippuun. Erilaisia asetuksia on siis tuhottomasti.

5 Width ja Height parametrien ilmaisema ikkunan koko on siis koko ikkunan koko. Osa ikkunasta kuitenkin jää otsikkopalkin ja reunojen alle, joten haluamme ehkä mieluummin määrittää sen alueen koon, jolle voi piirtää, eli ns. asiakasalueen koon. Tähän voimme käyttää apuna AdjustWindowRectEx()-funktiota, joka laskee koko ikkunan koon asiakasalueen koosta. Se käyttää apunaan RECT-rakennetta. Prototyypit ovat tämän näköiset: BOOL AdjustWindowRectEx( LPRECT lprect, // pointer to client-rectangle structure DWORD dwstyle, // window styles BOOL bmenu, // menu-present flag DWORD dwexstyle // extended style ); typedef struct _RECT LONG left; LONG top; LONG right; LONG bottom; RECT; // rc RECT-rakenne sisältää ikkunan vasemman ylänurkan kooridinaatit (left ja top) ja oikean alanurkan koordinaatit (right ja bottom). Se pitää esitäyttää asiakasalueen koolla. Tämän jälkeen kutsumme AdjustWindowRectEx()-funktiota, joka muuttaa RECT-rakenteen vastaamaan koko ikkunan kokoa. Seuraavassa paranneltu ikkunan luonti, joka vielä keskittää ikkunan utelemalla näytön resoluution GetSystemMetrics()-funktiolla. RECT r; r.left=getsystemmetrics(sm_cxscreen)/2-800/2; r.top=getsystemmetrics(sm_cyscreen)/2-600/2; r.right=r.left+800; r.bottom=r.top+600; AdjustWindowRectEx(&r, WS_CLIPSIBLINGS WS_CLIPCHILDREN WS_OVERLAPPEDWINDOW, FALSE, WS_EX_APPWINDOW); HWND hwnd;

6 hwnd=createwindowex(ws_ex_appwindow, "OpenGLtutoriaali", " OpenGL:n perusteet - Osa 1: Ikkunan luominen", WS_CLIPSIBLINGS WS_CLIPCHILDREN WS_OVERLAPPEDWINDOW, r.left, r.top, r.right-r.left, r.bottom-r.top, NULL, NULL, GetModuleHandle(NULL), NULL); Viimeinen vaihe on hankalin. Meidän pitää luoda ikkunaan renderöintikonteksti. Tässäkin on kolme vaihetta: ensin tehdään laitekonteksti, sitten valitaan pikseliformaatti ja lopuksi vasta luodaan renderöintikonteksti. Laitekonteksti luodaan GetDC()-funktiolla, jolle annetaan parametrinä ikkunan kahva. HDC hdc; hdc=getdc(hwnd); if (!hdc) return 0; Luodaksemme pikseliformaatin meidän täytyy täyttää PIXELFORMATDESCRIPTOR-rakenne. Sen määrittely näyttää tältä: typedef struct tagpixelformatdescriptor // pfd WORD nsize; WORD nversion; DWORD dwflags; BYTE ipixeltype; BYTE ccolorbits; BYTE credbits; BYTE credshift; BYTE cgreenbits; BYTE cgreenshift; BYTE cbluebits; BYTE cblueshift; BYTE calphabits; BYTE calphashift; BYTE caccumbits; BYTE caccumredbits;

7 BYTE caccumgreenbits; BYTE caccumbluebits; BYTE caccumalphabits; BYTE cdepthbits; BYTE cstencilbits; BYTE cauxbuffers; BYTE ilayertype; BYTE breserved; DWORD dwlayermask; DWORD dwvisiblemask; DWORD dwdamagemask; PIXELFORMATDESCRIPTOR; Täytetään nyt kyseinen rakenne asianmukaisesti, jonka jälkeen valitsemme ja asetamme pikseliformaatin funktioilla ChoosePixelFormat() ja SetPixelFormat(). Ideana on, että täytämme PIXELFORMATDESCRIPTOR-rakenteeseen tiedot siitä millaisen pikseliformaatin haluamme. Valitsemme sitten lähimmän vastaavan ChoosePixelFormat()-funktiolla ja asetamme sen palauttaman pikseliformaatin varsinaiseksi pikseliformaatiksi. PIXELFORMATDESCRIPTOR pfd; memset(&pfd, 0, sizeof(pixelformatdescriptor)); pfd.nsize=sizeof(pixelformatdescriptor); pfd.nversion=1; pfd.dwflags=pfd_draw_to_window PFD_SUPPORT_OPENGL PFD_DOUBLEBUFFER; pfd.ipixeltype=pfd_type_rgba; pfd.credbits=8; pfd.cgreenbits=8; pfd.cbluebits=8; pfd.calphabits=8; pfd.cstencilbits=8; pfd.cdepthbits=16; pfd.ilayertype=pfd_main_plane; int pixelformat; pixelformat=choosepixelformat(hdc, &pfd); if (!pixelformat) return 0; if (!SetPixelFormat(hdc, pixelformat, &pfd)) return 0;

8 Lopuksi luomme renderöintikontekstin. Tämä tehdään ns. wigle-funktioilla wglcreatecontext() ja wglmakecurrent(). HGLRC hrc; hrc=wglcreatecontext(hdc); if (!hrc) return 0; if (!wglmakecurrent(hdc, hrc)) return 0; Lopuksi ikkuna tehdään vielä näkyväksi ShowWindow()-funktiolla ja tuodaan etualalle funktioilla SetForegroundWindow() ja SetFocus(). ShowWindow(hwnd, SW_SHOW); SetForegroundWindow(hwnd); SetFocus(hwnd); 4 Viestinkäsittelijä Koska Windowsissa pyörii useampi ohjelma yhtä aikaa täytyy niillä olla jokin tapa kommunikoida toistensa ja Windowssin kanssa. Tämä tapa on ns. viestinkäsittelijäfunktio, jollainen jokaisella ikkunalla täytyy olla. Aina kun Windowssilla on jokin viesti jollekkin ohjelmalle se kutsuu kyseisen ohjelman viestinkäsittelijää. Sinun on siis itse toteutettava ohjelmallesi viestinkäsittelyfunktio ja sen prototyypin on aina näytettävä seuraavalta: LRESULT CALLBACK WindowProc( HWND hwnd, // handle of window UINT umsg, // message identifier WPARAM wparam, // first message parameter LPARAM lparam // second message parameter ); Funktiolla on siis neljä parametria, joista meitä kiinnostaa erityisesti umsg. Se sisältää itse viestin. Sillä on tuhottomasti erilaisia mahdollisia arvoja esim: WM_ACTIVE, WM_CLOSE ja WM_PAINT. Sinun ei kuitenkaan tarvitse reagoida niihin kaikkiin vaan ainoastaan niihin joihin haluat. Ainut "pakollinen" käsiteltävä on WM_CLOSE, johon reagoidaan kutsumalla PostQuitMessage()-funktiota parametrillä 0. Ikkuna nimittäin saa kyseisen viestin, kun käyttäjä

9 yrittää sulkea sen esim. painamalla sulkemispainiketta. Muita tärkeitä viestejä ovat WM_SIZE, jonka ohjelma saa aina kun sen ikkunan kokoa muutetaan ja WM_PAINT, jonka ohjelma saa aina kun ikkuna täytyy piirtää uudestaan. Näin voi käydä esim. kun ikkunan edessä ollut toinen ikkuna on siirretty syrjään. WM_PAINT-viestin käsittely alkaa aina BeginPaint()-funktiolla ja loppuu EndPaint()-funktioon. Jos käsittelet jonkin viestin palauta 0 ja jos taas et, lähetä se DefWindowProc()-funktiolle ja palauta sen palauttama arvo. Viestin käsittely lienee helpointa toteuttaa switch-rakenteella. Seuraavassa yksinkertainen esimerkkitoteutus: LRESULT CALLBACK WindowProc(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam) switch (umsg) // Ikkuna yritetään sulkea kutsu PostQuitMessage()-funktiota. case WM_CLOSE: PostQuitMessage(0); return 0; // Viestiä ei käsitelty kutsu DefWindowProc()-funktiota. return DefWindowProc(hwnd, umsg, wparam, lparam); 5 Pääfunktio DOS:issa ja Linuxsissa pääfunktio on yleensä muotoa: int main(int argc, char* argv[]). Windowsissa asia on hieman monimutkaisempi. Pääfunktio on muotoa: int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow); Paljon mutkikkaita parametrejä, mutta eipä hätää, niistä ei tarvitse välittää. Lisäksi pääfunktiosta täytyy löytyä standardi viestinkäsittelysilmukka: MSG msg; while(1)

10 if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) if (msg.message==wm_quit) break; TranslateMessage(&msg); DispatchMessage(&msg); else // Lisää oma suoritettava ohjelmakoodisi tähän // Tyypillisesti tässä välissä suoritetaan // pelilogiikkaa ja renderöidään yksi "frame". Eli kyseessä on loputon silmukka, joka purkaa jonosta Windowssin ohjelmalle lähettämiä viestejä ja käsittelee ne. Ainoastaan silloin, kun ei ole yhtään viestiä käsiteltävänä voidaan suorittaa ohjelman omaa koodia. Silmukasta saa poistua vasta kun ohjelma saa sulkemisviestin WM_QUIT. Jonka jälkeen ohjelman tulee sammua. 6 Grafiikan piirtäminen Kun ikkuna on luotu päästään itse asiaan eli grafiikan piirtoon. Ensin on määriteltävä viewport eli se alue ikkunasta, jolle piirretään. Tämä tapahtuu glviewport()-funktiolla. Sen prototyyppi näyttää tältä: void glviewport(glint x, GLint y, GLsizei width, GLsizei height); x ja y ovat viewportin vasemman alareunan koordinaatit suhteessa ikkunan vasemman alareunan koordinaatteihin ja width ja height viewportin leveys ja korkeus (siis pikseleissä ilmaistuna). Esim. jos meillä on 800x600 ikkuna ja haluamme koko sen alan piirtämistä varten käyttäisimme kutsua glviewport(0, 0, 800, 600);. Viewport voi myös periaatteessa mennä ikkunan reunojen yli, jolloin ikkunan ulkopuolisia alueita ei yksinkertaisesti piirretä, mutta bugisimmilla näytönohjaimenajureilla tämä saattaa aiheuttaa mitä omituisempia ongelmia. Kun viewport on määritelty täytyy vielä määritellä koordinaatisto (tai pidemminkin projektiomatriisi, mutta siitä enemmän joskus toiste). OpenGL:ssä on kaksi erilaista koordinaatistoa: 2D-koordinaatisto 2D-grafiikkaa varten ja 3D-koordinaatisto 3D-grafiikkaa varten.

11 Käytämme tässä esimerkissä hieman helpompaa 2D-koordinaatistoa. Se luodaan funktiolla gluortho2d(), jonka prototyyppi näyttää tältä: void gluortho2d(gldouble left, GLdouble right, GLdouble bottom, GLdouble top); OpenGL:ssä X-akseli kulkee vaakasuorassa ja Y-akseli pystysuorassa. left-parametri kertoo X- akselin arvon viewportin vasemmassa reunassa ja right X-akselin arvon viewportin oikeassa reunassa. Vastaavasti bottom ja top Y-akselille. Esim. jos haluaisimme määritellä koordinaatiston niin, että origo olisi viewportin keskellä ja sekä Y- että X-akseli ulottuisivat 10 yksikköä joka suuntaan käyttäisimme kutsua gluortho2d(-10, 10, -10, 10);. Jos taas meillä olisi kokoa 800x600 oleva viewport ja haluaisimme koordinaatiston, jossa origo on vasemmassa alanurkassa ja yksi pikseli vastaa aina yhtä yksikköä käyttäisimme kutsua gluortho2d(0, 800, 0, 600);. Vihdoin ja viimein pääsemme piirtämään itse grafiikkaa. OpenGL:ssä on monta tapaa piirtää, mutta helpoin niistä on varmasti glbegin() glend() parin käyttäminen. Ensin kutsutaan glbegin()- funktiota, jonka prototyyppi näyttää tältä: void glbegin(glenum mode); Sillä on siis vain yksi parametri mode, joka kertoo mitä piirretään. Sen mahdolliset arvot ovat: GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP, GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS, GL_QUAD_STRIP ja GL_POLYGON. Näistä tärkeimmät ovat GL_POINTS, joka piirtää pisteitä, GL_LINES, joka piirtää viivoja ja GL_TRIANGLES, joka piirtää kolmioita. glbegin()-kutsun jälkeen kutsumme glvertex2f()-funktiota toistuvasti. Sille annetaan piirrettävän primitiivin lakipisteen koordinaatit. Sen prototyyppi näyttää tältä. void glvertex2f(glfloat x, GLfloat y); Eli X ja Y koordinaatit annetaan parametrina. GL_POINTS tapauksessa jokaiseen glvertex2f()- funktion määräämiin koordinaatteihin piirretään piste. GL_LINES tapauksessa aina kahden glvertex2f()-kutsun määräämien koordinaattien välille piirretään viiva ja GL_TRIANGLES tapauksessa aina kolmen kutsun välille kolmio. Käytimme tässä siis glvertex2f()-funktiota koska

12 meillä on 2D koordinaatisto. Myöhemmin 3D-koordinaatistossa käytämme glvertex3f()-funktiota. Lopuksi kun kaikki tarvittavat glvertex2f() kutsut on tehty kutsutaan glend()-funktiota. Se ei ota yhtään parametriä. Seuraava esimerkki piirtää viivan pisteestä (0, 0) pisteeseen (200, 100). glbegin(gl_lines); glvertex2f(0, 0); glvertex2f(200, 100); glend(); Piirrettävälle primitiiville voidaan myös asettaa väri glcolor3f()-funktiolla. Prototyyppi näyttää tältä: void glcolor3f(glfloat red, GLfloat green, GLfloat blue);. Se ottaa parametrinaan värin red, green ja blue arvot. Nämä arvot ovat väliltä 0-1 ja niitä sekoittamalla voidaan muodostaa kaikki mahdolliset värit. Väri voidaan asettaa halutessa jokaiselle primitiivin lakipisteelle erikseen. Jos primitiivin lakipisteet ovat eri väriset niiden väliin jäävien pikselien värit interpoloidaan. Eli jos viivan toinen pää on musta ja toinen valkea, on viiva keskeltä harmaa. Seuraava esimerkki piirtää kolmion, jonka yksi nurkka on punainen, yksi sininen ja yksi vihreä. glbegin(gl_triangles); glcolor3f(1, 0, 0); glvertex2f(0, 5); glcolor3f(0, 1, 0); glvertex2f(-5, -5); glcolor3f(0, 0, 1); glvertex2f(5, -5); glend(); Vielä pari juttua ennen kuin kaikki on täydellistä. Nimittäin ennen piirtoa ikkuna on tyhjennettävä kaikesta mahdollisesta muusta grafiikasta, tämä tapahtuu glclear()-funktiolla, jolle annetaan parametriksi GL_COLOR_BUFFER_BIT. Se toinen juttu on sitten niin sanottu kaksoispuskurointi.

13 Nimittäin OpenGL.ssä on kaksi piirtopintaa (tosin vain silloin kun pikseliformaaatti luotiin PFD_DOUBLEBUFFER parametrillä), joista toinen on aina näyttövuorossa ja toinen aina piirtovuorossa. Niinpä aina kun piirrät jotain se ei ilmesty näytölle vaan sille toiselle piilossa olevalle pinnalle. Jotta grafiikka saataisiin näkyväksi täytyy nämä pinnat piirtämisen jälkeen vaihtaa keskenään SwapBuffers()-funktiolla, jonka prototyyppi näyttää tältä: BOOL SwapBuffers( HDC hdc //Device context whose buffers get swapped ); Eli se ottaa parametrinään ikkunan luonnin yhteydessä saadun laitekontekstin. 7 Esimerkkiohjelma Lopuksi täydellinen esimerkkiohjelma, joka luo ikkunan ja piirtää sen keskelle kolmion. Huomaa kuinka itse ikkunan luominen vie suurimman osan koodista, kun taas varsinainen grafiikan piirto vie vain muutaman rivin. Tämän takia Internet on pullollaan erilaisia "kehys"-kirjastoja, joilla voit luoda ikkunan nopeasti parilla funktion kutsulla. Näistä kuuluisimpia ovat GLUT ( ) ja GLFW ( ). Vielä mainittakoon, että jos haluat saada käyttäjältä syötettä, niin näppäimen tila voidaan lukea Windowsissa GetAsyncKeyState()-funktiolla ja hiiren tila GetCursorPos()-funktiolla. Lisää tietoa näiden käytöstä löytyy msdn:stä ( ). Jos käytät GLUT:a tai GLFW:tä, niin näistä kyllä löytyy taas omat funktionsa näppäinten lukuun. Voit imuroida oheisen lähdekoodin ja valmiiksi käännetyn version tästä: #include <windows.h> #include <gl\gl.h> #include <gl\glu.h> #include <math.h> //#include <gl\glext.h> // Ei tarvita tässä ohjelmassa // Määrittele laitekonteksti globaaliksi sitä nimittäin tarvitaan myös pääfunktiossa. HDC hdc; // Viestinkäsittelijä LRESULT CALLBACK WindowProc(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam)

14 switch (umsg) // Koska piirrämme ikkunan sisällön pääsilmukassa jatkuvasti uudelleen // reakoimme WM_PAINT-viestiin vain tyhjentämällä ikkunan mustaksi. case WM_PAINT: PAINTSTRUCT p; BeginPaint(hwnd, &p); glclear(gl_color_buffer_bit); SwapBuffers(hdc); EndPaint(hwnd, &p); return 0; // Ikkuna yritetään sulkea kutsu PostQuitMessage()-funktiota. case WM_CLOSE: PostQuitMessage(0); return 0; // Käsittele myös WM_SIZE se lähetetään ikkunalle aina kun sen kokoa muutetaan. // Tämä on oiva tilaisuus muuttaa viewport // oikean kokoiseksi peittämään koko ikkuna. case WM_SIZE: // Ikkunan uusi koko saadaan lparam parametrista LOWORD ja HIWORD makroilla. glviewport(0, 0, LOWORD(lParam), HIWORD(lParam)); return 0; // Viestiä ei käsitelty kutsu DefWindowProc()-funktiota. return DefWindowProc(hwnd, umsg, wparam, lparam); int luoikkuna(unsigned int leveys, unsigned int korkeus, char *otsikko)

15 // Rekisteröi ikkunaluokka WNDCLASS wc; memset(&wc, 0, sizeof(wndclass)); wc.style = CS_HREDRAW CS_VREDRAW CS_OWNDC; wc.hcursor= LoadCursor(NULL, IDC_ARROW); wc.lpfnwndproc = (WNDPROC) WindowProc; wc.hinstance = GetModuleHandle(NULL); wc.lpszclassname = "OpenGLtutoriaali"; if (!RegisterClass(&wc)) return 0; // Luo ikkuna RECT r; r.left=getsystemmetrics(sm_cxscreen)/2-leveys/2; r.top=getsystemmetrics(sm_cyscreen)/2-korkeus/2; r.right=r.left+leveys; r.bottom=r.top+korkeus; AdjustWindowRectEx(&r, WS_CLIPSIBLINGS WS_CLIPCHILDREN WS_OVERLAPPEDWINDOW, FALSE, WS_EX_APPWINDOW); HWND hwnd; hwnd=createwindowex(ws_ex_appwindow, "OpenGLtutoriaali", otsikko, WS_CLIPSIBLINGS WS_CLIPCHILDREN WS_OVERLAPPEDWINDOW, r.left, r.top, r.right-r.left, r.bottom-r.top, NULL, NULL, GetModuleHandle(NULL), NULL); // Luo laitekonteksti hdc=getdc(hwnd); if (!hdc) return 0; // Valitse pikseliformaatti PIXELFORMATDESCRIPTOR pfd; memset(&pfd, 0, sizeof(pixelformatdescriptor)); pfd.nsize=sizeof(pixelformatdescriptor); pfd.nversion=1; pfd.dwflags=pfd_draw_to_window PFD_SUPPORT_OPENGL PFD_DOUBLEBUFFER; pfd.ipixeltype=pfd_type_rgba; pfd.credbits=8; pfd.cgreenbits=8;

16 pfd.cbluebits=8; pfd.calphabits=8; pfd.cstencilbits=8; pfd.cdepthbits=16; pfd.ilayertype=pfd_main_plane; int pixelformat; pixelformat=choosepixelformat(hdc, &pfd); if (!pixelformat) return 0; if (!SetPixelFormat(hdc, pixelformat, &pfd)) return 0; // Luo renderöintikonteksti HGLRC hrc; hrc=wglcreatecontext(hdc); if (!hrc) return 0; if (!wglmakecurrent(hdc, hrc)) return 0; // Tuo ikkuna näkyviin ShowWindow(hwnd, SW_SHOW); SetForegroundWindow(hwnd); SetFocus(hwnd); // Palauta onnistuminen return 1; // Pääfunktio int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow) // Luo ikkuna if (!luoikkuna(800, 600, "OpenGL:n perusteet - osa 1: Ikkunan luominen")) return 0; // Määrittele viewport ja koordinaatisto koko ikkunan kokoiseksi glviewport(0, 0, 800, 600); glmatrixmode(gl_projection); gluortho2d(-13, 13, -10, 10); // Viestinkäsittelysilmukka

17 MSG msg; while(1) if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) if (msg.message==wm_quit) break; TranslateMessage(&msg); DispatchMessage(&msg); else // Tyhjennä puskuri glclear(gl_color_buffer_bit); // Piirrä kolmio glbegin(gl_triangles); glcolor3f(1, 0, 0); glvertex2f(0, 5); glcolor3f(0, 1, 0); glvertex2f(-5, -5); glcolor3f(0, 0, 1); glvertex2f(5, -5); glend(); // Vaihda puskuri näytölle. SwapBuffers(hdc); return 0; 8 Loppusanat Tässä artikkelissa opit luomaan OpenGL-yhteensopivan ikkunan Windows-käyttöjärjestelmässä. Seuraavassa osassa siirrymme varsinaisen 3D-grafiikan piirtoon. Raportoithan kaikki tästä artikkelista löytämäsi virheet (niin kirjoitus-, kuin asiavirheetkin) osoitteeseen markus.ilmola@pp.inet.fi, niin korjaan ne mahdollisimman nopeasti. Myös kaikki kommentit ja kysymykset ovat tervetulleita.

OpenGL:n perusteet - Osa 2: 3D grafiikka

OpenGL:n perusteet - Osa 2: 3D grafiikka OpenGL:n perusteet - Osa 2: 3D grafiikka OpenGL on käyttöjärjestelmäriippumaton kirjasto 2D- ja 3D-grafiikan piirtoon. Tämä artikkelisarja opettaa sinulle 3D-grafiikan perusteet OpenGL:ää käyttäen. Esimerkeissä

Lisätiedot

Windowsin sanomanvälitys. Juha Järvensivu 2007

Windowsin sanomanvälitys. Juha Järvensivu 2007 Windowsin sanomanvälitys Juha Järvensivu juha.jarvensivu@tut.fi 2007 Sisällys Windowsin sanomat Sanomanvälitysmekanismi Ikkunan kahva Sanomien lähettäminen Esimerkki winamp Tapahtumapohjainen toiminta

Lisätiedot

Windowsin sanomanvälitys. Juha Järvensivu juha.jarvensivu@tut.fi 2008

Windowsin sanomanvälitys. Juha Järvensivu juha.jarvensivu@tut.fi 2008 Windowsin sanomanvälitys Juha Järvensivu juha.jarvensivu@tut.fi 2008 Sisällys Windowsin sanomat ja Sanomanvälitysmekanismi Ikkunan kahva ja Sanomien lähettäminen Windows API ohjelmointi Resurssit Sanomat

Lisätiedot

OpenGL:n perusteet Osa 4: Valot ja varjot

OpenGL:n perusteet Osa 4: Valot ja varjot OpenGL:n perusteet Osa 4: Valot ja varjot OpenGL on käyttöjärjestelmäriippumaton kirjasto 2D- ja 3D-grafiikan piirtoon. Tämä artikkelisarja opettaa sinulle 3D-grafiikan perusteet OpenGL:ää käyttäen. Esimerkeissä

Lisätiedot

OpenGL:n perusteet Osa 3: Teksturointi

OpenGL:n perusteet Osa 3: Teksturointi OpenGL:n perusteet Osa 3: Teksturointi OpenGL on käyttöjärjestelmäriippumaton kirjasto 2D- ja 3D-grafiikan piirtoon. Tämä artikkelisarja opettaa sinulle 3D-grafiikan perusteet OpenGL:ää käyttäen. Esimerkeissä

Lisätiedot

Tapahtumapohjainen ohjelmointi. Juha Järvensivu juha.jarvensivu@tut.fi 2007

Tapahtumapohjainen ohjelmointi. Juha Järvensivu juha.jarvensivu@tut.fi 2007 Tapahtumapohjainen ohjelmointi Juha Järvensivu juha.jarvensivu@tut.fi 2007 Sisältö Tapahtumapohjainen ohjelmointi Käyttöliittymän rakenne Pääikkuna (top-level window) Lapsi-ikkuna (child window) Dialogit

Lisätiedot

Peliohjelmointirajapinnoista

Peliohjelmointirajapinnoista Peliohjelmointi: Peliohjelmointirajapinnoista Teppo Soininen & Antti Puhakka Lähteet: www.opengl.org, OpenGL-spesifikaatio, Tietokonegrafiikka luentomoniste, MSDN, Introduction to 3D Game Programming with

Lisätiedot

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2008

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2008 Tapahtumapohjainen ohjelmointi Juha Järvensivu juha.jarvensivu@tut.fi 2008 Sisältö Tapahtumapohjainen ohjelmointi Käyttöliittymän rakenne Pääikkuna (top-level window) Lapsi-ikkuna (child window) Dialogit

Lisätiedot

Winapi. Juha Järvensivu 2007

Winapi. Juha Järvensivu 2007 Winapi Juha Järvensivu juha.jarvensivu@tut.fi 2007 Sisällys Osa 1 Ikkunan päivittäminen Resurssikuvaustiedosto Valikot Dialogien luonti Osa 2 Winapi ja olio-ohjelmointi (esimerkki) Yksinkertainen winapi-sovellus

Lisätiedot

Peliohjelmointirajapinnoista

Peliohjelmointirajapinnoista Peliohjelmointi: Peliohjelmointirajapinnoista Teppo Soininen & Antti Puhakka Lähteet: www.opengl.org, OpenGL-spesifikaatio, Tietokonegrafiikka luentomoniste, MSDN, Introduction to 3D Game Programming with

Lisätiedot

1 of

1 of http:people.cc.jyu.fi/~minurmin/gko/materiaali/esimerkit/... http:people.cc.jyu.fi/~minurmin/gko/materiaali/esimerkit/... /* PROGRAM: Mhello.c PURPOSE: "Pienin Windows-ohjelma". Tulostaa näyttöön tekstin

Lisätiedot

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla ALKUHARJOITUS Kynän ja paperin avulla peilaaminen koordinaatistossa a) Peilaa pisteen (0,0) suhteen koordinaatistossa sijaitseva - neliö, jonka

Lisätiedot

Graafisen käyttöliittymän ohjelmointi

Graafisen käyttöliittymän ohjelmointi TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Luento 2 Tapahtumapohjainen ohjelmointi Juha-Matti Vanhatupa Sisältö Tapahtumapohjainen ohjelmointi Tapahtumakuuntelijoiden

Lisätiedot

Matikkaa KA1-kurssilaisille, osa 3: suoran piirtäminen koordinaatistoon

Matikkaa KA1-kurssilaisille, osa 3: suoran piirtäminen koordinaatistoon Matikkaa KA1-kurssilaisille, osa 3: suoran piirtäminen koordinaatistoon KA1-kurssi on ehkä mahdollista läpäistä, vaikkei osaisikaan piirtää suoraa yhtälön perusteella. Mutta muut kansiksen kurssit, no

Lisätiedot

1.1 Pino (stack) Koodiluonnos. Graafinen esitys ...

1.1 Pino (stack) Koodiluonnos. Graafinen esitys ... 1. Tietorakenteet Tietorakenteet organisoivat samankaltaisten olioiden muodostaman tietojoukon. Tämä järjestys voidaan saada aikaan monin tavoin, esim. Keräämällä oliot taulukkoon. Liittämällä olioihin

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava

Lisätiedot

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot Tiedosto yhteenkuuluvien tietojen joukko, joka on tavallisesti talletettu pysyväismuistiin muodostuu tietueista, jotka voivat olla keskenään samanlaisia tai vaihdella tyypiltään tiedostot ovat joko tekstitiedostoja

Lisätiedot

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille: Merkkijonot C-kielessä merkkijono on taulukko, jonka alkiot ovat char -tyyppiä. Taulukon viimeiseksi merkiksi tulee merkki '\0', joka ilmaisee merkkijonon loppumisen. Merkkijono määritellään kuten muutkin

Lisätiedot

Kuvat. 1. Selaimien tunnistamat kuvatyypit

Kuvat. 1. Selaimien tunnistamat kuvatyypit Kuvat Kuvia voi liittää xhtml-sivulle -elementillä -elementillä -elementillä lomakkeiden yhteydessä lähinnä painikenappeja taustakuvina -elementin background-attribuutilla tai

Lisätiedot

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

Lisätiedot

GeoGebra-harjoituksia malu-opettajille

GeoGebra-harjoituksia malu-opettajille GeoGebra-harjoituksia malu-opettajille 1. Ohjelman kielen vaihtaminen Mikäli ohjelma ei syystä tai toisesta avaudu toivomallasi kielellä, voit vaihtaa ohjelman käyttöliittymän kielen seuraavasti: 2. Fonttikoon

Lisätiedot

ASCII-taidetta. Intro: Python

ASCII-taidetta. Intro: Python Python 1 ASCII-taidetta All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/18cplpy to find out what to do.

Lisätiedot

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Graafisen käyttöliittymän ohjelmointi Syksy 2013 TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Syksy 2013 Luento 5 Qt: Grafiikan piirto Juha-Matti Vanhatupa Sisältö GDI Qt paint system Koordinaatisto-operaatioita

Lisätiedot

3.3 Paraabeli toisen asteen polynomifunktion kuvaajana. Toisen asteen epäyhtälö

3.3 Paraabeli toisen asteen polynomifunktion kuvaajana. Toisen asteen epäyhtälö 3.3 Paraabeli toisen asteen polynomifunktion kuvaajana. Toisen asteen epäyhtälö Yhtälön (tai funktion) y = a + b + c, missä a 0, kuvaaja ei ole suora, mutta ei ole yhtälökään ensimmäistä astetta. Funktioiden

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

Muuttujien roolit Kiintoarvo cin >> r;

Muuttujien roolit Kiintoarvo cin >> r; Muuttujien roolit Muuttujilla on ohjelmissa eräitä tyypillisiä käyttötapoja, joita kutsutaan muuttujien rooleiksi. Esimerkiksi muuttuja, jonka arvoa ei muuteta enää kertaakaan muuttujan alustamisen jälkeen,

Lisätiedot

Valintanauhan komennot Valintanauhan kussakin välilehdessä on ryhmiä ja kussakin ryhmässä on toisiinsa liittyviä komentoja.

Valintanauhan komennot Valintanauhan kussakin välilehdessä on ryhmiä ja kussakin ryhmässä on toisiinsa liittyviä komentoja. Pikaopas Microsoft Excel 2013 näyttää erilaiselta kuin aiemmat versiot. Tämän oppaan avulla pääset alkuun nopeasti ja saat yleiskuvan uusista ominaisuuksista. Komentojen lisääminen pikatyökaluriville Pidä

Lisätiedot

4.1 Kaksi pistettä määrää suoran

4.1 Kaksi pistettä määrää suoran 4.1 Kaksi pistettä määrää suoran Kerrataan aluksi kurssin MAA1 tietoja. Geometrisesti on selvää, että tason suora on täysin määrätty, kun tunnetaan sen kaksi pistettä. Joskus voi tulla vastaan tilanne,

Lisätiedot

Johdanto: Jaetut näytöt Jaetun näytön asetukset ja näytöstä poistuminen Aktiivisen sovelluksen valitseminen

Johdanto: Jaetut näytöt Jaetun näytön asetukset ja näytöstä poistuminen Aktiivisen sovelluksen valitseminen Kappale 14: Jaetut näytöt 14 Johdanto: Jaetut näytöt... 232 Jaetun näytön asetukset ja näytöstä poistuminen... 233 Aktiivisen sovelluksen valitseminen... 235 TI-89 / TI-92 Plus:ssä voit jakaa näytön ja

Lisätiedot

6. Harjoitusjakso II. Vinkkejä ja ohjeita

6. Harjoitusjakso II. Vinkkejä ja ohjeita 6. Harjoitusjakso II Seuraavaksi harjoitellaan algebrallisten syötteiden, komentojen ja funktioiden käyttöä GeoGebrassa. Tarjolla on ensimmäisen harjoittelujakson tapaan kahden tasoisia harjoituksia: perustaso

Lisätiedot

Jypelin käyttöohjeet» Ruutukentän luominen

Jypelin käyttöohjeet» Ruutukentän luominen Jypelin käyttöohjeet» Ruutukentän luominen Pelissä kentän (Level) voi luoda tekstitiedostoon "piirretyn" mallin mukaisesti. Tällöin puhutaan, että tehdään ns. ruutukenttä, sillä tekstitiedostossa jokainen

Lisätiedot

OHJE Jos Kelaimeen kirjautuminen ei onnistu Mac-koneella Sisällys

OHJE Jos Kelaimeen kirjautuminen ei onnistu Mac-koneella Sisällys Sisällys 1 Varmista, että DigiSign-kortinlukijaohjelmisto on käynnissä 2 1.1 DigiSign-kuvake 2 1.2 Sovelluksen käynnistäminen 2 1.3 Kortin toiminnan varmistaminen 4 2 Jos käytät selaimena Mozilla, Firefox

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Rekursio Rekursion käyttötapauksia Rekursio määritelmissä Rekursio ongelmanratkaisussa ja ohjelmointitekniikkana Esimerkkejä taulukolla Esimerkkejä linkatulla listalla Hanoin

Lisätiedot

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana Muilla kielillä: English Suomi Pong-peli, vaihe 2 Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana Laitetaan pallo liikkeelle Tehdään kentälle reunat Vaihdetaan kentän taustaväri Zoomataan

Lisätiedot

QT tyylit. Juha Järvensivu 2008

QT tyylit. Juha Järvensivu 2008 QT tyylit Juha Järvensivu juha.jarvensivu@tut.fi 2008 Sisällys QStyle Style sheet Tyyli (QStyle) Kapseloi widgettien Look And Feel ominaisuudet Toteutettu QT:ssa QStyle luokkaan Sisäänrakennettuja tyylejä

Lisätiedot

UpdateIT 2010: Editorin käyttöohje

UpdateIT 2010: Editorin käyttöohje UpdateIT 2010: Editorin käyttöohje Käyttäjätuki: Suomen Golfpiste Oy Esterinportti 1 00240 HELSINKI Puhelin: (09) 1566 8800 Fax: (09) 1566 8801 E-mail: gp@golfpiste.com Sisällys Editorin käyttöohje...

Lisätiedot

CSS-kielen avulla määritellään HTML-dokumentin tyyli. CSS avulla voidaan tarkemmin määritellä eri elementtien ominaisuuksia.

CSS-kielen avulla määritellään HTML-dokumentin tyyli. CSS avulla voidaan tarkemmin määritellä eri elementtien ominaisuuksia. CSS1 CSS (Cascading Style Sheets) CSS-kielen avulla määritellään HTML-dokumentin tyyli. CSS avulla voidaan tarkemmin määritellä eri elementtien ominaisuuksia. Esim.

Lisätiedot

Ajokorttimoduuli Moduuli 2. - Laitteenkäyttö ja tiedonhallinta. Harjoitus 1

Ajokorttimoduuli Moduuli 2. - Laitteenkäyttö ja tiedonhallinta. Harjoitus 1 Ajokorttimoduuli Moduuli 2 - Laitteenkäyttö ja tiedonhallinta Harjoitus 1 Tämän harjoituksen avulla opit alustamaan levykkeesi (voit käyttää levykkeen sijasta myös USBmuistitikkua). Harjoitus tehdään Resurssienhallinnassa.

Lisätiedot

OpenOffice.org Impress 3.1.0

OpenOffice.org Impress 3.1.0 OpenOffice.org Impress 3.1.0 Sisällysluettelo 1 Esityksen luominen...1 2 Dian rakenne...2 3 Dian lisääminen, poistaminen, siirtäminen ja kopioiminen...3 4 Diojen koon muuttaminen...3 5 Pohjatyylisivut...4

Lisätiedot

Java layoutit. Juha Järvensivu juha.jarvensivu@tut.fi 2007

Java layoutit. Juha Järvensivu juha.jarvensivu@tut.fi 2007 Java layoutit Juha Järvensivu juha.jarvensivu@tut.fi 2007 Layout Container Container LayoutManager Component Component Component Komponentin koko minimikoko setminumumsize(dimension d) Useimmat layoutmanagerit

Lisätiedot

Loppukurssin järjestelyt C:n edistyneet piirteet

Loppukurssin järjestelyt C:n edistyneet piirteet C! Loppukurssin järjestelyt C:n edistyneet piirteet 30.3.2017 Ohjelmassa Ohjelmontitehtävän järjestelyt Tietokonetentin järjestelyt Esikääntäjä Parametrilistat Funktio-osoittimet Kunniamainintoja Kuura

Lisätiedot

Octo käyttöohje 1. Sisältö

Octo käyttöohje 1. Sisältö Octo käyttöohje 1 Sisältö Sisältö...1 Sisäänkirjautuminen...2 Etusivu...2 Uimarihaku...3 Uimariryhmät...4 Seurahaku...4 Kilpailutilastot...5 Ilmoittautuminen kilpailuun...6 Kilpailuun ilmoittautuminen...7

Lisätiedot

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

Ohjelmointiharjoituksia Arduino-ympäristössä

Ohjelmointiharjoituksia Arduino-ympäristössä Ohjelmointiharjoituksia Arduino-ympäristössä Yleistä Arduino-sovelluksen rakenne Syntaksi ja käytännöt Esimerkki ohjelman rakenteesta Muuttujat ja tietotyypit Tietotyypit Esimerkkejä tietotyypeistä Ehtolauseet

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014 18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

Muita kuvankäsittelyohjelmia on mm. Paint Shop Pro, Photoshop Elements, Microsoft Office Picture Manager

Muita kuvankäsittelyohjelmia on mm. Paint Shop Pro, Photoshop Elements, Microsoft Office Picture Manager Missio: 1. Asentaminen 2. Valokuvien tarkastelu, tallennus/formaatit, koko, tarkkuus, korjaukset/suotimet, rajaus 3. Kuvan luonti/työkalut (grafiikka kuvat) 4. Tekstin/grafiikan lisääminen kuviin, kuvien/grafiikan

Lisätiedot

YH1b: Office365 II, verkko-opiskelu

YH1b: Office365 II, verkko-opiskelu YH1b: Office365 II, verkko-opiskelu Huom. Suosittelemme tämän harjoituksen 1b tekemistä mikroluokassa, jotta yliopiston mikroluokat tulevat edes hieman tutuiksi. Harjoituksen tavoitteet Harjoituksessa

Lisätiedot

Luento 2: 2D Katselu. Sisältö

Luento 2: 2D Katselu. Sisältö Tietokonegrafiikan perusteet T-111.4300 3 op Luento 2: 2D Katselu Lauri Savioja 11/07 2D katselu / 1 Sisältö Ikkuna ja näyttöalue Viivanleikkaus ikkunaan Monikulmion leikkaus ikkunaan Tekstin leikkaus

Lisätiedot

Sisällys. T-111.4300 Tietokonegrafiikan perusteet. OpenGL-ohjelmointi 11/2007. Mikä on OpenGL?

Sisällys. T-111.4300 Tietokonegrafiikan perusteet. OpenGL-ohjelmointi 11/2007. Mikä on OpenGL? T-111.4300 Tietokonegrafiikan perusteet OpenGL-ohjelmointi 11/2007 Sisällys Mikä on OpenGL? historia nykytilanne OpenGL:n toiminta Piirtäminen ja matriisit Muuta hyödyllistä kameran sijoittaminen valaistus

Lisätiedot

CEM DT-3353 Pihtimittari

CEM DT-3353 Pihtimittari CEM DT-3353 Pihtimittari Sivu 1/5 CEM DT-3353 Pihtimittari Ongelma Mittarin ohjelmisto ilmoittaa NO DATA vaikka tiedonsiirtokaapeli on kytketty tietokoneen ja mittarin välille, mittarissa on virta päällä

Lisätiedot

Demokoodaus Linuxilla, tapaus Eternity

Demokoodaus Linuxilla, tapaus Eternity Demokoodaus Linuxilla, tapaus Eternity Tuomo Sipola tuomo.sipola@iki.fi Linkin lanit 9.4.2010 Tuomo Sipola tuomo.sipola@iki.fi () Demokoodaus Linuxilla, tapaus Eternity Linkin lanit 9.4.2010 1 / 17 Sisältö

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Muuttujat eri muisteissa Ohjelman muistialueen layout Paikallisen ja globaalin muuttujan ominaisuudet Dynaamisen muistinkäytön edut Paikallisten muuttujien dynaamisuus ADT

Lisätiedot

Loppukurssin järjestelyt

Loppukurssin järjestelyt C! Loppukurssin järjestelyt 29.3.2018 Ohjelmassa Yhteenvetoa palautteesta Ohjelmontitehtävän järjestelyt Tietokonetentin järjestelyt Kysyttävää / kerrattavaa 10-kierroksen asioista? Aikatauluista 10. kierroksen

Lisätiedot

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

ETAPPI ry JOOMLA 2.5 Mediapaja. Artikkeleiden hallinta ja julkaisu

ETAPPI ry JOOMLA 2.5 Mediapaja. Artikkeleiden hallinta ja julkaisu ETAPPI ry JOOMLA 2.5 Artikkeleiden hallinta ja julkaisu ETAPPI ry JOOMLA 2.5 Sivu 1(16) Sisällysluettelo 1 Joomla! sivuston sisällöntuotanto... 2 2 Artikkeleiden julkaisu sivustolla... 4 3 Artikkelin julkaisemista

Lisätiedot

Sukelluskeräily, Pelihahmon liikuttaminen. Tee uusi hahmo: Pelihahmo. Nimeä se. Testaa ikuisesti -silmukassa peräkkäisinä testeinä (jos) onko jokin

Sukelluskeräily, Pelihahmon liikuttaminen. Tee uusi hahmo: Pelihahmo. Nimeä se. Testaa ikuisesti -silmukassa peräkkäisinä testeinä (jos) onko jokin Versio 1.0 1 Sukelluskeräily Tässä pelissä keräilet erilaisia aarteita ja väistelet vihollista. Tämän lisäksi pelaajan pitää käydä välillä pinnalla hengittelemässä. Peliin lisätään myös häiriötekijäksi

Lisätiedot

Toinen harjoitustyö. ASCII-grafiikkaa

Toinen harjoitustyö. ASCII-grafiikkaa Toinen harjoitustyö ASCII-grafiikkaa Yleistä Tehtävä: tee Javalla ASCII-merkkeinä esitettyä grafiikkaa käsittelevä ASCIIArt-ohjelma omia operaatioita ja taulukoita käyttäen. Työ tehdään pääosin itse. Ideoita

Lisätiedot

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) Toistaiseksi helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Vaikeaa eroavuudet Pythonin ja C:n

Lisätiedot

TIE-20200 Ohjelmistojen suunnittelu

TIE-20200 Ohjelmistojen suunnittelu TIE-20200 Ohjelmistojen suunnittelu Luento 10: Rajapintasuunnittelua & Singleton TIE-20200 Samuel Lahtinen 1 Ajankohtaista Välituotostapaamiset alkavat Ensi viikon luennoilla Marko Leppänen kertoilee erilaisten

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen

Lisätiedot

Pong-peli, vaihe Aliohjelmakutsu laskureita varten. 2. Laskurin luominen. Muilla kielillä: English Suomi

Pong-peli, vaihe Aliohjelmakutsu laskureita varten. 2. Laskurin luominen. Muilla kielillä: English Suomi Muilla kielillä: English Suomi Pong-peli, vaihe 7 Tässä vaiheessa lisäämme peliin pistelaskun. Pong-pelissä pelaaja saa pisteen kun pallo ohittaa toisen pelaajan mailan. 1. Aliohjelmakutsu laskureita varten

Lisätiedot

JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++

JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++ JAVA alkeet JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++ ja Javascriptin kanssa. Huom! JAVA ja JavaScript eivät silti ole sama asia, eivätkä edes sukulaiskieliä.

Lisätiedot

LIITE 1 1. Tehtävänä on mallintaa kitara ohjeiden mukaan käyttäen Edit Poly-tekniikkaa.

LIITE 1 1. Tehtävänä on mallintaa kitara ohjeiden mukaan käyttäen Edit Poly-tekniikkaa. LIITE 1 1 HARJOITUS 1 Kitara Tehtävänä on mallintaa kitara ohjeiden mukaan käyttäen Edit Poly-tekniikkaa. Käsiteltävät asiat Edit Poly Muokkaus kuvan mukaan TurboSmooth Extrude 1. Tarkistetaan että mittayksiköt

Lisätiedot

KUVAT. Word 2013. Kuvat

KUVAT. Word 2013. Kuvat Word 2013 Kuvat KUVAT KUVAT... 1 Kuvatiedoston lisääminen... 1 Microsoftin-kuvien lisääminen... 1 Koon muuttaminen ja kääntäminen... 2 Kuvan siirtäminen... 2 Tekstiin tasossa... 2 Kelluva kuva, tekstin

Lisätiedot

Ohjeita Porin Lyseon koulun yrittäjuuskasvatuksen blogin kirjoittamiseen

Ohjeita Porin Lyseon koulun yrittäjuuskasvatuksen blogin kirjoittamiseen Ohjeita Porin Lyseon koulun yrittäjuuskasvatuksen blogin kirjoittamiseen Tervetuloa mukaan rakentamaan yr-blogiamme! Lue seuraavat ohjeet ennen artikkelisi julkaisemista. Pääset kirjautumaan sisään osoitteessa

Lisätiedot

Kun olet valmis tekemään tilauksen, rekisteröidy sovellukseen seuraavasti:

Kun olet valmis tekemään tilauksen, rekisteröidy sovellukseen seuraavasti: HENKILÖKORTTIEN SUUNNITTELUSOVELLUS SOVELLUKSEN KÄYTTÖOHJE Voit kokeilla korttien suunnittelemista valmiiden korttipohjien avulla ilman rekisteröitymistä. Rekisteröityminen vaaditaan vasta, kun olet valmis

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 21.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 21.9.2015 1 / 25 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Tutoriaaliläsnäoloista

Tutoriaaliläsnäoloista Tutoriaaliläsnäoloista Tutoriaaliläsnäolokierroksella voi nyt täyttää anomuksen läsnäolon merkitsemisestä Esim. tagi ei toiminut, korvavaltimon leikkaus, yms. Hyväksyn näitä omaa harkintaa käyttäen Tarkoitus

Lisätiedot

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) (Erittäin) helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Ei selvää että main funktion pitikin

Lisätiedot

Jypelin käyttöohjeet» Ruutukentän luominen

Jypelin käyttöohjeet» Ruutukentän luominen Jypelin käyttöohjeet» Ruutukentän luominen ==================HUOM!!!================== SISÄLLÖN TUOMINEN VISUAL STUDIOON ON MUUTTUNUT Uudet ajantasalla olevat ohjeet löytyvät timistä:?https://tim.jyu.fi/view/kurssit/tie/ohj1/tyokalut/sisallon-tuominen-peliin

Lisätiedot

KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA

KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA Ohjeistuksessa käydään läpi kuvan koon ja kuvan kankaan koon muuntaminen esimerkin avulla. Ohjeistus on laadittu auttamaan kuvien muokkaamista kuvakommunikaatiota

Lisätiedot

Word 2010 Pikaopas Hannu Matikainen Päivitetty: 14.4.2012

Word 2010 Pikaopas Hannu Matikainen Päivitetty: 14.4.2012 Word 2010 Pikaopas Hannu Matikainen Päivitetty: 14.4.2012 1(5) Ohjelmaikkunan osat Valintanauhan tärkeimmät välilehdet ovat Tiedosto, Aloitus, Lisää ja Sivun asettelu. Kuvassa näkyy Aloitus-välilehti.

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Useampitasoiset ADT:t Käytetään esimerkkiohjelmaa Ratkaisuyritys 1 Ratkaisuyritys 2 Lopullinen ratkaisu Lopullisen ratkaisun toteutusyritys Lopullisen ratkaisun oikea toteutus

Lisätiedot

C++ rautaisannos. Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout:

C++ rautaisannos. Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout: C++ rautaisannos Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout: # include #include main ( ) main (

Lisätiedot

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukot C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukon muuttujilla (muistipaikoilla) on yhteinen nimi. Jokaiseen yksittäiseen

Lisätiedot

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A. Tehtävä. Tämä tehtävä on aineistotehtävä, jossa esitetään ensin tehtävän teoria. Sen jälkeen esitetään neljä kysymystä, joissa tätä teoriaa pitää soveltaa. Mitään aikaisempaa tehtävän aihepiirin tuntemusta

Lisätiedot

Kirkkopalvelut Office365, Opiskelijan ohje 1 / 17 IT Juha Nalli 22.12.2015

Kirkkopalvelut Office365, Opiskelijan ohje 1 / 17 IT Juha Nalli 22.12.2015 Kirkkopalvelut Office365, Opiskelijan ohje 1 / 17 Oppilaat saavat vuoden 2016 alusta käyttöönsä oppilaitoksen sähköpostin ja muita palveluita Microsoftin Office365:sta. Oppilaiden sähköposti on muotoa

Lisätiedot

Ohjelman käyttöön ei sisälly muita kuluja kuin ohjelman lisenssimaksu ja mahdolliset webbipalvelusi käyttömaksut.

Ohjelman käyttöön ei sisälly muita kuluja kuin ohjelman lisenssimaksu ja mahdolliset webbipalvelusi käyttömaksut. Kotisivu ohje Kotisivu - ohjelmisto on webbipohjainen kotisivujen julkaisujärjestelmä jossa käyttäjä ei tarvitse erityistaitoja kyetäkseen julkaisemaan webbisivuja. Jos osaat käyttää Microsoft Word tekstinkäsittelyohjelmaa,

Lisätiedot

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu 811312A Tietorakenteet ja algoritmit 2017-2018, Harjoitus 2 ratkaisu Harjoituksen aiheena on algoritmien oikeellisuus. Tehtävä 2.1 Kahvipurkkiongelma. Kahvipurkissa P on valkoisia ja mustia kahvipapuja,

Lisätiedot

Ohjeissa pyydetään toisinaan katsomaan koodia esimerkkiprojekteista (esim. Liikkuva_Tausta1). Saat esimerkkiprojektit opettajalta.

Ohjeissa pyydetään toisinaan katsomaan koodia esimerkkiprojekteista (esim. Liikkuva_Tausta1). Saat esimerkkiprojektit opettajalta. Ohjeissa pyydetään toisinaan katsomaan koodia esimerkkiprojekteista (esim. Liikkuva_Tausta1). Saat esimerkkiprojektit opettajalta. Vastauksia kysymyksiin Miten hahmon saa hyppäämään? Yksinkertaisen hypyn

Lisätiedot

Näin asennat Windows käyttöjärjestelmän virtuaalikoneeseen

Näin asennat Windows käyttöjärjestelmän virtuaalikoneeseen Näillä ohjeilla asennat Microsoft Windows 3.11 tai Microsoft Windows 3.1 -käyttöjärjestelmän Virtual PC 2007 -virtuaalikoneeseen. Huomioi, että voidaksesi asentaa Windows-käyttöjärjestelmän virtuaalikoneeseen,

Lisätiedot

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

Luento 5. Timo Savola. 28. huhtikuuta 2006

Luento 5. Timo Savola. 28. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 5 Timo Savola 28. huhtikuuta 2006 Osa I Shell-ohjelmointi Ehtolause Lausekkeet suoritetaan jos ehtolausekkeen paluuarvo on 0 if ehtolauseke then lauseke

Lisätiedot

Racket ohjelmointia osa 1. Tiina Partanen Lielahden koulu 2014

Racket ohjelmointia osa 1. Tiina Partanen Lielahden koulu 2014 Racket ohjelmointia osa 1 Tiina Partanen Lielahden koulu 2014 Sisältö 1) Peruslaskutoimitukset 2) Peruskuvioiden piirtäminen 3) Määrittelyt (define) 4) Yhdistettyjen kuvien piirtäminen 5) Muuttujat ja

Lisätiedot

Tehtävä 3 ja 4. 3. aikakausilehden kansi pastissi 4. runokirjan kansi

Tehtävä 3 ja 4. 3. aikakausilehden kansi pastissi 4. runokirjan kansi Tehtävä 3 ja 4 3. aikakausilehden kansi pastissi 4. runokirjan kansi 3. Valitse esim. Opettaja-lehti ja tee sille uusi kansi lehden tyyliin samoilla fonteilla ym. (ohje sille), NYT-liite, tms. käy myös

Lisätiedot

Scratch ohjeita. Perusteet

Scratch ohjeita. Perusteet Perusteet Scratch ohjeita Scratch on graafinen ohjelmointiympäristö koodauksen opetteluun. Se soveltuu hyvin alakouluista yläkouluunkin asti, sillä Scratchin käyttömahdollisuudet ovat monipuoliset. Scratch

Lisätiedot

Muuttujien määrittely

Muuttujien määrittely Tarja Heikkilä Muuttujien määrittely Määrittele muuttujat SPSS-ohjelmaan lomakkeen kysymyksistä. Harjoitusta varten lomakkeeseen on muokattu kysymyksiä kahdesta opiskelijoiden tekemästä Joupiskan rinneravintolaa

Lisätiedot

Osoitin ja viittaus C++:ssa

Osoitin ja viittaus C++:ssa Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja

Lisätiedot

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Muilla kielillä: English Suomi Pong-peli, vaihe 3 Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Jaetaan ohjelma pienempiin palasiin (aliohjelmiin) Lisätään peliin maila (jota ei voi vielä

Lisätiedot

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

Lisätiedot

Moodle-oppimisympäristö

Moodle-oppimisympäristö k5kcaptivate Moodle-oppimisympäristö Opiskelijan opas Sisältö 1. Mikä on Moodle? 2. Mistä löydän Moodlen? 3. Kuinka muokkaan käyttäjätietojani? 4. Kuinka ilmoittaudun kurssille? 5. Kuinka käytän Moodlen

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 21.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 21.1.2009 1 / 32 Tyypeistä Monissa muissa ohjelmointikielissä (esim. Java ja C) muuttujat on määriteltävä ennen

Lisätiedot

Verkkokaupan ohje. Alkutieto. Scanlase verkkokauppa. Sisäänkirjautuminen

Verkkokaupan ohje. Alkutieto. Scanlase verkkokauppa. Sisäänkirjautuminen Verkkokaupan ohje Alkutieto Verkkokaupan tarkoitus on helpottaa Scanlase asiakkaiden tilaamisprosessia kun asiakkaat tarvitsevat tuotteita. Verkkokaupan ollessa pois toiminnasta tilaukset tulee tehdä puhelimitse

Lisätiedot

Kiipulan ammattiopisto. Liiketalous ja tietojenkäsittely. Erja Saarinen

Kiipulan ammattiopisto. Liiketalous ja tietojenkäsittely. Erja Saarinen Kiipulan ammattiopisto Liiketalous ja tietojenkäsittely Erja Saarinen 2 Sisällysluettelo 1. Johdanto... 3 2. Hyvät internetsivut... 3 3. Kuvien koko... 4 4. Sivujen lataus... 4 5. Sivukartta... 5 6. Sisältö...

Lisätiedot

TAMK Ohjelmistotekniikka G Graafisten käyttöliittymien ohjelmointi Herkko Noponen Osmo Someroja. Harjoitustehtävä 2: Karttasovellus Kartta

TAMK Ohjelmistotekniikka G Graafisten käyttöliittymien ohjelmointi Herkko Noponen Osmo Someroja. Harjoitustehtävä 2: Karttasovellus Kartta TAMK Ohjelmistotekniikka G-04237 Graafisten käyttöliittymien ohjelmointi Harjoitustehtävä 2: Karttasovellus Kartta TAMK Karttasovellus Kartta Sivu 2/8 Sisällysluettelo 1. JOHDANTO...3 2. VAATIMUSMÄÄRITTELY...

Lisätiedot

Drupal-sivuston hallintaopas

Drupal-sivuston hallintaopas Drupal-sivuston hallintaopas 11.12.2011 1. Sisäänkirjautuminen... 2 2. Sivun luonti... 2 1 1. Sisäänkirjautuminen Kirjautumissivulle pääset osoitteesta http://www.venajaseura.com/user Käyttäjätunnuksesi

Lisätiedot

FOTONETTI BOOK CREATOR

FOTONETTI BOOK CREATOR F O T O N E T T I O Y FOTONETTI BOOK CREATOR 6 2012 Kemintie 6 95420 Tornio puhelin: 050-555 6500 pro/kirja: 050-555 6580 www.fotonetti.fi Ohjelman asentaminen 1 Hae ohjelma koneellesi osoitteesta http://www.fotonetti.fi/kuvakirjatilaa

Lisätiedot