<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

C語言實現《別碰白塊》小游戲!全部代碼+思路注釋

C語言編程學習基地 ? 來源:C語言編程學習基地 ? 作者:童晶 ? 2022-12-08 09:06 ? 次閱讀

今天我們將用C語言實現一個小球跳躍躲避方塊的游戲。

就像闖關游戲一樣,小球闖關類游戲是休閑游戲的=一種,玩家在游戲中需要控制各種不同的小球展開不同的挑戰,盡情的闖過重重的關卡,努力的操作小球躲避障礙物以及機關,順利的到達終點,玩法十分的簡單,但是非常的考驗玩家的敏捷力以及反應力。

要做出這個游戲,首先學習字符的知識,按空格鍵控制小球起跳;然后學習矩形的繪制,利用邏輯運算符實現小球和方塊的碰撞判斷;接著學習整除、取余、類型轉換,利用隨機數增加游戲的趣味性;最后實現得分的計算顯示、解決小球在空中起跳的問題。

源碼示例:

#include   
#include 
#include 
int main()
{
  float width,height,gravity; // 游戲畫面大小、重力加速度
  float ball_x,ball_y,ball_vy,radius; // 小球圓心坐標、y方向速度、半徑大小
  float rect_left_x,rect_top_y,rect_width,rect_height,rect_vx; // 方塊障礙物的相關參數
  int score = 0; // 得分
  int isBallOnFloor = 1; // 小球是否在地面上,避免重復起跳


  width = 600;  // 游戲畫面寬度
  height = 400; // 游戲畫面高度
  gravity = 0.6;  // 重力加速度
  initgraph(width, height); // 新建一個畫布


  radius = 20; // 小球半徑  
  ball_x = width/4; // 小球x位置
  ball_y = height-radius;  // 小球y位置
  ball_vy = 0;  // 小球初始y速度為0


  rect_height = 100; // 方塊高度
  rect_width = 20; // 方塊寬度
  rect_left_x = width*3/4; // 方塊左邊x坐標
  rect_top_y = height - rect_height; // 方塊頂部y坐標
  rect_vx = -3; // 方塊x方向速度


  while(1) // 一直循環
  {    
    if (kbhit()) // 當按鍵時
    {
      char input = _getch(); // 獲得輸入字符
      if (input==' ' && isBallOnFloor==1) // 當按下空格鍵,并且小球在地面上時
      {
        ball_vy = -17; // 給小球一個向上的速度
        isBallOnFloor = 0; // 表示小球不在地面了,不能重復起跳
      }
    }


    ball_vy = ball_vy + gravity;  // 根據重力加速度更新小球y方向速度
    ball_y = ball_y + ball_vy;    // 根據小球y方向速度更新其y坐標
    if (ball_y >= height-radius)  // 如果小球落到地面上
    {
      ball_vy = 0;  // y速度為0
      ball_y = height-radius;  // 規范其y坐標,避免落到地面下
      isBallOnFloor = 1; // 表示小球在地面上
    }


    rect_left_x = rect_left_x + rect_vx; // 方塊向左移
    if (rect_left_x <= 0) // 如果方塊跑到最左邊
    {
      rect_left_x = width; // 在最右邊重新出現
      score = score + 1; // 得分+1
      rect_height = rand() % int(height/4) + height/4; // 設置隨機高度
      rect_vx = rand()/float(RAND_MAX) *4 - 7; // 設置方塊隨機速度
    }
    // 如果小球碰到方塊
    if ((rect_left_x <= ball_x + radius) 
      && (rect_left_x + rect_width >= ball_x - radius) 
      && (height - rect_height <= ball_y + radius) )
    {
      Sleep(50); // 慢動作效果
      score = 0; // 得分清零
    }


    cleardevice();  // 清空畫面
    fillcircle(ball_x, ball_y, radius);  // 繪制小球
    // 畫方塊
    fillrectangle(rect_left_x, height - rect_height, rect_left_x + rect_width,height);
    TCHAR s[20]; // 定義字符串數組
    _stprintf(s, _T("%d"),  score); // 將score轉換為字符串
    settextstyle(40, 0, _T("宋體")); // 設置文字大小、字體
    outtextxy(50, 30, s); // 輸出得分文字
    Sleep(10);  // 暫停10毫秒
  }
  closegraph(); 
  return 0;
}

