最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

C/C++項目開發(fā):推箱子游戲!全源碼細致解析

2022-10-26 16:55 作者:C語言編程__Plus  | 我要投稿

hello,各位小伙伴們大家好!

許久沒寫C語言的小游戲了,今天閑來無事,動起手來。過程還是蠻順利的,代碼也比較簡單。今天給大家分享一下~


一、介紹

開發(fā)語言:C語言

開發(fā)工具:VS2022/2019,VScode,Dev-C++都可以(沒有VS的話也可以來文末領(lǐng)取哦)

也不說太多多余的話了,先看一下效果圖:


游戲中的人物、箱子、墻壁、球都是字符構(gòu)成的。通過wasd鍵移動,規(guī)則的話就是推箱子的規(guī)則,也就不多說了。


二、代碼實現(xiàn)

關(guān)于代碼方面,我盡可能講的細致。希望大家可以理解~

有比較不想動的好兄弟也可以直接來拿源碼(但不建議),領(lǐng)取源碼可以到文末領(lǐng)??!

(1)方法列表

這幾個方法都顧名思義,而且用意也非常明確,就initData可能不知道具體用處,但是沒有什么大問題。唯一的問題就是,上左下右的順序可能會逼死幾個強迫癥患者,哈哈。

(2)參數(shù)列表

為了方便,我把include和宏定義也放到參數(shù)列表當(dāng)中

這里參數(shù)不多,其中橫為x,縱為y,另外這里再規(guī)定一下map的一些東西:

(3)函數(shù)具體分析

接下來我們一個一個函數(shù)來分析。

1、main函數(shù)

我大概說一下流程,循環(huán)外面沒有什么特別的。initData()只是一些簡單數(shù)據(jù)的初始化,不需要太在意。循環(huán)中大致流程如下:

清除屏幕

繪制地圖

判斷游戲是否結(jié)束

對用戶按下的按鈕進行反饋

進入循環(huán)體,先清除屏幕,再繪制地圖,然后再判斷游戲是否結(jié)束??赡艽蠹覍@個順序不是很理解,這里我們先不考慮判斷游戲結(jié)束的問題。我們把清屏和繪制地圖合在一起,簡稱“重繪地圖”,而游戲結(jié)束的判斷先不考慮,那么流程就簡化為“重繪地圖 + 響應(yīng)用戶的操作”。簡單來說就是,用戶按一下按鈕,我改變一下地圖。

2、initData()

這個方法很簡單,就是遍歷地圖,然后初始化人的位置和箱子的個數(shù)。這里有一點要注意一下,就是到底內(nèi)層循環(huán)是WIDTH還是外層循環(huán)是WIDTH。

如圖,在遍歷過程中。外層循環(huán)控制行數(shù),即HEIGHT。那么內(nèi)層循環(huán)應(yīng)該是WIDTH。


3、drawMap()

這里也非常簡單,變量map中的元素,然后通過switch判斷應(yīng)該輸出的內(nèi)容。然后內(nèi)層循環(huán)每走完一次就換行。

4、moveUp()

這個函數(shù)內(nèi)容有點多,想講一下大概思路:

具體代碼如下,解析我全寫在注釋里面:

這是一個方向的,其它方向要考慮的問題也和前面一樣,我也就不贅述了。

6、moveLeft()

這里大致都和上面一樣,就是在記錄左邊坐標時,應(yīng)該應(yīng)該是lx = x - 1。

7、moveDown()

這里在判斷邊界時,判斷的是 y == HEIGHT - 1。

8、moveRight()

這里也沒什么特別說的:


三、總結(jié)

現(xiàn)在再回顧開始的運行步驟

清除屏幕

繪制地圖

判斷游戲是否結(jié)束

對用戶按下的按鈕進行反饋

這里把判斷游戲是否結(jié)束放到了重繪圖像后面,因為在對用戶進行反饋的時候只是改變了map中的數(shù)據(jù),實際上最后一個箱子推到終點的圖像還沒有顯示出來,所以要在重繪之后再判斷是否結(jié)束游戲。

代碼有很多冗余的地方,一方面是想大家更好的理解,還有一方面出于懶。哈哈,代碼運行起來沒有問題,源碼和源程序我會上傳,有興趣的可以下下來,或者直接復(fù)制代碼運行也是沒問題的。

需要完整源碼對照的同學(xué)可以在文章末領(lǐng)??!

推箱子游戲教程就到此結(jié)束啦,大家趕緊試試吧!

源碼素材獲取通道:



C/C++項目開發(fā):推箱子游戲!全源碼細致解析的評論 (共 條)

分享到微博請遵守國家法律
大余县| 涡阳县| 昔阳县| 福安市| 时尚| 滦平县| 阿城市| 平顺县| 永康市| 宁陕县| 澄迈县| 洪泽县| 清新县| 高密市| 宣汉县| 西峡县| 丽水市| 菏泽市| 望奎县| 濉溪县| 嘉鱼县| 建德市| 昌邑市| 蓝田县| 益阳市| 鄂尔多斯市| 农安县| 波密县| 龙南县| 青阳县| 沾化县| 绥德县| 垦利县| 寿宁县| 荆门市| 阜城县| 内乡县| 弋阳县| 昆山市| 民和| 阳城县|