亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++小游戲BrickHit實例代碼

2020-05-23 13:32:19
字體:
來源:轉載
供稿:網友

打磚塊小游戲。材料:EasyX圖形庫。

碰撞的處理,木板移動方法還需要優化。

//定義 Circle,Brick,Broad#include<cmath>#include<graphics.h>#ifndef _PROPERTY_H_#define _PROPERTY_H_struct Circle {  int x0, y0, r;  int mvX, mvY;  COLORREF color;  virtual ~Circle() {}  Circle(int x0_, int y0_, int r_, int mvX_, int mvY_, COLORREF color_)    :x0(x0_), y0(y0_), r(r_), mvX(mvX_), mvY(mvY_), color(color_) {}  //小球起始位置  void prtCirl() {    setfillcolor(color);    solidcircle(x0, y0, r);  }  //小球的移動  void CirlMove() {    setfillcolor(BLACK);    solidcircle(x0, y0, r);    x0 += mvX;    y0 += mvY;    setfillcolor(color);    solidcircle(x0, y0, r);  }  //判斷小球是否離開寬口內。  //參數:窗口左上坐標、寬、高。  //離開返回真。  bool IsCirlQuit(int x, int y, int width, int height) {    if (x0 - x <= r && mvX < 0) {      mvX = -mvX;      return false;    }    else if (x + width - x0 <= r && mvX > 0) {      mvX = -mvX;      return false;    }    else if (y0 - y <= r && mvY < 0) {      mvY = -mvY;      return false;    }    else if (y + height - y0 <= r)      return true;    return false;  }};struct Brick {  int x0, y0;  COLORREF color;  int height, width;  virtual ~Brick() {}  Brick(int x0_, int y0_, int width_, int height_, COLORREF color_)    :x0(x0_), y0(y0_), width(width_), height(height_), color(color_) {}  //磚塊的繪制  void prtBrick() {    setfillcolor(color);    solidrectangle(x0, y0, x0 + width, y0 + height);  }  //判斷磚塊是否與小球發生碰撞  //參數:小球  //發生碰撞返回真  bool IsCrashCirl(Circle &arg) {    if (arg.x0 + arg.r < x0 || x0 + width < arg.x0 - arg.r)      return false;    int disY = min(abs(y0 - arg.y0), abs(y0 + height - arg.y0));    if (disY <= arg.r) {      arg.mvY = -arg.mvY;      return true;    }    return false;  }  //磚塊的清除  void BrickClr() {    setfillcolor(BLACK);    solidrectangle(x0, y0, x0 + width, y0 + height);  }};struct Broad :public Brick{  int mvX;  int floor, ceiling;  virtual ~Broad() {}  Broad(int x0_, int y0_, int width_, int height_, int mvX_,    int floor_, int ceiling_, COLORREF color_)    :Brick(x0_, y0_, width_, height_, color_), mvX(mvX_), floor(floor_), ceiling(ceiling_) {}  //重載,判斷木板是否與小球發生碰撞  //參數:小球  //發生碰撞返回真  bool IsCrashCirl(Circle &arg) {    if (arg.x0 + arg.r < x0 || x0 + width < arg.x0 - arg.r)      return false;    if (y0 - arg.y0 <= arg.r&&arg.mvY > 0) {      arg.mvY = -arg.mvY;      return true;    }    return false;  }  //木板移動  void BroadMove() {    POINT point;    GetCursorPos(&point);    if (x0 <= point.x&&point.x <= x0)      return;     BrickClr();    if (point.x < x0)      x0 = max(x0 - mvX, floor);    else      x0 = min(x0 + mvX, ceiling - width);    setfillcolor(color);    solidrectangle(x0, y0, x0 + width, y0 + height);  }};#endif // _PROPERTY_H_
//Main.cpp#include<list>#include<algorithm>#include"property.cpp"using namespace std;const int WndW = 400, WndH = 400; //窗口大小list<Brick> CreatBricks();bool theGame(list<Brick> &MyBrks, Broad &MyBrd, Circle&MyCirl);int main() {   //brick布局  list<Brick> MyBrks = move(CreatBricks());  //broad:60*20,移速5,WHITE  Broad MyBrd(WndW/2 - 30, WndH - 20, 60, 20, 5, 0, WndW, WHITE);  //circle:半徑5,移速5,DARKGRAY  Circle MyCirl(WndW/2 - 10, WndH - 20 - 10, 10, 5, 5, DARKGRAY);  HWND Hwnd = initgraph(WndW, WndH);  bool GameOver = theGame(MyBrks, MyBrd, MyCirl);  if (GameOver)    MessageBox(Hwnd, L"u Win!", L"BrickHit",MB_OK);  else    MessageBox(Hwnd, L"default!", L"BrickHit", MB_OK);  closegraph();  return 0;}//bricks的實現list<Brick> CreatBricks() {  //brick信息:5行10列,40*10  int Row = 5, Col = 10;  int BrickW = WndW / Col;  int BrickH = 10;  list<Brick> MyBrks;  bool ColChoice = true;  for (int i = Row - 1; i >= 0; i--) {    ColChoice = !ColChoice;    for (int j = 0; j < Col; j++)      switch (ColChoice) {      case true:        MyBrks.push_back({ BrickW*j,BrickH*i,BrickW,BrickH,LIGHTGREEN });        ColChoice = !ColChoice;        break;      case false:        MyBrks.push_back({ BrickW*j,BrickH*i,BrickW,BrickH,LIGHTCYAN });         ColChoice = !ColChoice;        break;      }  }  return MyBrks;}//游戲的實現bool theGame(list<Brick> &MyBrks, Broad &MyBrd, Circle&MyCirl) {  //游戲起始界面  for_each(MyBrks.begin(), MyBrks.end(), [](Brick it) { it.prtBrick(); });  MyBrd.prtBrick();  MyCirl.prtCirl();  //游戲循環  while (!MyBrks.empty()) {    MyCirl.CirlMove();    MyBrd.BroadMove();    if (MyCirl.IsCirlQuit(0, 0, WndW, WndH))      return false;    MyBrd.IsCrashCirl(MyCirl);    auto theBrick = find_if(MyBrks.begin(), MyBrks.end(),      [&MyCirl](Brick it) { return it.IsCrashCirl(MyCirl); });    if (theBrick != MyBrks.end()) {      theBrick->BrickClr();      MyBrks.erase(theBrick);    }    Sleep(30);  }  return true;}

