⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sokoban.h

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 H
字号:
enum {	/* levels */	Empty		= 0,	Background,	Wall, 	Cargo,	Goal,	GoalCargo,	Glenda,	/* movements */	Up,	Down,	Left,	Right,};enum {	/* glenda faces the horizontal direction she's moving in */	GLeft	= 0,	GRight 	= 1,};enum {	MazeX = 20,	MazeY = 18,	BoardX = 49,	BoardY = 49,	SizeX = MazeX*BoardX+10,		SizeY = MazeY*BoardY+10,	Maxlevels = 200,};typedef struct Step {	uint dir;		/* direction */	uint count;	/* number of single-step moves */} Step;typedef struct Route {	uint nstep;	/* number of valid Step */	Step *step;	Point dest;	/* result of step */} Route;typedef struct Walk {	uint nroute;	/* number of valid Route* */	Route **route;	uint beyond;	/* number of allocated Route* */} Walk;typedef struct Visited {	uint 	board[MazeX][MazeY];} Visited;typedef struct Animation {	Route* route;	Step *step;	int count;} Animation;typedef struct {	Point 	glenda;	Point 	max;		/* that's how much the board spans */	uint 	index;	uint	done;	uint 	board[MazeX][MazeY];} Level;Level level;		/* the current level */Level levels[Maxlevels];	/* all levels from this file */int numlevels;		/* how many levels do we have */Image *img;		/* buffer */Image *text;		/* for text messages */Image *win;Image *goal;Image *cargo;Image *goalcargo;Image *wall;Image *empty;Image *gleft;Image *gright;Image *glenda;Image *bg;/* graphics.c */void drawscreen(void);void drawlevel(void);void drawwin(void);void drawglenda(void);void drawboard(Point);void resize(Point);Point boardsize(Point);/* level.c */int loadlevels(char *);/* move.c */void move(int);/* route.c */int validpush(Point, Step*, Point*);int isvalid(Point, Route*, int (*)(Point, Step*, Point*));void freeroute(Route*);Route* extend(Route*, int, int, Point);Route* findroute(Point, Point);/* animation.c */void initanimation(Animation*);void setupanimation(Animation*, Route*);int onestep(Animation*);void stopanimation(Animation*);/* sokoban.c */char *genlevels(int);Image *eallocimage(Rectangle, int, uint);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -