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

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

3天內不再提示

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

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

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

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

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

源碼示例:

#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) // 一直循環(huán)
  {    
    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;  // 規(guī)范其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;
}

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

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

希望對大家有幫助!

審核編輯:湯梓紅

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

    關注

    2

    文章

    742

    瀏覽量

    26317
  • C語言
    +關注

    關注

    180

    文章

    7604

    瀏覽量

    136820
  • 源碼
    +關注

    關注

    8

    文章

    641

    瀏覽量

    29212

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

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

收藏 人收藏

    評論

    相關推薦

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

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

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

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

    自己做的“小游戲

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

    C語言小游戲源碼分享

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

    c語言塊兒(雙人版)源碼

    c語言塊兒源代碼,希望大家學習交流。
    發(fā)表于 04-28 16:30 ?0次下載

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

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

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

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

    使用C語言實現靜態(tài)網頁的代碼免費下載

    本文檔的主要內容詳細介紹的是使用C語言實現靜態(tài)網頁的代碼免費下載。
    發(fā)表于 11-22 16:20 ?2次下載

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

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

    如何用C語言實現貪吃蛇游戲項目

    ? 這篇文章主要為大家詳細介紹了 C語言實現——《貪吃蛇項目》 ,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下! 本項目主要用到了 C
    的頭像 發(fā)表于 11-09 16:38 ?2453次閱讀

    如何用C語言實現游戲

    ? 這篇文章主要為大家詳細介紹了 C語言實現——《游戲》 ,文中示例
    的頭像 發(fā)表于 11-18 11:21 ?1946次閱讀

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

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

    調用機智云API,實現網頁控制物聯(lián)網游戲在STM32上同步顯示

    本文通過STM32接入機智云,再調用機智云WebSocket,實現了在原有系統(tǒng)上添加添加的物聯(lián)網游戲功能。得到的效果就是在網頁上Ja
    的頭像 發(fā)表于 11-24 10:09 ?805次閱讀
    調用機智云API,<b class='flag-5'>實現</b>網頁控制物聯(lián)網<b class='flag-5'>別</b>踩<b class='flag-5'>白</b><b class='flag-5'>塊</b><b class='flag-5'>游戲</b>在STM32上同步顯示

    C語言中如何實現注釋

    C語言中,注釋是用來增加代碼可讀性和注釋過程和功能的文本。C
    的頭像 發(fā)表于 11-22 10:17 ?1273次閱讀

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

    要將C語言代碼全部注釋掉,即不讓代碼被編譯和執(zhí)行,可以使用
    的頭像 發(fā)表于 11-22 10:21 ?7259次閱讀