99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

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

C語言編程學習基地 ? 來源:C語言編程學習基地 ? 作者:C語言編程學習基地 ? 2021-11-21 16:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

游戲介紹:

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

本期就是帶著大家用C語言去開發(fā)一款自己寫的簡易版球球大作戰(zhàn),一定要自己動手來寫喲~

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

插件:圖形庫插件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ù)量
//玩家,用圓表示,用變量表示玩家的坐標struct Ball //定義小球的結(jié)構(gòu),玩家,ai,食物{  int x;  int y;  int r;  bool flag;//是否存在標志  DWORD color;//小球顏色}player,food[FOOD_NUM],ai[AI_NUM];//定義變量//int a; 圖片 IMAGE map;IMAGE map(MAP_WIDTH, MAP_HEIGHT);POINT cameraPos;//攝像機位置void CameraUpdate(){  //以人物為中心,計算攝像機的位置  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è)置隨機數(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();//恢復默認工作區(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){  //往上移動,什么發(fā)生改變?y坐標減  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;  }}//求兩點之間的距離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();  //需要不斷地處理繪圖,以及獲取鍵盤消息...循環(huán)  while (1)  {    aiMove();    GameDraw();    EatFood();    PlayerContrl(10);  }    getchar();  return 0;}

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

    關(guān)注

    180

    文章

    7632

    瀏覽量

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

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70772

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

