void Game::Draw(){ if(IsRunning){ map->Draw(); snake->Draw(); ShowScore(); } else if (IsGameOver){ ShowGameOver(); } else ShowSplashScreen(); }
int main(){ int gd=DETECT, gm; int Return=0; char Key, ScanCode; int Counter=0; //Divide total delay & take multiple input initgraph(&gd, &gm,"c:\\tc\\bgi"); //initialize graphics mode randomize(); //Randomize block's shapes & color cleardevice(); //clear screen InitPalette(); //for setting color pallete InitMatrix(); //Initialize Matrix GetImages(); //Saving the images StartScreen(); //for start screen cleardevice(); //clear screen AssignShape(GetRandomShape(), GetRandomColor()); //for the falling block NextShape=GetRandomShape(); NextColor=GetRandomColor(); DisplayScreen(); //Show main screen DisplayNextShape(); //show next brick MoveBlock(LEFT); //keep the block on center & check game over while(kbhit()) getch(); //empty the keyboard input while (!Quit && !GameOver) { //Moving the blocks down if(++Counter >= Speed) //For controling the speed { Counter=0; MoveBlock(DOWN); SoundDrop(); } if(kbhit()) //For the arrow keys { Key = getch(); if(Key == 0) { ScanCode = getch(); if(ScanCode == KEY_UP) RotateBlock(); else if(ScanCode == KEY_LEFT) MoveBlock(LEFT); else if(ScanCode == KEY_RIGHT) MoveBlock(RIGHT); else if(ScanCode == KEY_DOWN) { Score++; //increase score PrintScore(); MoveBlock(DOWN); } if(!Return) SoundDrop(); Return = 0; } else if(Key == KEY_ENTER || Key == KEY_SPACE) //Rotating bricks RotateBlock(); else if(Key == 'P' || Key == 'p') //For pause { MessageBox(" Paused"); while(kbhit()) getch(); //clear the keyboard input for(int x=0; x<COLS; x++) for(int y=0; y<ROWS; y++) PreviousScreenLayout[x][y] -= 1; //Clear the present screen layout to refresh the whole screen UpdateScreen(); //refresh screen } else if(Key == KEY_ESC) //For quit { char ret = MessageBox("Are you sure, you want to Quit?", 563, 2); if(ret == 'y' || ret == 'Y' || ret == KEY_ENTER) { Quit = 1; break; } cleardevice(); //Clear the message box while(kbhit()) getch(); //Clear the keyboard input for(int x=0; x<COLS; x++) for(int y=0; y<ROWS; y++) PreviousScreenLayout[x][y] -= 1; // Clear the present screen layout to refresh the whole screen UpdateScreen(); //refresh screen DisplayScreen(); //show the main screen again DisplayNextShape(); //show next brick box } else if(Key == 's' || Key == 'S') //For sound on/off { SoundOn = !SoundOn; } else if(Key=='a' || Key=='A') //For author { MessageBox("Author: Aguntuk Group",450); cleardevice(); //Clear the message box while(kbhit()) getch(); //Clear the keyboard input for(int x=0;x<COLS;x++) for(int y=0;y<ROWS;y++) PreviousScreenLayout[x][y] -=1; //Clear the present screen layout to refresh the whole screen UpdateScreen(); //refresh screen DisplayScreen(); //show the main screen again DisplayNextShape(); //show next brick box } } delay(6); //For moving down the blocks slowly } if(GameOver) //For game over option { DisplayBlock(6,0); //For display the top most brick ShowGameOver(); //For display game over message box } restorecrtmode(); //For closing graphicg mode return 0; }