這個小遊戲設計起來不難,之所以做他的目的是,一天老師給我了個他很早以前寫的2d庫,讓我去使用這個庫完成乙個小遊戲,這個過程的意義再去讓我乙個以前從未用過別人手寫庫的學生,了解到了庫的設計結構,和如果好的使用別人的庫去完成任務,雖然程式設計難度不大,但是意義深刻,至少知道了以後遇見別人的庫是怎麼使用,而不會手忙腳亂。
同時讓我了解了遊戲製作時的一些小方法如掩碼的使用,和影象渲染的步驟,分層渲染的意義以及當有多函式具有同樣功能和機構時,我們需要盡可能的去合併函式,這裡指的就是上下左右的移動,因為觀察到很多網上的部落格裡面都是四個方向每乙個方向乙個函式,所以我覺得我這裡展示出來還有有一點意義的(一點點)。好了接下來就是**顯示了,請各位看官多多雅正
2d庫鏈結
還有一件事就是,應為**比較短,我懶得劃分檔案了,我寫在了同乙個檔案中(這是不對的做法,切勿學習),但是雖然我在乙個檔案中寫的,但是我寫的方式還是按照劃分模組的方式去完成,通過呼叫各個介面完成任務,沒有直接放在全域性變數裡,還有一點就是有一些函式可能會毫無作用,甚至莫名其妙,這個當時是為了日後改進預留的介面,例如使用檔案去儲存每個關卡的地圖資訊等,但是因為有一些別的任務,所以一直耽擱了,在這我就先不完成了,麻煩原諒。所以目前是乙個單關卡地圖的推箱子
#include
#include
#include
#include
#include
#include
"glmxsdk/zyfeasy2d.h"
#define grass 0
#define wall 1
#define way 2
#define target 3
#define box 4
#define man 5
struct pos
;struct position
;struct target
;struct box
;struct man
;struct position postion;
target *tar =
null
;box *boxs =
null
;man *m =
null
;int map[8]
[8]=
,,,,
,,,,
};void
init_map()
x =0;
y +=64
;}}int
get_target_num()
;void
init_info()
intget_target_num()
intget_box_num()
struct target*
get_target
(int index)
struct box*
get_box
(int index)
struct man*
get_man()
void
release()
uint32 wall =0;
uint32 way =0;
uint32 grass =0;
uint32 man =0;
uint32 box =0;
uint32 target =0;
uint32 language =0;
void
renderscene()
} zyfrect rect =
; zyfcolor color =
;zyfdrawtext
(language,
"game over"
, rect, color, zyf_align_vcenter | zyf_align_center);}
else}}
for(
int i =
0; i <
get_target_num()
; i++
)for
(int i =
0; i <
get_box_num()
; i++
) man *p =
get_man()
;int x = postion.pos[p->x]
[p->y]
.x;int y = postion.pos[p->x]
[p->y]
.y;zyfdrawimage
(man, x +
13, y);}
}void
move
(zyfscancode movedir)}}
else}}
switch
(how_many_box)}}
void
keyboard
(zyfkeyevent event, zyfscancode sc)
}int complete_num =0;
for(
int i =
0; i <
get_target_num()
; i++)}
}if(complete_num ==
get_target_num()
)}intmain()
return0;
}
推箱子 C語言
主要功能分析 使用switch語句實現,上下左右移動 用棧實現返回上一步操作。include include include include int map1 9 9 0代表空地 1代表牆 3代表目的地 4代表箱子 5代表人 int map2 9 9 typedef char elementtype...
C語言推箱子分析
用乙個二維陣列來表示整個地圖,我們先網上找一張地圖來分析下。分析 地圖上有 牆 目的地 箱子 人 背景牆 目的地和箱子合起來的 紅箱子 我們用數字來在二維陣列中對應的標記這些東西,二維陣列的大小就是地圖的大小咯。定義地圖大小 8 8 int map 8 8 哈哈哈,當然是初始化這個地圖咯,就是往這個...
手寫c語言推箱子
include include includeint life 1 判斷是否繼續 int map 10 10 圖域 0空地,1圍牆,2人,3箱子,4目的地 image img 6 圖組 int arr 10 10 int level 0 void init void drawmap endbatch...