色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

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

3天內不再提示

通過C語言設計的推箱子(控制臺終端)

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2023-06-30 14:54 ? 次閱讀

一、項目介紹

推箱子游戲是一款經典的益智小游戲,玩家需要控制主角角色將幾個木箱按照要求推到指定位置。在控制臺終端中,可以使用字符來表示不同的游戲元素,例如 '#' 表示墻壁, ' ' 表示空地, '$' 表示木箱, '@' 表示主角角色, '+' 表示完成任務的目標位置。

image-20230618212712519

實現步驟如下:

  1. 定義常量和全局變量:需要定義一些常量和全局變量,用于存儲游戲中的數據信息,游戲界面的寬度和高度、不同狀態下的符號表示、木箱和目標位置等參數。同時還需要定義一個二維字符數組board,用于表示整個游戲界面。
  2. 初始化游戲界面:在InitGame()函數中進行游戲初始化,設置游戲界面的邊框和各個元素的位置。其中,可以使用循環遍歷二維字符數組來設置元素的位置,將 '#' 設置為墻壁, ' ' 設置為空地,'$' 設置為木箱等。
  3. 繪制游戲畫面:DrawGame()函數用于繪制游戲畫面,并將board數組中的字符逐行輸出。可以使用循環遍歷二維字符數組來進行輸出。
  4. 更新游戲狀態:UpdateGame()函數用于更新游戲狀態,包括判斷主角角色是否可以移動,以及是否完成任務等操作。可以使用if語句和switch語句來判斷不同情況下的操作,判斷主角角色是否碰到墻壁或木箱,是否完成任務等。
  5. 控制主角角色移動:Control()函數用于控制主角角色的移動,讀取鍵盤輸入并更新主角角色的位置。可以使用getch()函數獲取鍵盤輸入,并根據用戶輸入進行判斷,按下方向鍵上時主角角色向上移動。
  6. 判斷游戲是否結束:CheckGameOver()函數用于檢查游戲是否結束,包括是否成功完成任務或者失敗結束游戲。如果判斷出游戲結束,則直接退出程序。
  7. 游戲暫停:Pause()函數用于控制游戲的暫停時間,可以通過調用Sleep()函數來實現。
  8. 游戲結束:GameOver()函數用于輸出最終的游戲得分和游戲結束信息,并直接退出程序。

二、代碼實現

image-20230618212645898

