C 小白 利用鏈棧編寫推箱子遊戲

2021-10-04 05:56:19 字數 2709 閱讀 2608

剛學c語言的時候就想自己寫一款小遊戲了,碰巧在家上網課時,老師給我們布置了編寫推箱子遊戲的作業,動手做完後,有些心得想分享給大家。

因為剛學資料結構,寫出來的**和心得有很多不足,希望各位大佬見諒!

對錶中的元素進行操作的時候,只需要對操作節點的位址進行修改,不需要移動元素,從而改進了在順序表結構中的操作需要移動大量元素的缺點。

最近才在資料結構的課上學到了棧,棧相當於由編譯器在需要的時候分配,在不需要的時候自動清除的變數的儲存區。讀取速度快,資料可以共享,非常適合解決小遊戲類的問題

首先把頭檔案和鏈棧的結構弄出來

#include

#include

#include

#include

#define x 9

#define y 8

using

namespace std;

typedef

struct linkliststock;

再寫出需要用到的鏈棧操作函式

void

init

(stock *

&s)//建立乙個空棧s

void

push

(stock *

&s,char e)

//入棧操作

用全域性變數設計地圖,並寫出繪製地圖的函式與判斷遊戲是否結束的函式

}

int map[x]

[y]=

,//0代表空地

,//1代表牆

,//3代表目的地

,//4代表箱子

,//5代表人 ,,

,};int flag=1;

void

drawmap()

} cout<<

"\n";}

}int

win(

)//判斷是否贏得遊戲}}

return1;

//注意:若此處返回0,則導致函式提前退出,無法實現判斷作用

}

編寫wsad按鍵操控人物的函式

void

playgame()

}}stock *st;

init

(st)

;//建立鏈棧

e=getch()

;//getch為函式自動讀取使用者輸入,無需用回車鍵使函式執行

//只要你願意,在這裡多加幾個e=getch(),就能做出乙個延時嚴重到氣死人的辣雞遊戲

switch

(e)//利用swtich語句,降低執行時間

else

if(map[x-1]

[y]==

4||map[x-1]

[y]==7)

//判斷前方是否有箱子或到達目的地的箱子

}push

(st,e)

;//每一步按鍵操作都需要入棧

break

;case

's':

if(map[x+1]

[y]==

0||map[x+1]

[y]==3)

else

if(map[x+1]

[y]==

4||map[x+1]

[y]==7)

}push

(st,e)

;break

;case

'a':

if(map[x]

[y-1]==

0||map[x]

[y-1]==

3)else

if(map[x]

[y-1]==

4||map[x]

[y-1]==

7)}push

(st,e)

;break

;case

'd':

if(map[x]

[y+1]==

0||map[x]

[y+1]==

3)else

if(map[x]

[y+1]==

4||map[x]

[y+1]==

7)}push

(st,e)

;break;}

}

接下來就是沒有存在感的主函式

int

main()

cout<<

"congratulation!!!\n"

<<

"thank you for playing"

<

return0;

}

執行結果:

進入遊戲(先弄乙個簡單關卡)

遊戲通關:

`如果單純使用字元變數儲存按鍵輸入,當按鍵輸入較多時會產生大量快取,占用不必要的儲存空間;

和順序棧相比,不會出現棧滿的情況,不用出棧使部分資料遺失

使用鏈式棧,可以自動清除快取,並且將按鍵輸入儲存到棧中,以後加上路徑計算、返回等操作十分方便,可以讓後續加上的函式共享棧內資料

鏈棧的時間複雜度為o(n),較高(這好像是唯一的硬傷)

C 推箱子遊戲(一)

準備 c c 基礎 code blocks 第一次嘗試 自製地圖 將地圖在控制台顯示出來並控制中心位置的圖案移動 include include include using namespace std void start map int a 7 7 將陣列對應的地圖顯示出來 int man mov...

推箱子遊戲 C語言

自己用c語言實現的推箱子的遊戲,在寫這個的期間瀏覽,檢視了許多的部落格和論壇。大一下學期寫的 這個遊戲我用的是vs2010和easyx圖形庫寫的。如有錯誤,望指正。在最後。遊戲的效果圖 遊戲介面 通關介面 這個3.0是因為,有過2次大的修改。還有這個時間的數字是不動的,這裡 當時 不太懂怎麼弄倒計時...

使用C 寫遊戲 推箱子

使用c 寫遊戲 推箱子 和學生閒聊時聊到編寫遊戲,因此動手寫了乙個,這裡簡單說一下思路,遊戲參考 其實推箱子遊戲玩的就是乙個二維矩陣,我們先看一下第一關 首先需要將這張轉為二維矩陣,第一步定義圖示資訊 0空白 1 牆 2地板 3空坑 4滿坑 5豆 6上 7下 8左 9右 上面這個就變成下面這個矩陣 ...