Prezentowane materiały są przeznaczone dla uczniów szkół ponadgimnazjalnych. Autor artykułu: mgr Jerzy Wałaszek, wersja1.0 |
©2008 mgr
Jerzy Wałaszek |
Zapoznaj się z materiałami przedstawionymi na poprzednich zajęciach koła:
Utwórz nowy katalog projektowy. Skopiuj do niego pliki biblioteki:
newconio.cpp | - | plik źródłowy biblioteki |
newconio.h | - | plik nagłówkowy dla biblioteki |
Utwórz nowy projekt konsoli w Dev-C++. Do projektu dodaj plik źródłowy newconio.cpp z twojego katalogu projektowego.
Napiszemy prostą grę zręcznościową - BOMBOWIEC. Reguły są następujące:
Nad miastem lata bombowiec, który zrzuca bomby. Bomba niszczy całkowicie jeden budynek. Naraz można zrzucić tylko jedną bombę. Druga jest dostępna wtedy, gdy pierwsza bomba doleci do ziemi. Samolot zniża swój lot po każdym przelocie nad miastem. Gra kończy się katastrofą, gdy samolot uderzy w niezniszczony dom lub wykonaniem misji, gdy wszystkie domy w mieście zostaną zburzone.
// Bombowiec // (C)2008 Koło informatyczne w I LO w Tarnowie // Kurs programowania w C++ dla początkujących //-------------------------------------------- #include <cstdlib> #include "newconio.h" // Ekran tytułowy gry //------------------- void tytul() { textattr(0x17); clrscr(); textcolor(YELLOW); center(24,"B O M B O W I E C"); textcolor(LIGHTGREEN); center(26,"(C) 2008 KI w I-LO w Tarnowie"); textcolor(WHITE); center(49,_pl("Naciśnij dowolny klawisz, aby rozpocząć grę...")); while(!getch()); // czeka na dowolny klawisz } // Sprawdza, czy gracz chce ponownie zagrać //----------------------------------------- bool jeszcze_raz() { char c; textbackground(YELLOW); textcolor(RED); center(49," Grasz jeszcze raz? (t = TAK) "); while(!(c = getch())); // czeka na klawisz return c == 't'; // zwraca true, gdy naciśnięto klawisz t } // Rysuje planszę gry //------------------- void plansza() { fillrect(' ',0xb0,0,0,79,48); // niebo fillrect(' ',0x20,0,49,79,49); // trawka for(int i = 10; i < 70; i++) // bloki fillrect('_', rand() % 128,i,25 + rand() % 15,i,48); } // Test na wyburzone miasto //------------------------- bool zburzone() { for(int i = 10; i < 70; i++) if(getchxy(i,48) != ' ') return false; return true; } // Lot bombowca //------------- void lot_bombowy() { int sx,sy,bx,by; sx = sy = 0; // współrzędne samolotu by = 49; // wysokość bomby - 49 = bomba na trawce, czyli nieaktywna while(true) { putxy('>',0xb1,sx,sy); // samolot if(by < 49) putxy('*',0xce,bx,by); // bomba delay(50); // opóźnienie putxy(' ',0xb1,sx++,sy); // maże samolot i przesuwa go w prawo if(sx == 80) // jeśli wyszedł poza prawą krawędź okna { sx = 0; sy++; // ustawia go na początku następnego wiersza } if(getchxy(sx,sy) != ' ') // sprawdza, czy samolot nie zderzył się z blokiem { putxy('#',0xcf,sx,sy); // jeśli tak, kończy lot :( break; } if(by < 49) putxy(' ',0xb1,bx,by++); // sprawdza, czy leci jakaś bomba // jeśli tak. maże ją i przesuwa w dół if(kbhit()) // sprawdza, czy naciśnięto jakiś klawisz { while(!getch()); // jeśli tak, pozbywa się go z bufora klawiatury if(by == 49) // i zrzuca bombę o ile jakaś już nie leci { by = sy; bx = sx; // początkowe współrzędne bomby } } if(zburzone()) // test, czy miasto jest wyburzone { textcolor(WHITE); textbackground(BLACK); center(25,"*** BRAWO!!! ***"); break; } } } // Program główny //--------------- main() { _cinit(); srand((unsigned)time(NULL)); // inicjuje generator liczb pseudolosowych fullscreen(true); cursoroff(); tytul(); do { plansza(); lot_bombowy(); } while(jeszcze_raz()); fullscreen(false); cursoron(); } |
|
I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe