1 / 30

Projekat: C++ Tetris

Projekat: C++ Tetris. Fakultet za poslovnu informatiku Predmet: Uvod u programiranje II Studenti: Željko Bareta 25/2005 Miljan Simonović 54/2005 Srboljub Stojadinović 73/2005 Bojan Prekić 89/2005 Biljana Miličić 118/2005. Ovo je prezentacija na š eg projekta: C++ Tetris.

sarai
Télécharger la présentation

Projekat: C++ Tetris

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Projekat: C++ Tetris Fakultet za poslovnu informatiku Predmet: Uvod u programiranje II Studenti: Željko Bareta 25/2005 Miljan Simonović 54/2005 Srboljub Stojadinović 73/2005 Bojan Prekić 89/2005 Biljana Miličić 118/2005

  2. Ovo je prezentacija našeg projekta: C++ Tetris. • Program je napisan u C++ kao Win32 aplikacija, koristeći Windows Graphics Device Interface (GDI). • Dalje sledi upoznavanje sa kodom.

  3. - Program se sastoji od 3 fajl-a: main.cpp, bitmapobject.cpp, bitmapobject.h • Počećemo sa main.cpp fajlom, sa nekim osnovnim definicijama.

  4. - Sledi izrada veličine svakog tile-a, kao i same mape. - Kao i varijable za budući bitmap (potrebno nam je 10 boja od kojih se jedna ne iscrtava).

  5. - Ovde inicijalizujemo sve potrebne funkcije. - Zatim slede globalne varijable. Application handle i main window handle.

  6. Napravićemo niz koji sadrži blokove koji se nalaze u području igre. Napravićemo strukturu za blok (piece), sadržaće dve promenljive, za trenutni i nailazeći blok. - Ovde privremeno napuštamo main.cpp.

  7. Bitmapobject.h • Moramo napraviti klasu za bitmap objekat. • Potreban nam je handle za izlazni uređaj.

  8. - Sada dodajemo funkcije.

  9. - Ovde prelazimo na bitmapobject.cpp Pravimo constructor / destructor.

  10. - Sledi učitavanje bitmap-a.

  11. - A zatim stvaranje create funkcije.

  12. - Ovde pravimo destroy funkciju.

  13. - Zatim se izvršava HDC konverzija, i prave se funkcije za visinu / širinu. • Nakon ovoga se vraćamo u main.cpp, gde nastavljamo rad sa globalnim • varijablama.

  14. - Vraćamo se u main.cpp. Definišemo po jednu promenljivu klase BitMapObject za mapu i za blokove.

  15. - Sada pravimo hendler poruka. Windows šalje poruke prozoru sve vreme. Neke od tih informacija su nam bitne, a neke ne. Ovaj hendler služi za usmeravanje tih poruka.

  16. - Funkcija winmain, pomoću koje se pravi naš sopstveni prozor.

  17. - Koristimo privremeni pravougaonik(RECTrcTemp) koji se koristi za čišćenje prozora. Zatim kreiramo sliku mape i čistimo je na sličan način. Na kraju učitavamo bitmap fajl koji smo sami napravili i koji služi da oživi grafiku u igri. Ubačena je i funkcija GameDone za čišćenje, koja se ovde ne koristi, ali je ostavljena zarad eventualnih budućih proširenja 

  18. - Mesto odvijanja same igre.

  19. - Pravimo funkciju NewGame. Postavljamo start_time, inicijalizujemo Map niz, i kazemo mu da ubaci novi blok.

  20. - Ovde pravimo draw tile funkciju.

  21. - DrawMap funkcija iscrtava toolbar, pa sledeći blok, pa posle toga blokove koji su već tu i blok kojim igrač trenutno upravlja.

  22. - NewBlock funkcija, pravi novi blok. Generiše sledeći (preview) blok, i stavlja ga na mesto trenutnog kada se sa ovim završi. Za početno pokretanje igre moramo da odradimo case generaciju za svaki blok ponaosob. Ovde nismo prikazali celu case naredbu zato jer je za svaku figuru slična.

  23. 0 1 2 3 0 1 2 3 case 1: //Box! { sPiece.size[1][1]=TILEBLUE; sPiece.size[1][2]=TILEBLUE; sPiece.size[2][1]=TILEBLUE; sPiece.size[2][2]=TILEBLUE; }break; 0 1 2 3 0 1 2 3 case 2: //Pyramid! { sPiece.size[1][1]=TILESTEEL; sPiece.size[0][2]=TILESTEEL; sPiece.size[1][2]=TILESTEEL; sPiece.size[2][2]=TILESTEEL; }break;

  24. - RotateBlock funkcija. Copy & rotate u privremenu vrednost, proveri za kolizije, i onda vraća u originalnu vrednost.

  25. - Move funkcija. Provera kolizije, zatim pomeranje na novo mesto, ili započinjanje nove igre ako se pređe granica područja igre.

  26. - CollisionTest. Proveravanje granica i da li prostor pripada nekom drugom bloku.

  27. - RemoveRow funkcija. Jednostavno uklanja red ako je popunjen skroz, i spušta ostale dole. - Ovde se završava kod, uživajte u igranju!

  28. http://triplebuffer.devmaster.net/file.php?id=3&pa%20ge=0 http://triplebuffer.devmaster.net

  29. Hvala na pažnji.

More Related