#include < stdio.h >
 #include < conio.h >
 #include < windows.h >
 ?
 //定義常量和全局變量
 const int WIDTH = 11;
 const int HEIGHT = 10;
 const char WALL = '#';
 const char EMPTY = ' ';
 const char BOX = '$';
 const char TARGET = '+';
 const char PLAYER = '@';
 ?
 int playerX, playerY, score;
 char board[HEIGHT][WIDTH];
 ?
 //初始化游戲界面
 void InitGame() {
     //設置游戲界面的邊框和各個元素的位置
     for (int i = 0; i < HEIGHT; i++) {
         for (int j = 0; j < WIDTH; j++) {
             if (i == 0 || i == HEIGHT - 1 || j == 0 || j == WIDTH - 1) {
                 board[i][j] = WALL;
             }
             else {
                 board[i][j] = EMPTY;
             }
         }
     }
 ?
     //設置木箱和目標位置
     board[2][2] = BOX;
     board[4][5] = BOX;
     board[6][8] = BOX;
     board[2][8] = TARGET;
     board[4][2] = TARGET;
     board[6][5] = TARGET;
 ?
     //設置主角角色位置
     playerX = 7;
     playerY = 5;
     board[playerX][playerY] = PLAYER;
 }
 ?
 //繪制游戲畫面
 void DrawGame() {
     system("cls");
     for (int i = 0; i < HEIGHT; i++) {
         for (int j = 0; j < WIDTH; j++) {
             printf("%c", board[i][j]);
         }
         printf("\\n");
     }
     printf("Score: %d\\n", score);
 }
 ?
 //更新游戲狀態
 void UpdateGame(int dx, int dy) {
     int nextX = playerX + dx;
     int nextY = playerY + dy;
 ?
     //判斷主角角色是否可以移動
     if (board[nextX][nextY] == EMPTY || board[nextX][nextY] == TARGET) {
         board[playerX][playerY] = EMPTY;
         playerX = nextX;
         playerY = nextY;
         board[playerX][playerY] = PLAYER;
     }
     else if (board[nextX][nextY] == BOX && (board[nextX + dx][nextY + dy] == EMPTY || board[nextX + dx][nextY + dy] == TARGET)) {
         //判斷主角角色是否可以推動木箱
         board[playerX][playerY] = EMPTY;
         playerX = nextX;
         playerY = nextY;
         board[playerX][playerY] = PLAYER;
         board[nextX + dx][nextY + dy] = BOX;
         board[nextX][nextY] = EMPTY;
     }
 ?
     //判斷是否完成任務
     if (board[2][8] == BOX && board[4][2] == BOX && board[6][5] == BOX) {
         score += 100;
         printf("Congratulations! You win!\\n");
         Sleep(2000);
         exit(0);
     }
 }
 ?
 //控制主角角色移動
 void Control() {
     char c = getch();
     switch (c) {
     case 'w':
         UpdateGame(-1, 0);
         break;
     case 's':
         UpdateGame(1, 0);
         break;
     case 'a':
         UpdateGame(0, -1);
         break;
     case 'd':
         UpdateGame(0, 1);
         break;
     default:
         break;
     }
 }
 ?
 //判斷游戲是否結束
 void CheckGameOver() {
     if (board[playerX - 1][playerY] == WALL || board[playerX + 1][playerY] == WALL || board[playerX][playerY - 1] == WALL || board[playerX][playerY + 1] == WALL) {
         printf("Game over! You lose!\\n");
         Sleep(2000);
         exit(0);
     }
 }
 ?
 //游戲暫停
 void Pause() {
     Sleep(100);
 }
 ?
 //游戲結束
 void GameOver() {
     printf("Your final score is: %d\\n", score);
     exit(0);
 }
 ?
 int main() {
     //初始化游戲界面
     InitGame();
 ?
     //游戲循環
     while (1) {
         DrawGame();
         Control();
         CheckGameOver();
         Pause();
     }
 ?
     return 0;
 }
 ?


審核編輯:湯梓紅

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

    關注

    2

    文章

    758

    瀏覽量

    26513
  • C語言
    +關注

    關注

    180

    文章

    7622

    瀏覽量

    139075
  • 函數
    +關注

    關注

    3

    文章

    4359

    瀏覽量

    63473
  • 代碼
    +關注

    關注

    30

    文章

    4863

    瀏覽量

    69744
