精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何用C語(yǔ)言實(shí)現(xiàn)球球大作戰(zhàn)項(xiàng)目

C語(yǔ)言編程學(xué)習(xí)基地 ? 來(lái)源:C語(yǔ)言編程學(xué)習(xí)基地 ? 作者:C語(yǔ)言編程學(xué)習(xí)基地 ? 2021-11-21 16:36 ? 次閱讀

這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)——《球球大作戰(zhàn)項(xiàng)目》,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下!在室友面前秀一下豈不是美滋滋!

游戲介紹:

這是一個(gè)大球吃小球的世界,玩家的目標(biāo)是要努力吃成最大的球球。在游戲一開(kāi)始,玩家出現(xiàn)在地圖上隨機(jī)位置,地圖里灑滿了小彩豆,玩家吃掉小彩豆體積就會(huì)增大,當(dāng)增大到比別人的球大時(shí),就可以吃別人的球啦,當(dāng)然也得躲避更大的球。小球速度快,大球速度慢。球球到達(dá)一定重量后,可以分身,一個(gè)球變成等大的兩個(gè)球,可以再次分身,但是最多可以擁有16個(gè)分身。

本期就是帶著大家用C語(yǔ)言去開(kāi)發(fā)一款自己寫(xiě)的簡(jiǎn)易版球球大作戰(zhàn),一定要自己動(dòng)手來(lái)寫(xiě)喲~

本項(xiàng)目編譯環(huán)境:VS2019/VS2013;

插件:圖形庫(kù)插件easyX,涉及圖片素材可以自行百度找也可以關(guān)注文末領(lǐng)取;

配套講解教程:球球大作戰(zhàn)游戲教程——嗶哩嗶哩

源代碼示例:

#include#include#include#include#include#include#pragma comment(lib,"winmm.lib")#define WIN_WIDTH 1024 //宏定義窗口寬和高#define WIN_HEIGHT 640#define MAP_WIDTH  (WIN_WIDTH*5)#define MAP_HEIGHT (WIN_HEIGHT*5)#define FOOD_NUM 1000//食物數(shù)量 #define AI_NUM 500 //人工智障數(shù)量
//玩家,用圓表示,用變量表示玩家的坐標(biāo)struct Ball //定義小球的結(jié)構(gòu),玩家,ai,食物{  int x;  int y;  int r;  bool flag;//是否存在標(biāo)志  DWORD color;//小球顏色}player,food[FOOD_NUM],ai[AI_NUM];//定義變量//int a; 圖片 IMAGE map;IMAGE map(MAP_WIDTH, MAP_HEIGHT);POINT cameraPos;//攝像機(jī)位置void CameraUpdate(){  //以人物為中心,計(jì)算攝像機(jī)的位置  cameraPos.x = player.x - WIN_WIDTH / 2;  cameraPos.y = player.y - WIN_HEIGHT / 2;
  if (cameraPos.x < 0) cameraPos.x = 0;  if (cameraPos.y < 0) cameraPos.y = 0;  if (cameraPos.x > MAP_WIDTH - WIN_WIDTH) cameraPos.x = MAP_WIDTH - WIN_WIDTH;  if (cameraPos.y > MAP_HEIGHT - WIN_HEIGHT) cameraPos.y = MAP_HEIGHT - WIN_HEIGHT;
}//初始化數(shù)據(jù)void GameInit(){  mciSendString("open ./BallBGM.mp3 alias BGM", 0, 0, 0);  mciSendString("play BGM repeat", 0, 0, 0);  //設(shè)置隨機(jī)數(shù)種子  srand((unsigned)time(NULL));
  player.x = rand() % MAP_WIDTH;  player.y = rand() % MAP_HEIGHT;  player.r = 15;  player.flag = true;  player.color = RGB(rand() % 256, rand() % 256, rand() % 256);  //初始化食物數(shù)據(jù)  for (int i = 0; i < FOOD_NUM; i++)  {    food[i].x = rand() % MAP_WIDTH;    food[i].y = rand() % MAP_HEIGHT;    food[i].r = rand() % 5+1;    food[i].flag = true;    food[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);  }  //初始化ai  for (int i = 0; i < AI_NUM; i++)  {    ai[i].x = rand() % MAP_WIDTH;    ai[i].y = rand() % MAP_HEIGHT;    ai[i].r = rand() % 15 + 1;    ai[i].flag = true;    ai[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);  }}void GameDraw(){  //加上雙緩沖繪圖,防止閃屏  BeginBatchDraw();  //設(shè)置工作區(qū)  SetWorkingImage(&map);  //設(shè)置背景顏色  setbkcolor(WHITE);  //清屏  cleardevice();  //繪制食物  for (int i = 0; i < FOOD_NUM; i++)  {    if (food[i].flag)    {      setfillcolor(food[i].color);      solidcircle(food[i].x, food[i].y, food[i].r);    }  }  //繪制智障  for (int i = 0; i < AI_NUM; i++)  {    if (ai[i].flag)    {      setfillcolor(ai[i].color);      solidcircle(ai[i].x, ai[i].y, ai[i].r);    }  }  //繪制玩家  if (player.flag)  {    setfillcolor(player.color);    solidcircle(player.x, player.y, player.r);    settextcolor(BLACK);    setbkmode(TRANSPARENT);    outtextxy(player.x, player.y, "頑石老師");  }  SetWorkingImage();//恢復(fù)默認(rèn)工作區(qū)  CameraUpdate();  //putimage(cameraPos.x, cameraPos.y, &map);  putimage(0, 0, WIN_WIDTH, WIN_HEIGHT, &map, cameraPos.x, cameraPos.y);  EndBatchDraw();//結(jié)束雙緩沖繪圖}//控制玩家void PlayerContrl(int speed){  //往上移動(dòng),什么發(fā)生改變?y坐標(biāo)減  if (GetAsyncKeyState(VK_UP) && player.y-player.r >= 0)  {    player.y -= speed;  }  if (GetAsyncKeyState(VK_DOWN) && player.y + player.r  {    player.y += speed;  }  if (GetAsyncKeyState(VK_LEFT) && player.x - player.r >= 0)  {    player.x -= speed;  }  if (GetAsyncKeyState(VK_RIGHT) && player.x + player.r   {    player.x += speed;  }}//求兩點(diǎn)之間的距離double DisTance(struct Ball b1,struct Ball b2){  return sqrt((double)(b1.x - b2.x)*(b1.x - b2.x) + (b1.y - b2.y)*(b1.y - b2.y));}//玩家吃食物void EatFood(){  for (int i = 0; i < FOOD_NUM; i++)  {    if (food[i].flag && DisTance(player,food[i])    {      food[i].flag = false;      player.r+=food[i].r/4;    }  }}//追逐算法 void Chase(struct Ball *chase, struct Ball run){  chase->x < run.x ? chase->x += 2 : chase->x -= 2;//x改變  chase->y < run.y ? chase->y += 2 : chase->y -= 2;//y改變}