這一次主要講解了字符、邏輯運算符、整除、取余、類型轉換、隨機數等語法知識。利用繪制圓、矩形的函數,實現了別碰方塊的小游戲。

讀者也可以參考本章的開發思路,嘗試設計并分步驟實現flappy bird游戲(以后也會分享哦)

希望對大家有幫助!

審核編輯:湯梓紅

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

    關注

    2

    文章

    699

    瀏覽量

    26055
  • C語言
    +關注

    關注

    180

    文章

    7538

    瀏覽量

    130310
  • 源碼
    +關注

    關注

    8

    文章

    576

    瀏覽量

    28635

原文標題:C語言實現《別碰白塊》小游戲!全部代碼+思路注釋

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

收藏 人收藏

    評論

    相關推薦

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

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

    30 C語言必學項目:!C語言學的怎么樣?來自己開發個別踩小游戲測測水平~

    游戲C語言編程語言
    車同軌,書同文,行同倫
    發布于 :2022年08月11日 04:17:59

    C++實現的經典小游戲代碼

    C++實現的經典小游戲代碼
    發表于 08-20 15:31

    自己做的“小游戲

    本帖最后由 kuailebu 于 2014-9-14 17:58 編輯 自學LabVIEW幾周,而且最近經常玩“”的手機游戲,就用幾天時間做一個LabVIEW版本的。因為
    發表于 08-30 18:32

    STM32+機智云WebSocket實現物聯網游戲

    寫好的機智云連接固件,網頁編程也是機智云的WebSocket Demo。本人做的是在原有的核心系統上添加的物聯網游戲功能。實現效果如
    發表于 07-16 14:30

    猜數字大小游戲研修實現

    `通過學習和努力,蛟龍騰飛團隊成功在自己開發版上實現猜數字大小游戲。本游戲參考與引用了HonestQiao公開的代碼。`
    發表于 12-16 18:07

    如何用C語言實現一款猜數字游戲

    如何用C語言實現一款猜數字游戲
    發表于 01-06 07:10

    C語言小游戲源碼分享

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

    如何使用c語言實現LED流水燈

    單片機實驗:使用c語言實現LED流水燈目的:實現一個簡單的流水燈程序仿真軟件:Portues編程軟件:KeilPortues 原理圖繪制:需要用到的模塊:單片機:AT89C51電容
    發表于 11-30 07:52

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

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

    4個重要算法C語言實現代碼

    4個重要算法C語言實現代碼
    發表于 06-10 08:00 ?12次下載

    使用HTML5實現井字棋小游戲的算法和代碼講解

    本文檔的主要內容詳細介紹的是使用HTML5實現井字棋小游戲的算法和代碼講解。
    發表于 08-07 17:33 ?1次下載
    使用HTML5<b class='flag-5'>實現</b>井字棋<b class='flag-5'>小游戲</b>的算法和<b class='flag-5'>代碼</b>講解

    如何用C語言實現推箱子游戲項目

    ? 這篇文章主要為大家詳細介紹了 C語言實現——《推箱子項目》 ,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下! 本項目結合了分支,循環,數組的結合,并且對邏輯也是
    的頭像 發表于 11-09 16:28 ?2362次閱讀

    qt用C++寫的2048小游戲代碼

    qt用C++寫的2048小游戲代碼
    發表于 09-27 11:48 ?0次下載

    c語言怎么把代碼全部注釋

    要將C語言代碼全部注釋掉,即不讓代碼被編譯和執行,可以使用注釋語句來
    的頭像 發表于 11-22 10:21 ?2785次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>