總結

以上所述是小編給大家介紹的C++小游戲BrickHit實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲少妇激情视频| 一区二区欧美亚洲| 国产日韩欧美在线| 久久精品视频免费播放| 亚洲电影免费观看高清| 精品调教chinesegay| 色综合91久久精品中文字幕| 全色精品综合影院| 亚洲最大福利视频网站| 在线观看日韩专区| 日韩中文有码在线视频| 国产精品99蜜臀久久不卡二区| 色婷婷综合久久久久中文字幕1| 欧美视频在线视频| 日韩中文字幕视频在线| 九九九久久国产免费| 亚洲黄页视频免费观看| 欧美日韩国产在线看| 5278欧美一区二区三区| 91久久精品美女| 国产精国产精品| 高清亚洲成在人网站天堂| 成人免费午夜电影| 久久精品夜夜夜夜夜久久| 成人免费高清完整版在线观看| 亚洲二区在线播放视频| 日韩美女在线观看| 精品久久香蕉国产线看观看亚洲| 伊人久久综合97精品| 日本久久久a级免费| 人人爽久久涩噜噜噜网站| 日韩电影免费观看在线| 亚洲国产日韩欧美在线99| 国产精品69久久久久| 国产精品黄视频| 日本精品免费一区二区三区| 亚洲国产精品久久精品怡红院| 亚洲国产又黄又爽女人高潮的| 欧美最猛性xxxxx(亚洲精品)| 欧美国产高跟鞋裸体秀xxxhd| 国产精品欧美激情| 91精品久久久久久久久久| 亚洲社区在线观看| 欧美极品少妇xxxxⅹ裸体艺术| 国产精品入口福利| 精品高清一区二区三区| 欧美精品videosex牲欧美| 热久久这里只有精品| 欧美丰满老妇厨房牲生活| 欧美亚洲在线视频| 亚洲第一男人天堂| 国内精品久久久久影院优| 中文字幕日韩在线视频| 亚洲精品一区在线观看香蕉| 亚洲欧美精品suv| 国产精品三级在线| 欧亚精品在线观看| 国产日韩精品在线播放| 亚洲国产精品成人va在线观看| 亚洲精品久久7777777| 日本成人精品在线| 伊人激情综合网| 91精品国产色综合久久不卡98口| 中文字幕亚洲精品| 午夜免费日韩视频| 亚洲国产私拍精品国模在线观看| 国产成人精品一区二区在线| 精品久久久久久国产91| 亚洲午夜女主播在线直播| 久久久久久久久久国产| 国产成人一区二区三区小说| 国产日韩欧美黄色| 不卡在线观看电视剧完整版| 国产一区二区三区在线视频| 久久久久久久久久国产精品| 久久99久久99精品免观看粉嫩| 亚洲男人的天堂在线播放| 欧美影院成年免费版| 亚洲精品成a人在线观看| 欧美在线观看一区二区三区| 清纯唯美亚洲综合| 欧美激情在线狂野欧美精品| 日本三级韩国三级久久| 亚洲欧洲国产伦综合| 91国产中文字幕| 韩日精品中文字幕| 欧美专区在线播放| 国产成人精品免高潮费视频| 一区二区三区 在线观看视| 成人精品网站在线观看| 国产亚洲精品久久| 38少妇精品导航| 欧洲成人在线视频| 欧美丝袜美女中出在线| 日本国产一区二区三区| 国产精品va在线| 日韩中文字幕国产精品| 成人信息集中地欧美| 伊人成人开心激情综合网| 午夜精品免费视频| 欧美激情成人在线视频| 91日本视频在线| 亚洲欧美成人在线| 国产精品女人久久久久久| 国产+成+人+亚洲欧洲| 中文字幕精品在线视频| 欧美精品成人91久久久久久久| 亚洲黄页视频免费观看| 日韩av电影中文字幕| 亚洲欧美日韩一区二区在线| 欧美日韩中国免费专区在线看| 日韩精品在线影院| 成人免费淫片视频软件| 欧美成人精品一区二区三区| 亚洲色图第一页| 国产精品无av码在线观看| 成人黄色免费看| 久久视频在线观看免费| 国产精品九九九| 日韩在线免费视频| 91亚洲精品在线观看| 精品亚洲一区二区| 久久中文字幕国产| 欧美激情精品久久久久| 亚洲级视频在线观看免费1级| 久久久噜噜噜久噜久久| 亚洲成人中文字幕| 午夜精品美女自拍福到在线| 国产精品欧美日韩一区二区| 欧美成人黄色小视频| 中文字幕综合一区| 日韩免费av在线| 精品视频在线播放色网色视频| 在线中文字幕日韩| 国产91精品高潮白浆喷水| 欧美另类xxx| 精品国产一区二区三区久久狼5月| 亚洲成年人影院在线| 在线亚洲男人天堂| 欧美体内谢she精2性欧美| 久久久噜噜噜久久中文字免| 亚洲精品久久久久久久久久久久| 欧美色视频日本高清在线观看| 中文字幕日本欧美| 日韩成人网免费视频| 欧美成人国产va精品日本一级| 久久久久www| 欧洲日韩成人av| 国产精品一区二区3区| 夜夜嗨av色综合久久久综合网| 成人精品视频久久久久| 在线观看中文字幕亚洲| 欧美肥臀大乳一区二区免费视频| 国产69精品久久久久9999| 亚洲激情成人网| 91精品国产亚洲| 国产精品视频专区| 热门国产精品亚洲第一区在线| 亚洲激情 国产| 中文字幕久精品免费视频| 久久久久在线观看| 91香蕉嫩草影院入口| 亚洲免费电影在线观看| 一区二区福利视频|