void aiMove(){  for (int i = 0; i < AI_NUM; i++)  {    if (ai[i].flag)    {      Chase(&ai[i], player);    }  }}int main(){  //創(chuàng)建窗口  initgraph(WIN_WIDTH, WIN_HEIGHT);  GameInit();  //需要不斷地處理繪圖,以及獲取鍵盤(pán)消息...循環(huán)  while (1)  {    aiMove();    GameDraw();    EatFood();    PlayerContrl(10);  }    getchar();  return 0;}

責(zé)任編輯:haq
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7576

    瀏覽量

    133994
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4668

    瀏覽量

    67756

原文標(biāo)題:C語(yǔ)言項(xiàng)目實(shí)戰(zhàn):《球球大作戰(zhàn)》零基礎(chǔ)項(xiàng)目!185 行源代碼示例

文章出處:【微信號(hào):cyuyanxuexi,微信公眾號(hào):C語(yǔ)言編程學(xué)習(xí)基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    BGA連接器植工藝研究

    直接影響器件與電路的性能及可靠性,現(xiàn)從植工藝路線、BGA連接器設(shè)計(jì)要求、植工藝參數(shù)及關(guān)鍵技術(shù)、試驗(yàn)及檢測(cè)要求等幾個(gè)方面,闡述了影響B(tài)GA連接器植工藝實(shí)現(xiàn)的各種因素,借以提高BGA
    的頭像 發(fā)表于 07-15 15:42 ?761次閱讀
    BGA連接器植<b class='flag-5'>球</b>工藝研究

    智能軟啟動(dòng)柜浮控制設(shè)置在哪

    智能軟啟動(dòng)柜是一種用于電動(dòng)機(jī)啟動(dòng)和控制的設(shè)備,它通過(guò)控制電動(dòng)機(jī)的啟動(dòng)電流,減少啟動(dòng)時(shí)的沖擊,延長(zhǎng)電動(dòng)機(jī)的使用壽命。智能軟啟動(dòng)柜的浮控制設(shè)置是其中的一個(gè)重要功能,可以有效地控制水位,防止水泵空轉(zhuǎn)或
    的頭像 發(fā)表于 06-18 14:41 ?429次閱讀

    借助多個(gè)預(yù)校正相機(jī)的準(zhǔn)確 360° 型成像

    機(jī)器視覺(jué)發(fā)展至今,型視頻數(shù)據(jù)的質(zhì)量和靈活性使該媒介成為需要同步視頻流的應(yīng)用的理想之選。典型的是成為GIS應(yīng)用,例如移動(dòng)地圖和街景,彩色化LIDAR生成的3D點(diǎn)云
    的頭像 發(fā)表于 06-15 08:34 ?166次閱讀
    借助多個(gè)預(yù)校正相機(jī)的準(zhǔn)確 360° <b class='flag-5'>球</b>型成像

    何用C語(yǔ)言實(shí)現(xiàn)高效查找(二分法)

    今天給分享一下使用C語(yǔ)言實(shí)現(xiàn)二分算法,主要包含以下幾部分內(nèi)容:二分查找算法介紹二分查找算法使用場(chǎng)景二分查找算法代碼實(shí)現(xiàn)二分查找算法實(shí)現(xiàn)過(guò)程用C
    的頭像 發(fā)表于 06-04 08:04 ?763次閱讀
    如<b class='flag-5'>何用</b><b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言實(shí)現(xiàn)</b>高效查找(二分法)

    淺談SMT工藝中的葡萄效應(yīng)成因

    葡萄效應(yīng)是指在SMT回流焊過(guò)程中,錫膏無(wú)法完全融化和潤(rùn)濕焊盤(pán),而形成一顆顆類似葡萄的小球,影響焊點(diǎn)的可靠性和外觀。葡萄效應(yīng)的成因主要與錫膏的質(zhì)量、印刷工藝、回流焊曲線等因素有關(guān)。本文將重點(diǎn)分析錫膏印刷后有效壽命對(duì)葡萄效應(yīng)的
    的頭像 發(fā)表于 05-24 09:13 ?424次閱讀

    使用C語(yǔ)言實(shí)現(xiàn)的CRC計(jì)算單元的例子

    使用C語(yǔ)言實(shí)現(xiàn)的CRC計(jì)算單元的例子
    的頭像 發(fā)表于 05-16 16:16 ?506次閱讀

    什么是葡萄珠現(xiàn)象?如何解決?

    葡萄珠現(xiàn)象(Graping),一般指在smt貼片加工過(guò)程中回流焊接過(guò)程中部分錫膏沒(méi)有完全融化,反而被互相焊接在一起形成一顆顆獨(dú)立的錫珠或錫堆疊在一起,形成類似一串串葡萄的現(xiàn)象。下面深圳佳金源錫膏
    的頭像 發(fā)表于 04-01 15:30 ?378次閱讀
    什么是葡萄<b class='flag-5'>球</b>珠現(xiàn)象?如何解決?

    C語(yǔ)言實(shí)現(xiàn)Web參數(shù)傳遞

    電子發(fā)燒友網(wǎng)站提供《C語(yǔ)言實(shí)現(xiàn)Web參數(shù)傳遞.docx》資料免費(fèi)下載
    發(fā)表于 03-24 09:14 ?2次下載

    帶光口的機(jī)可以和交換機(jī)搭配使用嗎?

    帶光口的機(jī)可以和交換機(jī)搭配使用嗎? 攝像監(jiān)控是當(dāng)今社會(huì)中不可或缺的一部分,它提供了安全監(jiān)控和錄像的功能。而帶光口的機(jī)作為一種常見(jiàn)的攝像監(jiān)控設(shè)備之一,其特點(diǎn)是具備網(wǎng)絡(luò)功能和光纖傳輸功能。本文將詳細(xì)
    的頭像 發(fā)表于 02-04 10:09 ?722次閱讀

    ADUC7061如何使用C語(yǔ)言實(shí)現(xiàn)EEPROM功能?

    我使用ADUC7061做的信號(hào)采集,現(xiàn)在客戶需要實(shí)現(xiàn)EEPROM功能來(lái)保存3-5個(gè)數(shù)據(jù),請(qǐng)問(wèn)如何使用C語(yǔ)言實(shí)現(xiàn)?不使用外部EEPROM 專用IC。
    發(fā)表于 01-12 06:56

    液位浮開(kāi)關(guān)接線原理詳解

    開(kāi)關(guān),我們通過(guò)他用來(lái)接通控制水泵電路。
    的頭像 發(fā)表于 01-02 09:33 ?964次閱讀
    液位浮<b class='flag-5'>球</b>開(kāi)關(guān)接線原理詳解

    C語(yǔ)言實(shí)用程序150例

    電子發(fā)燒友網(wǎng)站提供《C語(yǔ)言實(shí)用程序150例.rar》資料免費(fèi)下載
    發(fā)表于 11-20 11:37 ?1次下載
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言實(shí)</b>用程序150例

    基于VHDL語(yǔ)言實(shí)現(xiàn)遠(yuǎn)程防盜報(bào)警設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于VHDL語(yǔ)言實(shí)現(xiàn)遠(yuǎn)程防盜報(bào)警設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 11-08 14:33 ?0次下載
    基于VHDL<b class='flag-5'>語(yǔ)言實(shí)現(xiàn)</b>遠(yuǎn)程防盜報(bào)警設(shè)計(jì)

    激光錫噴射焊接機(jī)的工藝介紹

    多用于電路板的加工生產(chǎn),但是,常用的焊錫由于助焊劑與金屬在融合過(guò)程中不均勻,容易造成金屬溶液飛濺,造成產(chǎn)品短路,對(duì)產(chǎn)品品質(zhì)的穩(wěn)定性產(chǎn)生不好的影響。為此,深圳紫宸激光提供了一種激光錫噴射焊接
    的頭像 發(fā)表于 11-03 14:13 ?1010次閱讀
    激光錫<b class='flag-5'>球</b>噴射焊接機(jī)的工藝介紹

    基于ATmega128的管電壓控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《基于ATmega128的管電壓控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 10-08 10:46 ?0次下載
    基于ATmega128的<b class='flag-5'>球</b>管電壓控制系統(tǒng)設(shè)計(jì)與<b class='flag-5'>實(shí)現(xiàn)</b>