/* http://www.mrwadlo.com */ #include #include char display[80][25]; void initialize(); void stringat( char array[], int x, int y ); void flashscreen(); void addmenu(char array[], int x, int y); void closeat(int x, int y); void chomp(int x, int y); void popmenu(char array[], int x, int y); int main() { int i,j; char com = '?'; textcolor(0); clrscr(); initialize(); flashscreen(); do { com = getch(); if ( com == 'M' || com == 'm' ) { while ( com != 'B' && com != 'b' && com != 'x' ) { addmenu("Option`1",1,0); addmenu("Option`2",1,2); closeat(1,4); flashscreen(); if ( com == '1' ) { while ( com != 'B' && com != 'b' && com != 'x' ) { popmenu("Bee`p",9,2); addmenu("`ClearWelcome",15,3); closeat(15,5); flashscreen(); com = getch(); if ( com == 'P' || com == 'p' ) { popmenu("Beep!",20,3); printf("\a"); flashscreen(); for ( i=-20000 ; i<20000 ; i++ ) gotoxy(1,1); chomp(26,3); } else if ( com == 'C' || com == 'c' ) stringat(" ",35,13); } chomp(15,5); flashscreen(); } else if ( com == '2') { while ( com != 'B' && com != 'b' && com != 'x' ) { popmenu("`Color",9,4); addmenu("`Numbers",15,3); closeat(15,5); flashscreen(); com = getch(); if ( com == 'C' || com == 'c' ) { clrscr(); gotoxy(1,1); for ( i=1 ; i<17 ; i++ ) { textcolor(i); for ( j=0 ; j<5000 ; j++ ) cprintf("_\b"); for ( j=1 ; j<80*25+1 ; j++ ) { cprintf("%c",219); } } clrscr(); } else if ( com == 'N' || com == 'n' ) { for ( i=1 ; i<1000 ; i++ ) { gotoxy(33,13); cprintf("%4d of 1000", i); for ( j=0 ; j<300 ; j++ ) printf(" \b"); } } } chomp(15,5); flashscreen(); } if ( com != 'X' && com != 'x' ) com = getch(); } chomp(1,4); flashscreen(); } } while ( com != 'X' && com != 'x'); return 0; } void initialize() { int i, j; for ( j=0 ; j<25 ; j++ ) for ( i=0 ; i<80 ; i++ ) display[i][j] = ' '; for ( i=0 ; i<80 ; i++ ) display[i][23] = 205; stringat("`Menu",1,0); stringat("E`xit",75,0); stringat("Welcome",35,13); } void stringat( char array[], int x, int y ) { int i; int change = 0; for ( i=x ; array[i-x]!=NULL ; i++ ) { display[i][y] = array[i-x]; } display[i][y] = 0; } void flashscreen() { int i, j; int change = 0; textcolor(0); textbackground(7); for ( i=0 ; i<80 ; i++ ) { gotoxy(i+1,1); if ( display[i][0] == '`' ) { textcolor(4); change++; cprintf("%c", display[i+change][0]); textcolor(0); } else cprintf("%c", display[i+change][0]); if ( display[i+change][0] == 0) { change=0; } } change = 0; textcolor(7); textbackground(0); for ( j=1 ; j<24 ; j++ ) for ( i=0 ; i<80 ; i++ ) { gotoxy(i+1,j+1); if ( display[i][j] == '`' ) { textcolor(14); change++; cprintf("%c", display[i+change][j]); textcolor(7); } else if ( display[i+change][j] == 0 ) { change=0; } else cprintf("%c", display[i+change][j]); } } void addmenu(char array[], int x, int y) { if ( y>1 ) display[x][y] = 204; display[x][y+1] = 186; display[x][y+2] = 200; display[x+1][y+2] = 205; stringat(array,x+2,y+2); } void closeat( int x, int y ) { addmenu("`Back",x,y); } void chomp( int x, int y ) { int col = x; int node; x = x; y = y+2; while ( y>0 ) { display[x][y] = ' '; if ( display[x][y-1] == 96 ) break; else if ( display[x+1][y] != ' ' ) x++; else if ( display[x-1][y] < -50 && display[x-1][y] > -57 ) x--; else if ( display[x][y-1] != ' ' && display[x][y+1] != ' ' ) y--; else if ( display[x][y+1] != ' ') y++; else { x = col; y--; } } } void popmenu(char array[], int x, int y) { display[x][++y] = 200; display[++x][y] = 205; display[++x][y] = 205; display[++x][y] = 188; while ( y>2 ) display[x][--y] = 186; display[x][--y] = 201; display[++x][y] = 205; display[++x][y] = 205; display[++x][y] = 187; addmenu(array,x,y); }