/* The main function body of main screen which displays the main screen creating the opening screen display */ mainscreen() { int maxx, maxy, in, area; // get maximum x, y coordinates of the screen maxx = getmaxx(); maxy = getmaxy(); // setbkcolor sets the current background color using the palette setbkcolor(RED); // Draws a rectangle (graphics mode) rectangle(0, 0, maxx, maxy); // sets the line style and text justification in screen changetextstyle(1,0,0); // displaying the output text on main screen outtextxy(220, 20, "WELCOME"); outtextxy(240,60," TO "); outtextxy(220,100," BRICKS"); changetextstyle(7, HORIZ_DIR, 3); bell(3); outtextxy(110, 150, "Press any key to continue..."); // Flushes the standard input device fflush(stdin); getch(); closegraph(); }
void InitialScreen ( void ) { CriaJanelaGrafica(MENUPRINCIPAL,MPRINC,0, "PRINCIPAL"); CriaJanelaGrafica(MENUSECUNDARIO,MSECUND,0,"RESULTADOS"); setcolor(COR_MODURA); setviewport ( 10 , 10 , 709 , 337 , 1 ); Moldura (); setviewport ( 30 , 30 , 689 , 317 , 1 ); Moldura (); setviewport ( 0 , 0 , 719 , 347 , 1 ); setcolor(COR_TTULO); changetextstyle ( TRIPLEX_FONT , HORIZ_DIR , 8 ); settextjustify ( CENTER_TEXT , TOP_TEXT ); outtextxy ( 360 , 30 , "Pulmosoft - PC" ); changetextstyle ( TRIPLEX_FONT , HORIZ_DIR , 1 ); outtextxy ( 485 , 130 , "BEATRICE - EBEM @1994 V4.0" ); changetextstyle(DEFAULT_FONT,HORIZ_DIR,1); }
void AmbienteDados() { LimpaTela(); setcolor(1); CriaJanelaGrafica(0,80,0,640,344,"ENTRADA DE DADOS DO PACIENTE"); AtivaJanelaGrafica(0); changetextstyle(DEFAULT_FONT,HORIZ_DIR,1); gprintf(10,10,"NOME: %s",Paciente.Nome); gprintf(10,23,"No DO PRONTUARIO: %s",Paciente.Prontuario); gprintf(10,36,"SEXO: %s",Paciente.Sexo); if (*Paciente.Sexo!=NULL) outtextxy(66,36, Paciente.Sexo[0]=='M' ? "asculino" : "eminino"); gprintf(10,49,"DATA DE NASCIMENTO: %2s/%2s/%2s",Paciente.Dia,Paciente.Mes,Paciente.Ano); if (*PacienteIdade!=NULL) gprintf(300,49,"IDADE: %2s anos",PacienteIdade); gprintf(10,62,"ADULTO ou CRIANCA ? (A/C): %s",Paciente.Fase); if (*Paciente.Fase!=NULL) outtextxy(234,62, Paciente.Fase[0]=='A' ? "dulto" : "rianca"); gprintf(10,75,"ALTURA (cm): %s",Paciente.Altura); gprintf(10,88,"PESO (Kg): %s",Paciente.Peso); if (SupCorp>0.0) gprintf(300,88,"SUPERFICIE CORPORAL: %-5.2f",SupCorp); gprintf(10,118,"FUMANTE ? (S/N/E): %s",Paciente.Fumante); if (strchr ( "Ss" , Paciente.Fumante[0] ) != NULL) { gprintf(40,131,"HA QUANTOS ANOS ? : %s",Paciente.tempfumo); gprintf(40,144,"No CIGARROS/DIA : %s",Paciente.cigardia); } else if (strchr ( "Ee" , Paciente.Fumante[0] ) != NULL) { gprintf(40,131,"HA QUANTO TEMPO DEIXOU DE FUMAR ? :"" %2s ANOS %2s MESES",Paciente.deixfumoA,Paciente.deixfumoM); gprintf(40,144,"QUANTOS ANOS FUMOU ? : %2s",Paciente.tempfumo); gprintf(40,157,"No CIGARROS/DIA : %2s",Paciente.cigardia); } gprintf(10,177,"INSTITUICAO: %s",institu); gprintf(10,190,"PACIENTE INTERNO OU AMBULATORIAL ? (I/A): %s",IouA); gprintf(10,203,"JUSTIFICATIVA PARA O EXAME: %s",justif); gprintf(10,216,"MEDICO REQUISITANTE: %s",medico); gprintf(10,229,"SERVICO REQUISITANTE: %s",servico); gprintf(10,242,"PACIENTE ATUALMENTE COM ALGUM DIAGNOSTICO ? (S/N): %s",temdiag); if (strchr ( "Ss" , temdiag[0] ) != NULL) gprintf(40,255,"DIAGNOSTICO: %s",diagnost); gprintf(10,268,"CIRURGIA PREVIA ? (S/N): %s",temcirur); if (strchr ( "Ss" , temcirur[0] ) != NULL) { gprintf(40,281,"CIRURGIA: %s",cirurgia); gprintf(40,294,"DATA: %2s/%2s/%2s",cirurgiaD,cirurgiaM,cirurgiaA); } } /* AmbienteDados */
void MainWindow( char *header ) { int height; cleardevice(); /* Clear graphics screen */ setcolor( MaxColors - 1 ); /* Set current color to white */ setviewport( 0, 0, MaxXX, MaxYY, 1 ); /* Open port to full screen */ height = textheight( "H" ); /* Get basic text height */ changetextstyle( DEFAULT_FONT, HORIZ_DIR, 1 ); settextjustify( CENTER_TEXT, TOP_TEXT ); outtextxy( MaxXX/2, 2, header ); setviewport( 0, height+4, MaxXX, MaxYY-(height+4), 1 ); DrawBorder(); setviewport( 1, height+5, MaxXX-1, MaxYY-(height+5), 1 ); }
void StatusLine( char *msg ) { int height; setviewport( 0, 0, MaxXX, MaxYY, 1 ); /* Open port to full screen */ setcolor( MaxColors - 1 ); /* Set current color to white */ changetextstyle( DEFAULT_FONT, HORIZ_DIR, 1 ); settextjustify( CENTER_TEXT, TOP_TEXT ); setlinestyle( SOLID_LINE, 0, NORM_WIDTH ); setfillstyle( EMPTY_FILL, 0 ); height = textheight( "H" ); /* Detemine current height */ bar( 0, MaxYY-(height+4), MaxXX, MaxYY ); rectangle( 0, MaxYY-(height+4), MaxXX, MaxYY ); outtextxy( MaxXX/2, MaxYY-(height+2), msg ); setviewport( 1, height+5, MaxXX-1, MaxYY-(height+5), 1 ); }
void SayGoodbye(void) { struct viewporttype viewinfo; /* Structure to read viewport */ int h, w; MainWindow( "== Finale ==" ); getviewsettings( &viewinfo ); /* Read viewport settings */ changetextstyle( TRIPLEX_FONT, HORIZ_DIR, 4 ); settextjustify( CENTER_TEXT, CENTER_TEXT ); h = viewinfo.bottom - viewinfo.top; w = viewinfo.right - viewinfo.left; outtextxy( w/2, h/2, "That's all, folks!" ); StatusLine( "Press any key to EXIT" ); getch(); cleardevice(); /* Clear the graphics screen */ }
main() { union REGS ii, oo ; int BallX, BallY, Base1, Base2, dx = 1, dy = -1, OldX, OldY ; int totallayer[5] = { 10, 20, 30, 40, 50 }, max = 50, layer = 4 ; int i, flag = 0, speed = 25, score = 0, chance = 4, areareq ; char *m1, *m2 ; /* Function to initialise the graphics mode */ initgraph ( &graphdriver, &graphmode, "e:\\tc\\bgi " ) ; mainscreen(); initgraph ( &graphdriver, &graphmode, "e:\\tc\\bgi " ) ; /* get the maximum value of x and y coordinates of the screen */ MaxX = getmaxx() ; MaxY = getmaxy() ; /* finding the center of the screen */ MidX = MaxX / 2 ; MidY = MaxY / 2 ; /* create opening screen and accept the level of the player's */ level = screen() ; /* assign the speed to ball as per the level chosen */ switch ( level ) { case 'M' : case 'm' : speed = 15 ; break ; case 'F' : case 'f' : speed = 10 ; } /* draw the four layer of bricks, the paddle and the ball */ rectangle ( 0, 0, MaxX, MaxY - 12 ) ; bricks() ; rectangle ( MidX - 25, MaxY - 7 - 12, MidX + 25, MaxY - 12 ) ; floodfill ( MidX, MaxY - 1 - 12, 12 ) ; circle ( MidX, MaxY - 13 - 12, 12 ) ; floodfill ( MidX, MaxY - 10 - 12, 12 ) ; /* memory allocation for storing the image of the paddle */ areareq = imagesize ( MidX - 12, MaxY - 18, MidX + 12, MaxY - 8 ) ; m1 =((char*) malloc ( areareq )) ; /* memory allocation for storing the image of the ball */ areareq = imagesize ( MidX - 25, MaxY - 7, MidX + 25, MaxY - 1 ) ; m2 =((char *) malloc ( areareq ) ); /* if unable to alloacte the memory */ if ( m1 == NULL || m2 == NULL ) { puts ( "Not Enough memory!!" ) ; exit ( 1 ) ; } /* image of the paddle and the ball is stored into allocated memory */ getimage ( MidX - 12, MaxY - 7 - 12 - 12 + 1, MidX + 12, MaxY - 8 - 12, m1 ) ; getimage ( MidX - 25, MaxY - 7 - 12, MidX + 25, MaxY - 1 - 12, m2 ) ; /* store current position of the paddle and ball */ Base1 = MidX - 25 ; Base2 = MaxY - 7 - 12 ; BallX = MidX - 12 ; BallY = MaxY - 7 - 12 + 1 - 12 ; /* display balls remaining ( initially 3 ) */ gotoxy ( 45, 25 ) ; cout<< "Balls :" ; for ( i = 0 ; i < 3 ; i++ ) { circle ( 515 + i * 35, MaxY - 5, 12 ) ; floodfill ( 515 + i * 35, MaxY - 5, 12 ) ; } /* display starting score */ gotoxy ( 1, 25 ) ; cout<< "Score: "; gotoxy(16,25); cout<<score; /* select font and alignment for displaying text */ settextjustify ( CENTER_TEXT, CENTER_TEXT ) ; changetextstyle ( GOTHIC_FONT, HORIZ_DIR, 4 ) ; while ( 1 ) { flag = 0 ; /* saving current x and y coordinates of the ball */ OldX = BallX ; OldY = BallY ; /* update ballx and bally to move the ball in correct direction */ BallX = BallX + dx ; BallY = BallY + dy ; /* according to the position of ball the layer of bricks is determined */ if ( BallY > 40 ) { max = 50 ; layer = 4 ; } else { if ( BallY > 30 ) { max = 40 ; layer = 3 ; } else { if ( BallY > 20 ) { max = 30 ; layer = 2 ; } else { if ( BallY > 10 ) { max = 20 ; layer = 1 ; } else { max = 10 ; layer = 0 ; } } } } /* if the ball hits the right boundary, move it to the left */ if ( BallX > ( MaxX - 24 - 1 ) ) { bell ( 5 ) ; BallX = MaxX - 24 - 1 ; dx = -dx ; } /* if the ball hits the left boundary, move it to the right */ if ( BallX < 1 ) { bell ( 5 ) ; BallX = 1 ; dx = -dx ; } /* if the ball hits the top boundary, move it down */ if ( BallY < 1 ) { bell ( 5 ) ; BallY = 1 ; dy = -dy ; } /* if the ball is in the area of the bricks */ if ( BallY < max ) { /* if there is no brick at the top of the ball */ if ( bri[layer][ ( BallX + 10 ) / 32 ] == 1 ) { /* if the ball touches a brick */ for ( i = 1 ; i <= 6 ; i++ ) { /* check whether there is a brick to the right of the ball */ if ( bri[layer][ ( BallX + i + 10 ) / 32 ] == 0 ) { /* if there is a brick */ BallX = BallX + i ; flag = 1 ; break ; } /* check whether there is a brick to the left of the ball */ if ( bri[layer][ ( BallX - i + 10 ) / 32 ] == 0 ) { BallX = BallX - i ; flag = 1 ; break ; } } /* if the ball does not touch a brick at the top, left or right */ if ( !flag ) { /* check if the ball has moved above the current layer */ if ( BallY < totallayer[layer - 1] ) { /* if so, change current layer appropriately */ layer-- ; max = totallayer[layer] ; } /* restore the image of the ball at the old coordinates */ putimage ( OldX, OldY, m1, OR_PUT ) ; /* erase the image at the old coordinates */ putimage ( OldX, OldY, m1, XOR_PUT ) ; /* place the image of the ball at the new coordinates */ putimage ( BallX, BallY, m1, XOR_PUT ) ; /* delay for fewseconds*/ delay ( speed ) ; /* carry on moving the ball */ continue ; } } /* when ball touch the brick control comes to this point */ bell ( 5 ) ; /* play music */ /* erase the touched brick */ delbrick ( ( BallX + 10 ) / 32, layer ) ; /* if the brick hit is on the extreme right */ if ( ( BallX + 10 ) / 32 == 19 ) line ( MaxX, 0, MaxX, 50 ) ; /* redraw right boundary */ /* if the brick hit is on the extreme left */ if ( ( BallX + 10 ) / 32 == 0 ) line ( 0, 0, 0, 50 ) ; /* redraw left boundary */ /* if the brick hit is in the topmost layer */ if ( layer == 0 ) line ( 0, 0, MaxX, 0 ) ; /* redraw top boundary */ /* set appropriate array element to 1 to indicate absence of brick */ bri[layer][ ( BallX + 10 ) / 32 ] = 1 ; BallY = BallY + 1 ; /* update the y coordinate */ dy = -dy ; /* change the current direction of the ball */ score += 10 ; /* increment the score by 10 */ gotoxy ( 16, 25 ) ; cout<< score; /* display latest score */ /* if the first brick is hit during a throw*/ } /* if ball reached the bottom */ if ( BallY > 180 - 12 ) { /* if paddle missed the ball */ if ( BallX < Base1 - 20 || BallX > Base1 + 50 ) { /* continue the decrement of the ball */ while ( BallY < 177 ) { /* erase the image of the ball at the old coordinates */ putimage ( OldX, OldY, m1, XOR_PUT ) ; /* put the image of the ball at the new coordinates */ putimage ( BallX, BallY, m1, XOR_PUT ) ; /* introduce delay for fewseconds */ delay ( speed ) ; /* saveing current x and y coordinates of the ball */ OldX = BallX ; OldY = BallY ; /* update ballx and bally to move the ball in correct direction */ BallX = BallX + dx ; BallY = BallY + dy ; } chance-- ; /* decrement the total number of chances */ score -= 10 ; /* decrement 10 points for each ball lost */ gotoxy ( 16, 25 ) ; cout<< score; /* display latest score */ bell ( 1 ) ; /* erase one of the available balls */ if ( chance ) putimage ( 515 + ( chance - 1 ) * 35 - 12 , MaxY - 10, m1, XOR_PUT ) ; /* if the last ball is being played */ if ( chance == 1 ) { gotoxy ( 45, 25 ) ; cout<< "Last ball... careful!"; } /* if all the balls are lost */ if ( !chance ) { gotoxy ( 45, 25 ) ; cout<<"Press any key to continue ... " ; outtextxy ( MidX, MidY, "Better luck next time" ) ; bell ( 2 ) ; closegraph() ; restorecrtmode() ; closegraph(); /* Close the graphics mode */ Initialize(); /* Intialize the graphics mode */ setbkcolor(4); SayGoodbye(); /* Display the That's all Folks message */ closegraph(); /* Return the system to text mode */ exit ( 0 ) ; } } /* if ball is collected on paddle */ bell ( 4 ) ; BallY = 180 - 12 ; /* restore the y coordinate of ball */ dy = -dy ; /* move the ball upwards */ } /* put the image of the ball at the old coordinates */ putimage ( OldX, OldY, m1, OR_PUT ) ; /* erase the image of the ball at the old coordinates */ putimage ( OldX, OldY, m1, XOR_PUT ) ; /* put the image of the ball at the upadted coordinates */ putimage ( BallX, BallY, m1, XOR_PUT ) ; /* if all the bricks have been knockout */ if ( score == 500 - ( ( 4 - chance ) * 20 ) ) { outtextxy ( MidX, MidY, "Winner !!" ) ; if ( score < 600 ) outtextxy ( MidX, MidY + 30, "Try to score 600" ) ; else outtextxy ( MidX, MidY + 30, " GREAT!" ) ; bell ( 2 ) ; closegraph() ; restorecrtmode() ; exit ( 0 ) ; } /* introduce delay for few seconds */ delay ( speed ) ; /* if the key is pressed to move the paddle */ if ( kbhit() ) { /* interrupt issue to obtain the ascii and scan codes of key hit */ ii.h.ah = 0 ; int86 ( 22, &ii, &oo ) ; /* put the image of the paddle at the old coordinates */ putimage ( Base1, Base2, m2, OR_PUT ) ; /* erase the image of the paddle at the old coordinates */ putimage ( Base1, Base2, m2, XOR_PUT ) ; /* if Esc key has been pressed */ if ( oo.h.ah == 1 ) exit ( 0 ) ; /* right arrow key */ if ( oo.h.ah == 75 ) Base1 = Base1 - 25 ; /* left arrow key */ if ( oo.h.ah == 77 ) Base1= Base1 + 25 ; /* if paddle goes beyond left boundary */ if ( Base1 < 0 ) Base1 = 0 ; /* if paddle goes beyond right boundary */ if ( Base1 > 589 ) Base1 = 589 ; /* put the image of the paddle at the proper position */ putimage ( Base1, Base2, m2, XOR_PUT ) ; } } closegraph(); Initialize(); SayGoodbye(); /* Give user the closing screen */ closegraph(); /* Return the system to text mode */ return(0); }
screen() { int i, j, lx = 0, ly = 0, ch ; rectangle(1,1,600,195); setbkcolor(4); /* set the textstyle for displaying instruction */ changetextstyle ( DEFAULT_FONT, HORIZ_DIR, 0 ) ; outtextxy ( 150, 55, " Instructions " ) ; changetextstyle (4, HORIZ_DIR, 5 ); outtextxy ( 130, 0, " B R I C K S" ) ; changetextstyle ( DEFAULT_FONT, HORIZ_DIR, 0 ) ; outtextxy ( 30, 68, "Use left and right arrow keys to move paddle." ) ; outtextxy ( 30, 88, "If you don't collect the ball on the paddle, you lose the ball." ) ; outtextxy ( 30, 108, "On loosing a ball you loose 20 points." ) ; outtextxy ( 30, 128, "On taking a brick you gain 5 points." ) ; changetextstyle(7, HORIZ_DIR, 3); outtextxy ( 100, 148, "Press any key to continue ..." ) ; bell ( 3 ) ; /* ring music */ fflush ( stdin ) ; if ( getch() == 0 ) getch() ; closegraph(); initgraph ( &graphdriver, &graphmode, "e:\\tc\\bgi " ) ; rectangle(2,2,620,195); setbkcolor(4); /* display the main menu */ while ( 1 ) { changetextstyle(4,HORIZ_DIR,5); outtextxy ( 60, 8, "Options Available:" ) ; outtextxy ( 150, 55, "Play ( P )" ) ; outtextxy ( 150, 125, "Exit ( E )" ) ; ch = 0 ; /* continue untill you select the correct choice */ while ( ! ( ch == 'E' || ch == 'P' ) ) { fflush ( stdin ) ; /* if a special key is hit, flush the keyboard buffer */ if ( ( ch = getch() ) == 0 ) getch() ; else ch = toupper ( ch ) ; /* store the uppercase of the choice made*/ } if ( ch == 'P' ) break ; if (ch == 'E') exit ( 0 ) ; } setviewport ( 1, 125 - 12, MaxX - 1, MaxY - 1, 1 ) ; clearviewport() ; closegraph(); initgraph ( &graphdriver, &graphmode, "e:\\tc\\bgi " ) ; rectangle(2,2,620,195); setbkcolor(4); /* display menu for the diffrent levels */ changetextstyle(7,HORIZ_DIR,3); outtextxy ( 60, 8, "Select the level for play:" ) ; outtextxy ( 150,50, "Slow ( S )" ) ; outtextxy ( 150, 100, "Medium ( M )" ) ; outtextxy ( 150, 150, "Fast ( F )" ) ; /* accept user's choice */ fflush ( stdin ) ; if ( ( ch = getch() ) == 0 ) getch() ; clearviewport() ; /* return the choice selected by the user */ return ( ch ) ; }