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

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

3天內不再提示

如何用C語言實現黃金礦工項目

C語言編程學習基地 ? 來源:C語言編程學習基地 ? 作者:C語言編程學習基地 ? 2021-11-19 10:33 ? 次閱讀

這篇文章主要為大家詳細介紹了C語言實現——《黃金礦工項目》,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下!

游戲介紹:

在規(guī)定的時間內得到規(guī)定的金錢時即可。玩法非常簡單,按“↓”鍵開使撈金子,如有***,按“↑”鍵放***,買東西點鼠標左鍵。不過本游戲之設計到鉤子勾金子的程度,后面的關卡大家可以自行設計,相信能夠設計金子了,鉆石的話同理還是非常簡單的。

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

插件:圖形庫插件easyX,涉及圖片素材可以自行百度找也可以關注文末領??;

配套講解教程:黃金礦工游戲教程——嗶哩嗶哩

源代碼示例:

#include#include#include#define WIDTH 1080#define HEIGHT 640#define PI 3.1415#define MAX_ANGLE 80enum Index{  i_gold = 1,  i_money = 3,  i_roleDown = 5,  i_roleUp = 7,  i_stone = 9};/*鉤子擺動狀態(tài),擺動,伸長,縮短,停止*/enum ATTR{  LEFT,  RIGHT,
  M_NORMAL,  M_LONG,  M_SHORT};struct Role{  int x;  int y;  int width;  int height;  int coin; //總金錢};struct Hook{  int x;  int y;  int endx;  int endy;  int len;//鉤子長度  double angle;//鉤子當前角度  int dir;//鉤子擺動方向,左,右  int vx;//速度變化量  int vy;  int state;//當前狀態(tài)};struct Role role;struct Hook hook;struct Mine//物品{  int x;  int y;  int size;  int type;  bool flag;  int gold;};struct Mine mine[10];//把圖片加載進程序 IMAGE img[11];void loadImg(){  for (int i = 0; i < 10; i++)  {    //如何把數字,轉成字符串    char fileName[20] = "";    sprintf(fileName, "./images/%d.jpg", i);    loadimage(img + i, fileName);  }  loadimage(img+10,"./images/bk.jpg",WIDTH,HEIGHT);}void gameInit(){  loadImg();  role.width = 140;  role.height = 120;  role.x = WIDTH / 2 - role.width / 2;  role.y = 0;
  hook.len = 50;  hook.x = role.x+40;  hook.y = role.y+100;  hook.endx = hook.x;  hook.endy = hook.y + hook.len;  hook.angle = 0;  hook.dir = RIGHT;  hook.state = M_NORMAL;}void gameDraw(){  setfillcolor(GREEN);  solidrectangle(0, 0, WIDTH, role.height);  putimage(0, role.height, img + 10);  putimage(role.x, role.y, img + i_roleDown - 1, SRCAND);  putimage(role.x, role.y, img + i_roleDown, SRCPAINT);  //輸出我的錢  setbkmode(TRANSPARENT);//設置背景透明  settextstyle(50, 0, "黑體");  char coin[20] = "";  sprintf(coin, "金錢:%d", role.coin);  outtextxy(20, 20, coin);  //繪制鉤子  setlinecolor(RED);  setlinestyle(PS_SOLID, 5);  line(hook.x, hook.y, hook.endx, hook.endy);  setfillcolor(YELLOW);  solidcircle(hook.endx, hook.endy, 5);}//鉤子擺動void hookRock(){  if (hook.state == M_NORMAL)  {    if (hook.dir == RIGHT)    {      hook.angle++;    }    else if (hook.dir == LEFT)    {      hook.angle--;    }    if (hook.angle > MAX_ANGLE)    {      hook.dir = LEFT;    }    else if (hook.angle<-MAX_ANGLE)    {      hook.dir = RIGHT;    }
    hook.endx = hook.x + sin(PI / 180 * hook.angle)*hook.len;    hook.endy = hook.y + cos(PI / 180 * hook.angle)*hook.len;  }  }double distance(Hook h){  return sqrt((double)(hook.endx - hook.x)*(hook.endx - hook.x) + (hook.endy - hook.y)*(hook.endy - hook.y));}void keyControl(int speed){  if (GetAsyncKeyState(VK_SPACE))//virtual key  {    hook.state = M_LONG;    hook.vx = sin(PI / 180 * hook.angle)*speed;    hook.vy = cos(PI / 180 * hook.angle)*speed;  }  if (hook.state == M_LONG)  {    hook.endx += hook.vx;    hook.endy += hook.vy;  }  else if (hook.state==M_SHORT)  {    hook.endx -= hook.vx;    hook.endy -= hook.vy;    if (distance(hook)<=hook.len)    {      hook.state =M_NORMAL;    }  }  //碰到邊界反回  if (hook.endx<0 || hook.endx>WIDTH || hook.endy<0 || hook.endy > HEIGHT)  {    hook.state = M_SHORT;  }}int main(){  //控制臺窗口(只能用來輸出文字)  //我們需要能夠畫圖的窗口  initgraph(WIDTH, HEIGHT, SHOWCONSOLE);  gameInit();
  while (1)  {    //雙緩沖繪圖,防止閃屏    BeginBatchDraw();    gameDraw();    EndBatchDraw();    hookRock();    keyControl(5);  }  return 0;}

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

    關注

    180

    文章

    7575

    瀏覽量

    134041
  • 代碼
    +關注

    關注

    30

    文章

    4671

    瀏覽量

    67765

原文標題:C語言項目實戰(zhàn):《黃金礦工》零基礎項目!180 行源代碼示例

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

收藏 人收藏

    評論

    相關推薦

    何用C語言實現高效查找(二分法)

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

    使用C語言實現的CRC計算單元的例子

    使用C語言實現的CRC計算單元的例子
    的頭像 發(fā)表于 05-16 16:16 ?513次閱讀

    C語言實現Web參數傳遞

    電子發(fā)燒友網站提供《C語言實現Web參數傳遞.docx》資料免費下載
    發(fā)表于 03-24 09:14 ?2次下載

    ADUC7061如何使用C語言實現EEPROM功能?

    我使用ADUC7061做的信號采集,現在客戶需要實現EEPROM功能來保存3-5個數據,請問如何使用C語言實現?不使用外部EEPROM 專用IC。
    發(fā)表于 01-12 06:56

    單軸PSO視覺飛拍與精準輸出:EtherCAT超高速實時運動控制卡XPCIE1032H上位機C#開發(fā)(七)

    正運動技術EtherCAT控制卡在VS平臺采用C#語言實現的各種PSO功能。
    的頭像 發(fā)表于 01-03 09:50 ?923次閱讀
    單軸PSO視覺飛拍與精準輸出:EtherCAT超高速實時運動控制卡XPCIE1032H上位機<b class='flag-5'>C</b>#開發(fā)(七)

    C語言構建高效的嵌入式程序

    嵌入式工程師在編寫C語言程序時,需要注重效率和清晰的思路。本文將通過解析經典問題“猴子選大王”來展示如何用C語言思維方式構建高效、清晰的程序
    的頭像 發(fā)表于 12-21 09:27 ?513次閱讀

    visualc++怎么新建c語言文件

    Visual C++ 是一個集成開發(fā)環(huán)境(IDE),用于開發(fā) CC++ 程序。在 Visual C++ 中,新建一個 C
    的頭像 發(fā)表于 11-27 15:57 ?2809次閱讀

    C語言實用程序150例

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

    C語言何用/* */ 注釋?

    有些早期的C編譯器對這種注釋是不支持的。代碼要做到全平臺兼容,這點是必須要考慮的。 因此,老外定義的C語言軟件規(guī)范,無論是MISRA還是CMMI,一般都要求所有代碼注釋必須使用/**/。
    的頭像 發(fā)表于 11-13 12:33 ?503次閱讀

    何用C語言實現線程池

    線程池是一種多線程處理形式,大多用于高并發(fā)服務器上,它能合理有效的利用高并發(fā)服務器上的線程資源;線程與進程用于處理各項分支子功能,我們通常的操作是:接收消息 ==> 消息分類 ==> 線程創(chuàng)建 ==> 傳遞消息到子線程 ==> 線程分離 ==> 在子線程中執(zhí)行任務 ==> 任務結束退出; 對大多數小型局域網的通信來說,上述方法足夠滿足需求;但當我們的通信范圍擴大到廣域網或大型局域網通信中時,我們將面臨大量消息頻繁請求服務器;在這種情況下,創(chuàng)
    的頭像 發(fā)表于 11-13 10:41 ?792次閱讀
    如<b class='flag-5'>何用</b><b class='flag-5'>C</b><b class='flag-5'>語言實現</b>線程池

    基于VHDL語言實現遠程防盜報警設計

    電子發(fā)燒友網站提供《基于VHDL語言實現遠程防盜報警設計.pdf》資料免費下載
    發(fā)表于 11-08 14:33 ?0次下載
    基于VHDL<b class='flag-5'>語言實現</b>遠程防盜報警設計

    何用C語言開發(fā)DSP嵌入式系統(tǒng)?

    何用C語言開發(fā)DSP嵌入式系統(tǒng)? DSP嵌入式系統(tǒng)開發(fā)是一個非常重要的領域,它涉及到設備的控制、數據的處理、系統(tǒng)的優(yōu)化等多種方面,因此,掌握這方面的技術非常重要。 在本文中,將詳細探討如何用
    的頭像 發(fā)表于 10-29 17:29 ?1039次閱讀

    C語言實現的跨平臺開發(fā)庫TBOX

    。 這個項目的目的,是為了使C開發(fā)更加的簡單高效。 目前支持的平臺有: Windows, Macosx, Linux, Android, iOS, *BSD等等。 通過xmake支持各種編譯模式:
    的頭像 發(fā)表于 10-17 14:04 ?1281次閱讀

    C語言程序設計中動態(tài)內存分配如何實現

    C語言程序設計中,動態(tài)內存分配如何實現,需要注意哪些問題?
    發(fā)表于 09-28 16:53 ?1137次閱讀

    經典C語言接口與實現:創(chuàng)建可重用軟件的技術

    )倡導基于接口的C語言設計理念及其實現技術,深入詳細地描述了24個C語言接口及其實現。
    發(fā)表于 09-25 06:42