Pobierz - kisiala.pl
Transkrypt
Pobierz - kisiala.pl
Politechnika Częstochowska Wydział Inżynierii Mechanicznej i Informatyki Oprogramowanie i wykorzystanie stacji roboczych Gra : The Sea Tomasz Jewiarz Diana Kisiała Semestr 7 Gr. 1 2005 / 2006 Cel: Celem projektu było napisanie gry The Sea z wykorzystaniem biblioteki QT oraz OpenGL. Gracz ma za zadnie znaleźć jak najwięcej statków rozrzuconych po całym morzu i zniszczenie ich. Na wykonanie tego zadania gracz ma określony czas i ograniczoną ilość amunicji. Menu : F1 – Rozpoczęcie nowej gry ESC – Zakończenie gry Pause – zatrzymanie gry Strzałki na klawiaturze – sterowanie graczem Spacja - strzał Do wyboru mamy 3 tryby gry: 1- Łatwy, 2- Średni 3-Trudny. Dodatkowo możemy wybrać jeden z dwóch rozmiarów ekranu: F10 -Okno F9 – Fullscreen Gra: Podczas gry w lewym górnym rogu wyświetlają nam się następujące opcje : Czas jaki nam został na wykonanie misji. Ilość zdobytych punktów, Ilość broni do wystrzelenia, Prędkość z jaką się porusza gracz po planszy Kąt - > położenie na planszy Poziomy trudności : Poziomy trudności różnią się : Stopniem zamglenia powietrza Czasem na wykonanie zadania – 180, 360, 540 Wybrane funkcje OpenGL zastosowane w projekcie : glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) - czyści bufor koloru glClearColor(0.0f, 0.0f, 0.0f, 0.0f) - czyści tło do czerni glFlush() - służy do wypróżniania komend graficznych, składowanych w buforze i uwidocznienia zmian na ekranie glPushMatrix(); - zapamiętanie wyglądu sceny glPopMatrix(); - odtworzenie pierwotnego wyglądu sceny glTranslatef(xtrans, ytrans-0.0 , ztrans); - odsunięcie obiektu Opis obiektu : glBegin(GL_QUADS); glColor3f(0.6f,0.1f,0.1f); // kolor glVertex3f( 0.1f+x, 0.35f+y, 0.4f+z); glVertex3f( 0.1f+x, 0.35f+y, 0.9f+z); glVertex3f( 0.5f+x, 0.35f+y, 0.9f+z); glVertex3f( 0.5f+x, 0.35f+y, 0.4f+z); // wierchołki czworokąta glEnd(); Obrócenie obiektu wokół osi OY o kąt alfa : glTranslatef( 0.0, 0.0, -200.0); glRotatef( alfa, 0.0, 1.0, 0.0); Operacje na macierzach: glMatrixMode(GL_PROJECTION); - wybiera macierz, na której będziemy operować. GL_PROJECTION - to macierz rzutowania, odwzorowująca świat 3D na płaski ekran komputera. glLoadIdentity() – ładuje macierz jednostkową (Mając macierz przekształcenia, matematycznie należy ją pomnożyć przez macierz wyjściową co daje nam macierz jednostkowa. ) Lista wyświetlania – pozwalają na zapamiętywanie w pamięci ciągu instrukcji OpenGL, a następnie szybkie ich odtworzenie. glNewList(dlSky, GL_COMPILE); ... // Instrukcje ... glEndList(); glCallList(dlSky); - wywołanie wykonania listy Teksturowanie: glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL) – ustala sposób określania koloru tekstur na scenie. GL_DECAL - kolor pikseli tekstury pokrywa w całości teksturowany obiekt i nie jest możliwe uzyskanie efektów związanych z oświetleniem glEnable(GL_TEXTURE_2D) - uaktywnia obliczanie tekstur w systemie glDisable(GL_TEXTURE_2D) – wyłancza obliczanie tekstur w systemie glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR); - służy do określania właściwości tekstur. GL_LINEAR, to przed wyrysowaniem tekstury jest ona liniowo interpolowana glTexCoord2f(-planWsp, -planWsp)– służy do umiejscowienia tekstury na poszczególnych wielokątach Mgła: glEnable(GL_FOG); - włączenie obsługę mgły glFogi(GL_FOG_MODE, GL_LINEAR); - rodzaj mgły glFogf(GL_FOG_DENSITY, 0.35f); - gęstość mgły glFogfv(GL_FOG_COLOR, fogColor); - kolor mgły glFogf(GL_FOG_START, 1); - zakres mgły – początek glFogf(GL_FOG_END, 40); - zakres mgły - koniec