C++實現簡易的彈球小遊戲

本文實例為大傢分享瞭C++實現彈球小遊戲的具體代碼,供大傢參考,具體內容如下

操作說明:鍵盤A和D鍵控制左右移動,讓球不要落下。

#include <graphics.h>
#include <conio.h>
#include <time.h>
int i;
int xx=0;
int yy = 0;
class Ball
{
public:
 int x, y;
 clock_t b;
 void draw()
 {
  setfillcolor(RGB(200, 399, 100));
  fillcircle(x, y, 10);
 }
 void null()
 {
  setfillcolor(0);
  setlinecolor(0);
  fillcircle(x, y, 10);
 
 }
};
 
class Board
{
public:
 int x, y;
 void draw()
 {
  setlinecolor(RGB(100, 209, 150));
  setfillcolor(RGB(200, 399, 100));
  fillrectangle(x, y, x+60,y+10);
 
 }
 void null()
 {
  setfillcolor(0);
  setlinecolor(0);
  fillrectangle(x, y, x + 60, y + 10);
 
 }
 
};
 
 
void wall()
{
 setlinecolor(RGB(300, 109, 650));
 setfillcolor(RGB(200, 409, 300));
 POINT pts[] = { {1, 1}, {1, 350}, {10,350 }, {10,10 }, {600, 10}, {600, 350}, {610,350}, {610,1 } };
 fillpolygon(pts, 8);
}
 
 
int main()
{
 
 // 初始化圖形窗口
 initgraph(640, 480,4);
 wall();
 Board board;
 board.x = 200;
 board.y = 400;
 Ball ball;
 clock_t f = clock();
 clock_t d = clock();
 
 while (1)
 {
  int i=3 ;
  if (GetAsyncKeyState('A') & 0x8000)//木板移動
  {
   if (board.x > 2 && (clock() - d) >= 10)
   {
    board.null(); board.x -= 3; board.draw(); d = clock();
   }
  }
  if (GetAsyncKeyState('a') & 0x8000)//木板移動
  {
   if (board.x > 2 && (clock() - d) >= 10)
   {
    board.null(); board.x -= 3; board.draw(); d = clock();
   }
  }
 
  if (GetAsyncKeyState('D') & 0x8000)//木板移動
  {
   if (board.x < 600 && (clock() - d) >= 10)
   {
    board.null(); board.x += 3; board.draw(); d = clock();
   }
  }
  if (GetAsyncKeyState('d') & 0x8000)//木板移動
  {
   if (board.x <600 && (clock() - d) >= 10)
   {
    board.null(); board.x += 3; board.draw(); d = clock();
   }
  }
 
  if (GetAsyncKeyState('K') & 0x8000)//發球
  {
    if  (yy==0&&xx==0&&(clock() - f) >= 10)
    {
     yy = 1;
     xx = 1;
     ball.x = board.x + 50;
     ball.y = board.y - 21;
     ball.draw();
     f = clock();
    }
  }
  if (GetAsyncKeyState('k') & 0x8000)//發球
  {
    if (yy==0&&xx==0&& (clock() - f) >= 10)
    {
     yy = 1;
     xx = 1;
     ball.x = board.x + 50;
     ball.y = board.y - 21;
     ball.draw();
     f = clock();
    }
  }
 
   //球的彈射//
  if (yy==1&&xx==1&&clock()-ball.b>5)
  {
   ball.null();
   ball.x -= 2;
   ball.y -= 2;
   ball.draw();
   ball.b = clock();
   if (ball.y <= 21)
   {
    ball.y = 21;
    ball.null();
    xx = 4;
   }
   
   if (ball.x <= 24)
   {
    ball.x = 24;
    ball.null();
    xx = 2;
   }
   
  }
 
 
  if (yy==1&&xx == 2 && clock() - ball.b > 5)
  {
   ball.null();
   ball.x += 2;
   ball.y -= 2;
   ball.draw();
   ball.b = clock();
   if (ball.y <= 21)
   {
    ball.y = 21;
    ball.null();
    xx = 3;
   }
   if (ball.x >= 580)
   {
    ball.x = 580;
    ball.null();
    xx = 1;
   }
   
  }
  if (yy==1&&xx == 3 && clock() - ball.b > 5)
  {
   ball.null();
   ball.x += 2;
   ball.y += 2;
   ball.draw();
   ball.b = clock();
   
   if (ball.x >= 580)
   {
    ball.x = 580;
    ball.null();
    xx = 4;
   }
   
   if (ball.x >= board.x && ball.x <= board.x + 60 && ball.y <= board.y + 9 && ball.y >= board.y - 11)
   {
    ball.null();
    ball.y = board.y - 21;
    ball.draw();
    xx = 2;
   }
  }
 
  if (yy==1&&xx == 4 && clock() - ball.b > 5)
  {
   ball.null();
   ball.x -= 2;
   ball.y += 2;
   ball.draw();
   ball.b = clock();
   
   
   if (ball.x <= 24)
   {
    ball.x = 24;
    ball.null();
    xx = 3;
   }
   if (ball.x >= board.x && ball.x <= board.x + 60 && ball.y <= board.y + 9 && ball.y >= board.y - 11)
   {
    ball.null();
    ball.y = board.y - 21;
    ball.draw();
    xx = 1;
   }
  }
 
  if (ball.y >= 440)
  {
   yy = 0;
   xx = 0;
   ball.null();
  }
 
 }
 
    closegraph();
 return 0;
}

小編再為大傢分享一段代碼:C語言實現簡單的控制臺彈跳小球

#include <stdio.h>
 
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
 
 
// 全局變量
 int x,y;     //小球坐標 
 int velocity_x,velocity_y ; //速度 
 int left,right,top,bottom; //邊界 
 
 
void gotoxy(int x,int y)  //光標移動到(x,y)位置
{
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos;
    pos.X = x;
    pos.Y = y;
    SetConsoleCursorPosition(handle,pos);
}
 
 
void HideCursor() // 用於隱藏光標
{
 CONSOLE_CURSOR_INFO cursor_info = {1, 0};  // 第二個值為0表示隱藏光標
 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
void startup() // 數據初始化
{
 x = 1;
 y = 5;
 velocity_x = 1;   //速度方向 
 velocity_y = 1;
 left = 0;
 right = 30;
 top = 0;
 bottom = 15;
 
 
 HideCursor();  // 隱藏光標
}
 
 
void show()  // 顯示畫面
{
 
 int i,j;
 for (i=0;i<=bottom;i++)
 {
  for (j=0;j<=right;j++)
  {
 
 
 
   if((i==x) && (j==y))
    {
     printf("o");    //打印小球 
    }
   else if ((i==0)||(i==bottom)||(j==0)||(j==right))  //打印邊界 
    {
     printf("#");
    }
   else printf(" ");
  }
  printf("\n");
 }
} 
void automation()  // 與用戶輸入無關的更新
{ 
 x = x + velocity_x;    
 y = y + velocity_y;
 if ((x==top)||(x==bottom))
 {
  velocity_x = -velocity_x;
  printf("\a");
 }
  
 else if ((y==left)||(y==right))
 {
  velocity_y = -velocity_y;
  printf("\a");
 }
   
 Sleep(100);  //調低小球速度 
}
int main()
{
 system("color 2f");  //改變控制臺顏色 
 startup();     // 數據初始化 
 while (1)     //  遊戲循環執行
 {
  gotoxy(0,0);    // 清屏 
  show();     // 顯示畫面
  automation();    // 與用戶輸入無關的更新
 }
 return 0;
}

以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: