日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

3天內(nèi)不再提示

如何用C語言實現(xiàn)推箱子游戲項目

C語言編程學習基地 ? 來源:C語言編程學習基地 ? 作者:C語言編程學習基地 ? 2021-11-09 16:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

本項目結(jié)合了分支,循環(huán),數(shù)組的結(jié)合,并且對邏輯也是有一定的要求,但是這些在我們項目源碼里面都會有注釋,大家到時候?qū)W習的時候千萬不要忽略注釋,注釋可以更好地幫你理解代碼,尤其是C語言初學者。

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

插件:圖形庫插件easyX;

源代碼示例

1.頭文件

#include#include#include  //easyX圖形庫頭文件#include

2.關(guān)卡設(shè)置(這里我們定義一個三維數(shù)組,三維數(shù)組大家可以理解為多個二維數(shù)組)

int cas = 0;IMAGE img0, img1, img2, img3, img4, img5;int map[3][8][8] ={0, 0, 1, 1, 1, 0, 0, 0,0, 0, 1, 3, 1, 0, 0, 0,0, 0, 1, 0, 1, 1, 1, 1,1, 1, 1, 4, 0, 4, 3, 1,1, 3, 0, 4, 5, 1, 1, 1,1, 1, 1, 1, 4, 1, 0, 0,0, 0, 0, 1, 3, 1, 0, 0,0, 0, 0, 1, 1, 1, 0, 0,0, 0, 1, 1, 1, 0, 0, 0,0, 0, 1, 3, 1, 0, 0, 0,0, 0, 1, 0, 1, 1, 1, 1,1, 1, 1, 4, 0, 4, 3, 1,1, 3, 0, 4, 5, 1, 1, 1,1, 1, 1, 1, 4, 1, 0, 0,0, 0, 0, 1, 3, 1, 0, 0,0, 0, 0, 1, 1, 1, 0, 0,0, 0, 1, 1, 1, 0, 0, 0,0, 0, 1, 3, 1, 0, 0, 0,0, 0, 1, 0, 1, 1, 1, 1,1, 1, 1, 4, 0, 4, 3, 1,1, 3, 0, 4, 5, 1, 1, 1,1, 1, 1, 1, 4, 1, 0, 0,0, 0, 0, 1, 3, 1, 0, 0,0, 0, 0, 1, 1, 1, 0, 0,};

3.繪制推箱子地圖

