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

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

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

3天內不再提示

C語言項目:接球小游戲(自制)!詳細思路+源碼分享

C語言編程學習基地 ? 來源:C語言編程學習基地 ? 2023-01-09 11:00 ? 次閱讀

每天一個C語言小項目,提升你的編程能力!

用VS寫了一個小小的游戲,在界面右側有運行時間,接到的小球個數等信息,有 10 個小球下落,玩家可以控制一個盒子左右移動(方向鍵),來接小球,按 Esc 鍵退出,最后會顯示接到的小球的數目/分數。

游戲就是這么簡單,不過也很考驗大家的反應能力的哦!

游戲運行截圖如下:

c19d37de-8e5d-11ed-bfe3-dac502259ad0.png

簡單了解游戲后我們就來試試吧!

本項目編譯環境:Visual Studio 2019/2022,EasyX插件

代碼展示:

#include 
#include 
#include 
#include 


// 定義常量
#define NUM 10
#define  CMD_LEFT    1
#define  CMD_RIGHT    2
#define  CMD_QUIT    4


int box_x = 10;
int box_y = 420;


// 定義球的結構體
struct Ball
{
  int x, y, v;
};


// 獲取用戶控制
int GetCommand()
{
  int c = 0;
  if (GetAsyncKeyState(VK_LEFT) & 0x8000)    c |= CMD_LEFT;
  if (GetAsyncKeyState(VK_RIGHT) & 0x8000)  c |= CMD_RIGHT;
  if (GetAsyncKeyState(VK_ESCAPE) & 0x8000)  c |= CMD_QUIT;


  return c;
}


// 倒計時
int Time(int t)
{
  char strsec[10];
  int sec = 20 - (GetTickCount() - t) / 1000;
  itoa(sec, strsec, 10);
  outtextxy(570, 110, "      ");
  outtextxy(570, 110, strcat(strsec, "s"));
  return sec;
}


// 介紹
void menu()
{
  line(449, 0, 449, 480);
  char runTime[] = "游戲倒計時     : ",
    receiveBallNum[] = "接到的球的數量:", copyRight[] = "版權所有:C語言編程",
    finishWorkDate[] = "完成日期:2023年1月7日",
    introductiona[] = "按方向鍵控制盒子移動接住", introductionb[] = "小球,倒計時為0時游戲結束";


  settextcolor(GREEN);
  outtextxy(450, 10, introductiona);
  outtextxy(450, 30, introductionb);
  outtextxy(450, 110, runTime);
  outtextxy(450, 210, receiveBallNum);
  outtextxy(450, 310, copyRight);
  outtextxy(450, 410, finishWorkDate);
}


// 產生隨機球
void ballRandom(Ball ball[], int i)
{
  ball[i].x = 16 + 45 * i;
  ball[i].y = 8 + rand() % 32;
  ball[i].v = 1 + rand() % 5;
}


// 畫球,并計算得分
void calculateScore(Ball ball[], int& score)
{
  for (int i = 0; i < NUM; i++)
  {
    fillcircle(ball[i].x, ball[i].y, 8);
    if (ball[i].y >= 472)
    {
      ballRandom(ball, i);
      continue;
    }
    if (box_x + 8 <= ball[i].x && ball[i].x <= box_x + 72 && ball[i].y >= 412)
    {
      score++;
      ballRandom(ball, i);
    }
  }
}


// 主函數
int main()
{
  // 初始化
  initgraph(640, 480);
  srand(time(NULL));
  BeginBatchDraw();
  setlinecolor(GREEN);
  setfillcolor(WHITE);


  menu();


  Ball ball[NUM];
  int dx, i, c, score = 0;
  bool flag = true;


  for (i = 0; i < NUM; i++)
  {
    ballRandom(ball, i);
  }


  int t = GetTickCount();
  char strScore[10], str[] = "your score:";


  // 游戲主循環
  while (flag)
  {
    dx = 0;


    // 顯示得分
    char strScore[10];
    itoa(score, strScore, 10);
    outtextxy(570, 210, strScore);


    // 畫球,并計算得分
    calculateScore(ball, score);


    // 畫盒子
    fillrectangle(box_x, box_y, box_x + 80, box_y + 60);
    FlushBatchDraw();


    // 獲取用戶控制命令
    c = GetCommand();
    if (c & CMD_LEFT)  dx = -10;
    if (c & CMD_RIGHT)  dx = 10;
    if (c & CMD_QUIT)  flag = false;
    if (!Time(t)) flag = false;


    // 延時
    Sleep(25);


    // 擦除游戲區
    clearrectangle(0, 0, 448, 480);


    // 計算球的新坐標
    for (i = 0; i < NUM; i++)
    {
      ball[i].y += ball[i].v;
    }


    // 移動盒子
    box_x += dx;
    if (box_x < 0)   box_x = 0;
    if (box_x > 368) box_x = 368;
  }


  // 清空鍵盤緩沖區
  FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));


  // 輸出游戲結果
  itoa(score, strScore, 10);
  outtextxy(222, 240, strcat(str, strScore));
  outtextxy(220, 300, "按任意鍵退出");
  EndBatchDraw();


  // 按任意鍵退出
  getch();
  closegraph();


  return 0;
}