收藏 0人收藏

    評論

    相關推薦

    單片機箱子游戲程序模擬仿真

    ://proteus.814e.com/程序及仿真下載: 箱子.rar   http://proteus.814e.com/ 聯系我們:at89c58@163.com   mcu_chi
    發表于 11-06 20:41

    linux下tty,控制臺,虛擬終端,串口,console(控制臺終端)詳解

    首先:1。終端控制臺都不是個人電腦的概念,而是多人共用的小型中型大型計算機上的概念.一主機,連很多終端,終端為主機提供了人機接口,每個人
    發表于 03-01 14:25

    終端、虛擬終端、shell、控制臺、tty的區別

    ) ,然后登陸計算機,并對該計算機進行操作。當然,那時候的計算機操作系統都是多任務多用戶的操作系統。這樣一只有顯示器和鍵盤能夠通過串口連接到計算機 的設備就叫做終端。  而控制臺又是
    發表于 03-05 13:56

    Linux終端控制臺的相關資料分享

    關于Linux終端控制臺的基本概念如下:/dev/console即控制臺,是與操作系統交互的設備,系統將一些信息直接輸出到控制臺上。/dev/console根據不同系統的設定可以鏈接
    發表于 11-05 08:56

    基于C語言設計編寫的ARM箱子

    ARM箱子的原型是基于C語言設計編寫的箱子小游戲,通過
    發表于 12-14 08:09

    如何設置LCD作為終端控制臺

    屏幕背光節點信息設置 LCD 作為終端控制臺LCD簡介一些性能參數分辨率由一個一個的像素點組成,常有720P,1080P( 1920 * 1080 ),2K( 2560 * 1440 ),4K( 3840 * 2160 )。以下就是1080P,X=1920,Y=1080
    發表于 12-16 08:26

    箱子小游戲設計

    箱子小游戲設計
    發表于 06-09 09:49 ?101次下載

    dmx512控制臺是什么_dmx512控制臺按鍵說明

    和由控制臺樹中的項引發的管理屬性、服務及事件的視圖。控制臺通過控制信號來控制燈光的,因此,控制
    發表于 11-07 11:20 ?2.8w次閱讀

    SU RUBy控制臺如何使用?SU RUBy控制臺的一個應用實例說明

    本文檔的主要內容詳細介紹的是SU RUBy控制臺如何使用?SU RUBy控制臺的一個應用實例說明。
    發表于 09-27 16:04 ?0次下載

    使用C語言在Linux環境下運行箱子游戲的代碼免費下載

    本文檔的主要內容詳細介紹的是使用C語言在Linux環境下運行箱子游戲的代碼免費下載,現在分享給大家游戲游戲,現在有80多關。如果需要添加其他關卡,很容易擴展,僅供娛樂學習!。
    發表于 05-19 08:00 ?5次下載
    使用<b class='flag-5'>C</b><b class='flag-5'>語言</b>在Linux環境下運行<b class='flag-5'>推</b><b class='flag-5'>箱子</b>游戲的代碼免費下載

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

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

    通過C語言設計的貪吃蛇游戲(控制臺終端)

    當前通過控制臺終端實現一個貪吃蛇小游戲,實現游戲的繪制、更新、控制等功能。
    的頭像 發表于 06-30 09:53 ?1215次閱讀
    <b class='flag-5'>通過</b><b class='flag-5'>C</b><b class='flag-5'>語言</b>設計的貪吃蛇游戲(<b class='flag-5'>控制臺</b><b class='flag-5'>終端</b>)

    js如何在控制臺輸入輸出

    JavaScript是一種廣泛應用于網頁開發的腳本語言,能夠使網頁實現豐富的交互效果。其中一種常用的特性就是在控制臺進行輸入和輸出操作。本文將詳盡、詳實、細致地介紹如何在JavaScript中使
    的頭像 發表于 11-26 11:17 ?3342次閱讀

    語言RPA如何建立控制臺應用

    語言通過軟件自帶的豐富的顆粒組件庫,開發出滿足各種需求的應用。火語言中的應用分為兩種常見類型,界面應用以及控制臺應用。 下面詳細介紹下控制臺
    的頭像 發表于 08-15 09:24 ?543次閱讀
    火<b class='flag-5'>語言</b>RPA如何建立<b class='flag-5'>控制臺</b>應用

    控制臺窗口主機是什么

    控制臺窗口主機(conhost),通常指的是在Windows操作系統中用于承載和控制控制臺窗口(即命令行界面或CMD窗口)的進程。以下是對控制臺窗口主機的介紹: 一、定義與功能 定義
    的頭像 發表于 10-08 18:12 ?3793次閱讀
    主站蜘蛛池模板: 欧美久久无码AV麻豆 | 日夜啪啪一区二区三区 | 麻豆一区二区免费播放网站 | 国产激情一级毛片久久久 | 日本久久精品免视看国产成人 | 国产又粗又黄又爽的大片 | 韩国黄电影 | 手机在线免费观看毛片 | 十八禁啪啦啪漫画 | 为什么丈夫插我我却喜欢被打着插 | 看免费人成va视频全 | 蜜桃视频一区二区 | 日日干日日操日日射 | 麻豆文化传媒一区二区 | 日本久久久久久久做爰片日本 | 成人在免费观看视频国产 | 精品一区二区三区免费毛片 | 色多多旧版污污破解版 | 亚洲中文日韩日本在线视频 | 全黄H全肉细节文短篇 | 视频成人永久免费视频 | 三叶草未满十八岁 | 在线精品一卡乱码免费 | 狠狠啪 日日啪 | 亚洲涩福利高清在线 | 免费在线视频一区 | 国产AV电影区二区三区曰曰骚网 | 日本成熟bbxxxxxxxx| 亚洲青青青网伊人精品 | 国产精品人妻一区免费看8C0M | 小小水蜜桃视频高清在线播放 | 国产不卡视频在线 | 无限资源在线观看高清 | 成人精品视频网站 | 小小水蜜桃视频高清在线播放 | 校园高h肉耽文 | 永久免费看bbb | 一本久道久久综合婷婷五月 | 国产精品无码亚洲网 | 久久久久婷婷国产综合青草 | 麻豆免费版 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品