文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學習基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    PLC液壓成機數(shù)據(jù)采集物聯(lián)網(wǎng)解決方案

    機,又名壓機或壓設(shè)備,屬于工業(yè)機械范疇,其主要功能是將各類顆粒狀、粉末狀物料,借助高壓擠壓工藝,制成球形或其他預(yù)設(shè)形狀的固體。該設(shè)備在冶金、礦山、煤炭、建材、耐火材料、化工等多個行業(yè)得到
    的頭像 發(fā)表于 06-26 16:11 ?181次閱讀
    PLC液壓成<b class='flag-5'>球</b>機數(shù)據(jù)采集物聯(lián)網(wǎng)解決方案

    光洋股份擬收購銀科技

    近日,光洋股份發(fā)布公告,公司正在籌劃發(fā)行股份及支付現(xiàn)金方式購買寧波銀科技股份有限公司(以下簡稱“銀科技”)100%股權(quán),并募集配套資金。
    的頭像 發(fā)表于 05-28 11:49 ?565次閱讀

    單片機C語言實例(350+例)

    350+單片機C語言實例! 純分享帖,需要者可點擊附件免費獲取完整資料~~~【免責聲明】本文系網(wǎng)絡(luò)轉(zhuǎn)載,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請第一時間告知,刪除內(nèi)容!
    發(fā)表于 05-22 21:47

    索尼FCB-CR8530與高速解決方案:打造精準監(jiān)控新標桿

    在安防監(jiān)控領(lǐng)域,高速機因靈活的云臺旋轉(zhuǎn)與變焦能力成為核心設(shè)備,而索尼FCB-CR8530模組憑借其超高清畫質(zhì)與智能技術(shù),為高速解決方案注入全新動能。通過兩者的深度結(jié)合,可實現(xiàn)遠距離目標捕捉、復雜
    的頭像 發(fā)表于 05-13 17:42 ?200次閱讀

    車載+戶外雙考驗!YU系列USB Type-C連接器成高爾夫車車載快充新選擇

    背景介紹隨著高爾夫運動不再高冷,配置USB等充電接口的高爾夫車,正成為提升球場運營與體驗的標配。凌科電氣YU-USB&Type-C連接器,以穩(wěn)定供電與嚴苛環(huán)境耐受性為核心,成為高爾夫車車
    的頭像 發(fā)表于 04-30 18:20 ?228次閱讀
    車載+戶外雙考驗!YU系列USB Type-<b class='flag-5'>C</b>連接器成高爾夫<b class='flag-5'>球</b>車車載快充新選擇

    BGA封裝焊推力測試解析:評估焊點可靠性的原理與實操指南

    在電子封裝領(lǐng)域,BGA(Ball Grid Array)封裝因其高密度、高性能的特點,廣泛應(yīng)用于集成電路和芯片模塊中。然而,BGA焊的機械強度直接影響到器件的可靠性和使用壽命,因此焊推力測試
    的頭像 發(fā)表于 04-18 11:10 ?525次閱讀
    BGA封裝焊<b class='flag-5'>球</b>推力測試解析:評估焊點可靠性的原理與實操指南

    深度解析激光錫焊中鉛與無鉛錫的差異及大研智造解決方案

    在激光錫焊這一精密焊接技術(shù)領(lǐng)域,錫作為關(guān)鍵的焊料,其特性直接關(guān)乎焊接質(zhì)量與產(chǎn)品性能。在實際應(yīng)用中,錫主要分為有鉛錫和無鉛錫,二者在成分、熔點、環(huán)保性能、機械性能以及成本等方面存
    的頭像 發(fā)表于 03-27 10:19 ?410次閱讀

    羅徹斯特電子針對BGA封裝的重新植解決方案

    BGA焊的更換及轉(zhuǎn)換, 以實現(xiàn)全生命周期解決方案的支持 當BGA封裝的元器件從含鉛轉(zhuǎn)變?yōu)榉蟁oHS標準的產(chǎn)品時,或者當已存儲了15年的BGA產(chǎn)品在生產(chǎn)線上被發(fā)現(xiàn)存在焊損壞或焊接檢驗不合格的情況
    的頭像 發(fā)表于 03-04 08:57 ?1129次閱讀
    羅徹斯特電子針對BGA封裝的重新植<b class='flag-5'>球</b>解決方案

    深入解析:燈具壓測試

    非金屬材料的耐熱性能測試在電子產(chǎn)品的設(shè)計和制造過程中,非金屬材料和絕緣材料的使用日益廣泛。這些材料在高溫條件下的性能變化對于產(chǎn)品的安全性和可靠性至關(guān)重要。IEC壓測試是一種評估非金屬材料和絕緣材料
    的頭像 發(fā)表于 02-06 14:16 ?492次閱讀
    深入解析:燈具<b class='flag-5'>球</b>壓測試

    安泰功率放大器在管道內(nèi)檢測智能旋轉(zhuǎn)能量研究中的應(yīng)用

    實驗名稱:管道內(nèi)檢測智能旋轉(zhuǎn)能量收集 研究方向:管道檢測 測試目的: 以管道內(nèi)檢測智能的運動特性分析為基礎(chǔ),提出適用于智能的旋轉(zhuǎn)壓電能量收集結(jié)構(gòu),建立機電耦合模型,分析集能器響應(yīng)特性,明確智能
    的頭像 發(fā)表于 12-26 10:39 ?398次閱讀
    安泰功率放大器在管道內(nèi)檢測智能<b class='flag-5'>球</b>旋轉(zhuǎn)能量研究中的應(yīng)用

    貼片材料焊推力測試:從設(shè)備校準到檢測結(jié)果分析

    最近,有從事半導體行業(yè)的朋友,通過官網(wǎng)向小編咨詢,貼片材料焊推力測試要用哪種設(shè)備進行檢測。隨著電子技術(shù)的飛速發(fā)展,電子設(shè)備的微型化和集成化要求對電子組件的組裝工藝提出了更高的挑戰(zhàn)。 貼片材料作為
    的頭像 發(fā)表于 12-19 11:22 ?685次閱讀
    貼片材料焊<b class='flag-5'>球</b>推力測試:從設(shè)備校準到檢測結(jié)果分析

    詳解SMT工藝的五原則

    SMT(表面貼裝技術(shù))工藝中的五原則,是工程師在選擇焊膏時的一個重要指導原則,它確保了焊接的可靠性和質(zhì)量。以下是對五原則的詳細解釋:
    的頭像 發(fā)表于 12-04 09:11 ?672次閱讀
    詳解SMT工藝的五<b class='flag-5'>球</b>原則

    大研智造激光錫設(shè)備:提升車用集成電路BGA焊可靠性(下)

    柵陣列 (Ball Grid Array,BGA) 是一種表面貼裝的封裝形式,憑借其外形尺寸小、引出密度高、電感寄生小、工藝成熟度高、散熱性能好等優(yōu)勢,成為近年來集成電路的主要封裝方式之一。在車用
    的頭像 發(fā)表于 11-30 11:40 ?784次閱讀
    大研智造激光錫<b class='flag-5'>球</b>植<b class='flag-5'>球</b>設(shè)備:提升車用集成電路BGA焊<b class='flag-5'>球</b>可靠性(下)

    使用C語言實現(xiàn)函數(shù)模板

      用C語言能不能實現(xiàn)一個通用的函數(shù),既能完成整數(shù)的相加,又能完成浮點數(shù)的相加?
    的頭像 發(fā)表于 11-09 11:38 ?955次閱讀

    激光錫球焊接機植工藝在半導體行業(yè)的崛起

    在半導體行業(yè)現(xiàn)代化生產(chǎn)線中,激光錫球焊接機自動植工藝正發(fā)揮著關(guān)鍵作用。它以高精度、高效率的優(yōu)勢,為芯片封裝、器件焊接等環(huán)節(jié)帶來全新變革,助力半導體產(chǎn)業(yè)邁向更高質(zhì)量、更智能化的發(fā)展新階段。一、激光錫
    的頭像 發(fā)表于 10-24 14:44 ?1172次閱讀
    激光錫球焊接機植<b class='flag-5'>球</b>工藝在半導體行業(yè)的崛起