剛學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右 上面這個就變成下面這個矩陣 ...