void drawmap(){for (int i = 0; i < 8; i++){for (int j = 0; j < 8; j++){int x = j * 64;int y = i * 64;switch (map[cas][i][j]){case 0:  //空地putimage(x, y, &img0);//printf("  ");break;case 1:  //墻putimage(x, y, &img1);//printf("█");break;case 3:  //目的地:籃筐putimage(x, y, &img2);//printf("☆");break;case 4:  //箱子:籃球putimage(x, y, &img3);//printf("★");break;case 5:  //人:CXKcase 8:putimage(x, y, &img4);//printf("人");break;case 7:  //把箱子推進目的地:雞putimage(x, y, &img5);//printf("⊙");break;}}printf("
");}}

4.游戲過程(這部分是整個游戲的核心部分,也是最難理解的部分,大家要仔細解讀)

void playGame(){//按鍵操作:游戲過程//找人:找CXK:遍歷二維數(shù)組--->元素= 5||8int i, j;for (i = 0; i < 8; i++){for (j = 0; j < 8; j++){//找人if (map[cas][i][j] == 5 || map[cas][i][j] == 8){break;//break只能跳出一層循環(huán)}}//找人if (map[cas][i][j] == 5 || map[cas][i][j] == 8){break;//break只能跳出一層循環(huán)}}//已經(jīng)找到人了//通過鍵盤操作人物char userKey = _getch();switch (userKey){//那幾個鍵移動:wsad 箭頭:小鍵盤 鍵碼值:72 80 75 77case 'w':case 'W':case 72://移動的原理:改變二維數(shù)組元素的值//移動的步驟://1.先讓人移動  map[cas][i-1][j]=0||map[cas][i-1][j]=3if (map[cas][i - 1][j] == 0 || map[cas][i - 1][j] == 3){//人移動的原理:元素的值map[cas][i][j] -= 5;map[cas][i - 1][j] += 5;}//2.推箱子,讓箱子移動//先找到(固定)箱子if (map[cas][i - 1][j] == 4 || map[cas][i - 1][j] == 7){//籃球,箱子移動的條件if (map[cas][i - 2][j] == 0 || map[cas][i - 2][j] == 3){//推箱子的原理:移動元素值map[cas][i][j] -= 5;map[cas][i - 1][j] += 5;map[cas][i - 1][j] -= 4;map[cas][i - 2][j] += 4;}}break;case 's':case 'S':case 80://1.先讓人移動  map[cas][i-1][j]=0||map[cas][i-1][j]=3if (map[cas][i + 1][j] == 0 || map[cas][i + 1][j] == 3){//人移動的原理:元素的值map[cas][i][j] -= 5;map[cas][i + 1][j] += 5;}//2.推箱子,讓箱子移動//先找到(固定)箱子if (map[cas][i + 1][j] == 4 || map[cas][i + 1][j] == 7){//籃球,箱子移動的條件if (map[cas][i + 2][j] == 0 || map[cas][i + 2][j] == 3){//推箱子的原理:移動元素值map[cas][i][j] -= 5;map[cas][i + 1][j] += 5;map[cas][i + 1][j] -= 4;map[cas][i + 2][j] += 4;}}break;case 'a':case 'A':case 75://1.先讓人移動  map[cas][i-1][j]=0||map[cas][i-1][j]=3if (map[cas][i][j - 1] == 0 || map[cas][i][j - 1] == 3){//人移動的原理:元素的值map[cas][i][j] -= 5;map[cas][i][j - 1] += 5;}//2.推箱子,讓箱子移動//先找到(固定)箱子if (map[cas][i][j - 1] == 4 || map[cas][i][j - 1] == 7){//籃球,箱子移動的條件if (map[cas][i][j - 2] == 0 || map[cas][i][j - 2] == 3){//推箱子的原理:移動元素值map[cas][i][j] -= 5;map[cas][i][j - 1] += 5;map[cas][i][j - 1] -= 4;map[cas][i][j - 2] += 4;}}break;case 'd':case 'D':case 77://1.先讓人移動  map[cas][i-1][j]=0||map[cas][i-1][j]=3if (map[cas][i][j + 1] == 0 || map[cas][i][j + 1] == 3){//人移動的原理:元素的值map[cas][i][j] -= 5;map[cas][i][j + 1] += 5;}//2.推箱子,讓箱子移動//先找到(固定)箱子if (map[cas][i][j + 1] == 4 || map[cas][i][j + 1] == 7){//籃球,箱子移動的條件if (map[cas][i][j + 2] == 0 || map[cas][i][j + 2] == 3){//推箱子的原理:移動元素值map[cas][i][j] -= 5;map[cas][i][j + 1] += 5;map[cas][i][j + 1] -= 4;map[cas][i][j + 2] += 4;}}break;}}int gameOver(){int flag = 0;//遍歷二維數(shù)組元素-->目的地:球框for (int i = 0; i < 8; i++){for (int j = 0; j < 8; j++){if (map[cas][i][j] == 3){flag = 1;}}}return flag;}

5.主函數(shù)部分

int main(){loadimage(&img0, L"0.bmp");  //64*64loadimage(&img1, L"1.bmp");  //64*64loadimage(&img2, L"3.bmp");  //64*64loadimage(&img3, L"4.bmp");  //64*64loadimage(&img4, L"5.bmp");  //64*64loadimage(&img5, L"7.bmp");  //64*64initgraph(64 * 8, 64 * 8);while (1){drawmap();playGame();if (!gameOver()){cas++;if (cas == 3)break;}system("cls");}//initgraph(600,600);//窗口:寬度*高度////貼圖:基本貼圖技術(shù)////1.定義圖片變量//IMAGE img;////2.加載圖片//loadimage(&img, L"timg.jpg", 600, 600);////3.顯示圖片//putimage(0, 0, &img);while (1);  //防止閃屏closegraph();  //關(guān)閉窗口return 0;}

整個項目的源碼已經(jīng)分享,這是一個三關(guān)完善的推箱子游戲,大家如果有興趣可以自己去試試做更多的關(guān)卡來玩!

如果學習的過程中有什么問題,以及本項目有什么不懂的地方,都可以來找我交流,我來幫你!

那么今天的分享就到這里了,后續(xù)會更新更多精彩項目的,大家要好好學C語言C++喲~

寫在最后:對于準備學習C/C++編程的小伙伴,如果你想更好的提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開始!

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

    關(guān)注

    183

    文章

    7646

    瀏覽量

    146193
  • 源代碼
    +關(guān)注

    關(guān)注

    96

    文章

    2953

    瀏覽量

    70684

原文標題:C語言項目實戰(zhàn):《推箱子》零基礎(chǔ)項目!270 行源碼注釋示例

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    講解C語言代碼的實現(xiàn)過程

    重點講解C語言代碼的實現(xiàn)過程,算法的C語言實現(xiàn)過程具有一般性,通過PID算法的C
    發(fā)表于 01-21 07:58

    C語言實現(xiàn)萬年歷

    C語言實現(xiàn)萬年歷程序的代碼如下:#include int year(int y) { if ((y%4==0) (y%100!=0) || y%400==0) return 366
    發(fā)表于 01-16 08:02

    C語言實現(xiàn)PID算法介紹

    PID 是 Proportional(比例)、Integral(積分)、Differential(微分)的首字母縮寫;是一種結(jié)合比例、積分和微分三種環(huán)節(jié)于一體的閉環(huán)控制算法。PID 控制的實質(zhì)是對目標值和實際值誤差進行比例、積分、微分運算后的結(jié)果用來作用在輸出上。 比例 (P) 比例控制是最簡單的一種控制方式,成比例的反應控制系統(tǒng)中輸入與輸出的偏差信號,只要偏差一旦產(chǎn)生,就立即產(chǎn)生控制的作用來減小產(chǎn)生的誤差。比例控制器的輸出與輸入成正比關(guān)系,能夠迅速的反應偏差,偏差減小的速度取決于比例系數(shù) Kp,Kp 越大偏差減小的就越快,但是極易引起震蕩;Kp 減小發(fā)生震蕩的可能性減小,但是調(diào)節(jié)的速度變慢,單純的比例控制存在不能消除的靜態(tài)誤差,這里就需要積分來控制。 積分(I) 在比例控制環(huán)節(jié)產(chǎn)生了靜態(tài)誤差,在積分環(huán)節(jié)中,主要用于就是消除靜態(tài)誤差提高系統(tǒng)的無差度。積分作用的強弱,取決于積分時間常數(shù) Ti,Ti 越大積分作用越弱,反之則越強。積分控制作用的存在與偏差 e(t) 的存在時間有關(guān),只要系統(tǒng)存在著偏差,積分環(huán)節(jié)就會不斷起作用,對輸入偏差進行積分,使控制器的輸出及執(zhí)行器的開度不斷變化,產(chǎn)生控制作用以減小偏差。在積分時間足夠的情況下,可以完全消除靜差,這時積分控制作用將維持不變。Ti 越小,積分速度越快,積分作用越強。積分作用太強會使系統(tǒng)超調(diào)加大,甚至使系統(tǒng)出現(xiàn)振蕩。 微分(D) 微分環(huán)節(jié)的作用是反應系統(tǒng)偏差的一個變化趨勢,也可以說是變化率,可以在誤差來臨之前提前引入一個有效的修正信號,有利于提高輸出響應的快速性, 減小被控量的超調(diào)和增加系統(tǒng)的穩(wěn)定性,雖然積分環(huán)節(jié)可以消除靜態(tài)誤差但是降低了系統(tǒng)的響應速度,所以引入微分控制器就顯得很有必要,尤其是具有較大慣性的被控對象使用 PI 控制器很難得到很好的動態(tài)調(diào)節(jié)品質(zhì),系統(tǒng)會產(chǎn)生較大的超調(diào)和振蕩,這時可以引入微分作用。在偏差剛出現(xiàn)或變化的瞬間,不僅根據(jù)偏差量作出及時反應(即比例控制作用),還可以根據(jù)偏差量的變化趨勢(速度)提前給出較大的控制作用(即微分控制作用),將偏差消滅在萌芽狀態(tài),這樣可以大大減小系統(tǒng)的動態(tài)偏差和調(diào)節(jié)時問,使系統(tǒng)的動態(tài)調(diào)節(jié)品質(zhì)得以改善。微分環(huán)節(jié)有助于系統(tǒng)減小超調(diào),克服振蕩,加快系統(tǒng)的響應速度,減小調(diào)節(jié)時間,從而改善了系統(tǒng)的動態(tài)性能,但微分時間常數(shù)過大,會使系統(tǒng)出現(xiàn)不穩(wěn)定。微分控制作用一個很大的缺陷是容易引入高頻噪聲,所有在干擾信號比較嚴重的流量控制系統(tǒng)中不宜引入微分控制作用。
    發(fā)表于 01-16 07:24

    何用軟件實現(xiàn)系統(tǒng)的復位?

    看門狗的工作過程是怎樣的? 如何用軟件實現(xiàn)系統(tǒng)的復位?
    發(fā)表于 01-08 06:15

    C語言主要特點

    指針類型數(shù)據(jù),使用十分靈活和多樣化,能用來實現(xiàn)各種復雜的數(shù)據(jù)結(jié)構(gòu)(如鏈表、樹、棧等)的運算。 4.具有結(jié)構(gòu)化的控制語句。用函數(shù)作為程序的模塊單位,便于實現(xiàn)程序的模塊化。C語言是完全模塊
    發(fā)表于 01-05 07:41

    何用C 語言函數(shù)的返回值?

    基本上,沒有人會將大段的C語言代碼全部塞入 main() 函數(shù)。更好的做法是按照復用率高、耦合性低的原則,盡可能的將代碼拆分不同的功能模塊,并封裝成函數(shù)。 C語言代碼的組合千變?nèi)f化,因
    發(fā)表于 12-25 07:17

    C語言C++的區(qū)別及聯(lián)系

    C語言C++到底是什么關(guān)系? 首先C++和C語言本來就是兩種不同的編程
    發(fā)表于 12-24 07:23

    單片機C語言編程的心得

    規(guī)范程序結(jié)構(gòu)化設(shè)計的需要,既可以實現(xiàn)大型程序的模塊化,又可以實現(xiàn)根各模塊的連接調(diào)試。 1、.H文件介紹: 在單片機C程序設(shè)計中,項目一般按功能模塊化進行結(jié)構(gòu)化設(shè)計。將一個
    發(fā)表于 12-08 07:44

    為什么單片機還在用C語言編程?

    的缺陷 高級語言存在的目的是可以實現(xiàn)更為優(yōu)化的算法,更多的是為了方便的執(zhí)行方案,但是,高級語言對程序存儲空間的占用要比匯編和C語言多很多。
    發(fā)表于 11-28 07:37

    請問如何用C語言列舉當前所有網(wǎng)口?

    何用C語言列舉當前所有網(wǎng)口?
    發(fā)表于 11-25 07:23

    C語言特性

    數(shù)據(jù),實現(xiàn)對設(shè)備的精準控制,同時降低功耗,延長設(shè)備的使用壽命。 2、可移植性:跨平臺的通行證 C 語言具有良好的可移植性,這意味著用 C 語言
    發(fā)表于 11-24 07:01

    C語言和單片機C語言有什么差異

    單片機c語言相對于普通C語言增加了一些基本的指令,還有變量的賦值是16進制,當然單片機c語言只牽
    發(fā)表于 11-14 07:55

    何用FPGA實現(xiàn)4K視頻的輸入輸出與處理

    游戲、影視和顯示領(lǐng)域,4K 已經(jīng)成為標配。而今天,我們就來聊聊——如何用 FPGA 實現(xiàn) 4K 視頻的輸入輸出與處理。
    的頭像 發(fā)表于 10-15 10:47 ?2441次閱讀
    如<b class='flag-5'>何用</b>FPGA<b class='flag-5'>實現(xiàn)</b>4K視頻的輸入輸出與處理

    C++ 與 Python:樹莓派上哪種語言更優(yōu)?

    Python是樹莓派上的首選編程語言,我們的大部分教程都使用它。然而,C++在物聯(lián)網(wǎng)項目中同樣廣受歡迎且功能強大。那么,在樹莓派項目中選擇哪種語言
    的頭像 發(fā)表于 07-24 15:32 ?1129次閱讀
    <b class='flag-5'>C</b>++ 與 Python:樹莓派上哪種<b class='flag-5'>語言</b>更優(yōu)?

    單片機C語言實例(350+例)

    350+單片機C語言實例! 純分享帖,需要者可點擊附件免費獲取完整資料~~~【免責聲明】本文系網(wǎng)絡(luò)轉(zhuǎn)載,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請第一時間告知,刪除內(nèi)容!
    發(fā)表于 05-22 21:47
    祁阳县| 临武县| 崇礼县| 同仁县| 那曲县| 南充市| 合水县| 宣汉县| 永泰县| 石渠县| 广河县| 莲花县| 定西市| 鲜城| 如皋市| 龙井市| 梓潼县| 三门峡市| 东城区| 莎车县| 武定县| 青冈县| 鹿泉市| 平原县| 柞水县| 莱阳市| 都安| 广德县| 靖边县| 中山市| 延安市| 永仁县| 镇安县| 保靖县| 德保县| 南京市| 沛县| 资源县| 且末县| 湟中县| 固原市|