大家趕緊去動手試試吧!

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 游戲
    +關注

    關注

    2

    文章

    736

    瀏覽量

    26283
  • C語言
    +關注

    關注

    180

    文章

    7598

    瀏覽量

    136186
  • 編程
    +關注

    關注

    88

    文章

    3592

    瀏覽量

    93594
  • 源碼
    +關注

    關注

    8

    文章

    633

    瀏覽量

    29139

原文標題:C語言項目:接球小游戲(自制)!詳細思路+源碼分享

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

收藏 人收藏

    評論

    相關推薦

    C語言十字消除游戲詳細思路+源碼分享

    十字消除,休閑小游戲,在規定時間內,只要是十字線能連接到的相同顏色的方塊,就能獲得相應的得分,如果點擊后沒有能夠消除的方塊會扣除時間,是一款益智小游戲
    發表于 11-28 10:45 ?1046次閱讀

    C語言實現:見縫插針游戲!代碼思路+源碼分享

    見縫插圓我們昨天已經用C語言實現了,今天將實現一個見縫插針的游戲
    發表于 12-05 11:02 ?704次閱讀

    llabview黑白棋小游戲制作詳細解析

    `相關課程推薦:《8周LabVIEW視覺項目編程實戰特訓營》上面這張是效果圖編寫這樣一個界面可以使用到多種不同的思路和技巧,我會按照從簡到繁的順序,分幾次來介紹幾個不同的方法。 講由NI 軟件工程師阮奇楨為您講解。llabview黑白棋
    發表于 11-23 15:44

    最受歡迎Labview小游戲(程序實現資料下載)

    一個界面可以使用到多種不同的思路和技巧,我會按照從簡到繁的順序,分幾次來介紹幾個不同的方法。 講由NI 軟件工程師阮奇楨為您講解。labview黑白棋小游戲制作詳細解析:`
    發表于 04-14 20:11

    C語言小游戲源碼分享

    C語言小游戲源碼24點火柴人俄羅斯等等等35個游戲源碼網盤分享鏈接:https://pan.ba
    發表于 04-12 17:11

    利用C語言來編寫打地鼠小游戲

    C語言模擬打地鼠小游戲
    的頭像 發表于 01-26 14:55 ?1.5w次閱讀

    基于Labview的小游戲飛天忍者貓源碼

    基于Labview的小游戲飛天忍者貓源碼
    發表于 11-15 18:22 ?63次下載

    C語言零基礎項目:打字母游戲詳細思路+源碼分享

    今天就用C語言寫了這么個打字母的小程序,就是以前學習機上那種字母往下掉,然后按相應鍵字母消失的游戲
    發表于 12-15 15:02 ?615次閱讀

    C語言零基礎項目:迷宮游戲詳細思路+源碼分享

    每天一個C語言項目,提升你的編程能力!
    的頭像 發表于 12-21 10:08 ?918次閱讀

    C語言零基礎項目自制軍棋游戲詳細思路+源碼分享

    每天一個C語言項目,提升你的編程能力!
    的頭像 發表于 12-29 17:14 ?8413次閱讀

    C語言零基礎項目:吃豆人小游戲詳細思路+源碼分享

    《吃豆游戲》是一款休閑小游戲,和貪吃蛇,球球大作戰吃食物都是有差不多的游戲邏輯。
    的頭像 發表于 01-03 11:38 ?1379次閱讀

    C語言零基礎項目:連連看小游戲

    連連看小游戲速度節奏快,畫面清晰可愛,適合細心的玩家。豐富的道具和公共模式的加入,增強游戲的競爭性。多樣式的地圖,使玩家在各個游戲水平都可以尋找到挑戰的目標,長期地保持游戲的新鮮感。
    的頭像 發表于 01-04 15:28 ?788次閱讀

    C語言項目:扔香蕉的大猩猩(自制游戲)!詳細思路+源碼分享

    網上有一個香蕉金剛的跑酷游戲,不過我們這個扔香蕉游戲模仿的并不是這個,而是模仿的微軟在 20 多年前的一個小游戲,不知道誰也有印象呢?
    的頭像 發表于 01-06 10:58 ?788次閱讀

    C語言項目:礦井逃生游戲(密室)!詳細思路+源碼分享

    密室逃脫相信大部分都玩過了吧?本游戲就是一種用C語言寫的類似的游戲,因為用手電筒照明找路,所以有點像礦工的樣子,還是叫它礦井逃生吧!(以下是游戲
    的頭像 發表于 01-07 09:41 ?1352次閱讀

    C語言小游戲源碼大放送

    電子發燒友網站提供《C語言小游戲源碼大放送.rar》資料免費下載
    發表于 11-21 10:36 ?1次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>小游戲</b><b class='flag-5'>源碼</b>大放送