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

Projekat: C++ Tetris

  • Upload
    sarai

  • View
    71

  • Download
    0

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Page 1: Projekat: C++ Tetris

Projekat: C++ Projekat: C++ TetrisTetris

Fakultet za poslovnu informatikuFakultet za poslovnu informatiku

Predmet: Uvod u programiranje IIPredmet: Uvod u programiranje II

Studenti:Studenti:

Željko Bareta 25/2005Željko Bareta 25/2005

Miljan Simonović 54/2005Miljan Simonović 54/2005

Srboljub Stojadinović 73/2005Srboljub Stojadinović 73/2005

Bojan Prekić 89/2005Bojan Prekić 89/2005

Biljana Miličić 118/2005Biljana Miličić 118/2005

Page 2: Projekat: C++ Tetris

Ovo je prezentacija naOvo je prezentacija naššeg projekta: C++ eg projekta: C++ Tetris.Tetris.

Program je napisan u C++ kao Win32 Program je napisan u C++ kao Win32 aplikacija, koristeaplikacija, koristeći Windows Graphics Device ći Windows Graphics Device Interface (GDI).Interface (GDI).

Dalje sledi upoznavanje sa kodom.Dalje sledi upoznavanje sa kodom.

Page 3: Projekat: C++ Tetris

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

Page 4: Projekat: C++ Tetris

- 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).

Page 5: Projekat: C++ Tetris

- Ovde inicijalizujemo sve potrebne funkcije.

- Zatim slede globalne varijable. Application handle i main window handle.

Page 6: Projekat: C++ Tetris

- 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.

Page 7: Projekat: C++ Tetris

- Bitmapobject.hMoramo napraviti klasu za bitmap objekat.Potreban nam je handle za izlazni uređaj.

Page 8: Projekat: C++ Tetris

- Sada dodajemo funkcije.

Page 9: Projekat: C++ Tetris

- Ovde prelazimo na bitmapobject.cppPravimo constructor / destructor.

Page 10: Projekat: C++ Tetris

- Sledi učitavanje bitmap-a.

Page 11: Projekat: C++ Tetris

- A zatim stvaranje create funkcije.

Page 12: Projekat: C++ Tetris

- Ovde pravimo destroy funkciju.

Page 13: Projekat: C++ Tetris

- 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.

Page 14: Projekat: C++ Tetris

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

Page 15: Projekat: C++ Tetris

- 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.

Page 16: Projekat: C++ Tetris
Page 17: Projekat: C++ Tetris

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

Page 18: Projekat: C++ Tetris

- Koristimo privremeni

pravougaonik (RECT rcTemp) 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

Page 19: Projekat: C++ Tetris

- Mesto odvijanja same igre.

Page 20: Projekat: C++ Tetris

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

Page 21: Projekat: C++ Tetris

- Ovde pravimo draw tile funkciju.

Page 22: Projekat: C++ Tetris

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

Page 23: Projekat: C++ Tetris

- 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.

Page 24: Projekat: C++ Tetris

XX XX

XX XX

0 1 2 3

0

1

2

3

0 1 2 3

0

1

2

3

XX

XX XX XX

case 1: //Box! { sPiece.size[1][1]=TILEBLUE; sPiece.size[1][2]=TILEBLUE; sPiece.size[2][1]=TILEBLUE; sPiece.size[2][2]=TILEBLUE; }break;

case 2: //Pyramid! { sPiece.size[1][1]=TILESTEEL; sPiece.size[0][2]=TILESTEEL;

sPiece.size[1][2]=TILESTEEL; sPiece.size[2][2]=TILESTEEL; }break;

Page 25: Projekat: C++ Tetris

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

Page 26: Projekat: C++ Tetris

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

Page 27: Projekat: C++ Tetris

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

Page 28: Projekat: C++ Tetris

- RemoveRow funkcija. Jednostavno uklanja red ako je popunjen skroz, i spušta ostale dole.

- Ovde se završava kod, uživajte u igranju!

Page 29: Projekat: C++ Tetris

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

http://triplebuffer.devmaster.nethttp://triplebuffer.devmaster.net

Page 30: Projekat: C++ Tetris

Hvala na paHvala na pažnjižnji..