P014 - Przykładowe programy wykorzystujące bibliotekę newconio |
---|
Programy uruchomiono w środowisku Bloodshed Dev-C++ 4.9.9.2 |
W wybranych miejscach ekranu program wyświetla przypadkowe znaki.
// I Liceum Ogólnokształcące // im. K. Brodzińskiego // w Tarnowie //-------------------------- // Koło informatyczne 2006/7 //-------------------------- // Program: P014-01 //-------------------------- #include "newconio.h" #include <iostream> using namespace std; main() { int key; _cinit(); srand((unsigned)time(NULL)); gotoxy(11,0); cout << _pl("Aby zakończyć działanie programu, naciśnij klawisz "); highvideo(); cout << "[ESC]"; lowvideo(); cout << "."; do { putchxy(rand() % 256, 1 + rand() % 78, 2 + rand() % 22); if(kbhit()) while(!(key = getch())) ; } while(key != 27); // powtarzamy aż do naciśnięcia ESC } |
W wybranych miejscach ekranu program ustawia przypadkowe atrybuty.
// I Liceum Ogólnokształcące // im. K. Brodzińskiego // w Tarnowie //-------------------------- // Koło informatyczne 2006/7 //-------------------------- // Program: P014-02 //-------------------------- #include "newconio.h" #include <iostream> using namespace std; main() { int key; _cinit(); srand((unsigned)time(NULL)); gotoxy(11,0); cout << _pl("Aby zakończyć działanie programu, naciśnij klawisz "); highvideo(); cout << "[ESC]"; lowvideo(); cout << "."; do { putattrxy(rand() % 256, 1 + rand() % 78, 2 + rand() % 22); if(kbhit()) while(!(key = getch())) ; } while(key != 27); // powtarzamy aż do naciśnięcia ESC } |
Na ekranie konsoli przedstawione zostają wszystkie możliwe kombinacje kolorów tła i znaków (w sumie 256 możliwości).
// I Liceum Ogólnokształcące // im. K. Brodzińskiego // w Tarnowie //-------------------------- // Koło informatyczne 2006/7 //-------------------------- // Program: P014-03 //-------------------------- #include "newconio.h" #include <iostream> using namespace std; main() { int i,j; _cinit(); gotoxy(11,0); cout << _pl("Aby zakończyć działanie programu, naciśnij klawisz "); highvideo(); cout << "[ESC]"; lowvideo(); cout << ".\n\n\n"; for(i = 0; i < 16; i++) { gotoxy(8,wherey()); for(j = 0; j < 16; j++) { textattr(i << 4 | j); cout << (char) 176 << (char) 177 << (char) 178 << (char) 219; } cout << endl; } while(getch() != 27); } |
Program wyświetla odbijające się od ścian piłeczki.
// I Liceum Ogólnokształcące // im. K. Brodzińskiego // w Tarnowie //-------------------------- // Koło informatyczne 2006/7 //-------------------------- // Program: P014-04 //-------------------------- #include "newconio.h" #include <iostream> using namespace std; const int MAX_N = 32; // Liczba piłeczek main() { int i,x[MAX_N],y[MAX_N],dx[MAX_N],dy[MAX_N],key; _cinit(); srand((unsigned)time(NULL)); frame(FRAME_SINGLE,12,0,0,79,24); gotoxy(10,0); textattr(0x17); cout << _pl(" Aby zakończyć działanie programu, naciśnij klawisz "); highvideo(); cout << "[ESC]"; lowvideo(); cout << " "; cursoroff(); for(i = 0; i < MAX_N; i++) { x[i] = 1 + rand() % 78; y[i] = 1 + rand() % 23; dx[i] = 1 + rand() % 2; dy[i] = 1 + rand() % 2; } key = 0; do { for(i = 0; i < MAX_N; i++) putxy('O',(i % 2)?9:14,x[i],y[i]); delay(25); for(i = 0; i < MAX_N; i++) { putxy(' ',0,x[i],y[i]); x[i] += dx[i]; if((x[i] < 1) || (x[i] > 78)) { x[i] -= dx[i]; dx[i] = -dx[i]; } y[i] += dy[i]; if((y[i] < 1) || (y[i] > 23)) { y[i] -= dy[i]; dy[i] = -dy[i]; } } if(kbhit()) while(!(key = getch())); } while(key != 27); cursoron(); } |
Ten przykład pokazuje w jaki sposób można umieszczać przeszkody na drodze ruchu piłeczek. W tekście u góry ekranu konsoli dodaliśmy kropki w miejsce spacji, aby piłeczki ich nie wybijały (sprawdź!).
// I Liceum Ogólnokształcące // im. K. Brodzińskiego // w Tarnowie //-------------------------- // Koło informatyczne 2006/7 //-------------------------- // Program: P014-05 //-------------------------- #include "newconio.h" #include <iostream> using namespace std; const int MAX_S = 16; // Liczba przeszkód const int MAX_N = 16; // Liczba piłeczek main() { int i,px,py,lx,ly,x[MAX_N],y[MAX_N],dx[MAX_N],dy[MAX_N],key; _cinit(); srand((unsigned)time(NULL)); frame(FRAME_SINGLE,0x1e,0,0,79,24); gotoxy(10,0); textattr(0x17); cout << _pl(".Aby.zakończyć.działanie.programu,.naciśnij.klawisz."); highvideo(); cout << "[ESC]"; lowvideo(); cout << "."; cursoroff(); for(i = 0; i < MAX_S; i++) { lx = 2 + rand() % 10; px = 5 + rand() % (70 - lx); ly = 2 + rand() % 5; py = 5 + rand() % (15 - lx); fillrect(177, 1 + rand() % 255, px, py, px + lx - 1, py + ly - 1); } for(i = 0; i < MAX_N; i++) { dx[i] = dy[i] = 1; do { x[i] = 1 + rand() % 78; y[i] = 1 + rand() % 23; } while(getchxy(x[i],y[i]) != ' '); } do { for(i = 0; i < MAX_N; i++) putxy('O', (i % 2) ? 14 : 12, x[i], y[i]); delay(40); if(key == 32) while(!(key = getch())); for(i = 0; i < MAX_N; i++) { putxy(' ', 0, x[i], y[i]); x[i] += dx[i]; if(getchxy(x[i], y[i]) != ' ') { x[i] -= dx[i]; dx[i] = -dx[i]; } y[i] += dy[i]; if(getchxy(x[i], y[i]) != ' ') { y[i] -= dy[i]; dy[i] = -dy[i]; } } if(kbhit()) while(!(key = getch())); } while(key != 27); cursoron(); } |
Piłeczki często wpadają w tę samą trasę, co powoduje ich przysłanianie przez inne piłeczki. Zastanów się, jak zmodyfikować ten program, aby piłeczki odbijały się również wzajemnie od siebie.
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