2025-06-27 00:32:57 +08:00
|
|
|
|
#ifndef SNAKE_H__
|
|
|
|
|
#define SNAKE_H__
|
|
|
|
|
|
|
|
|
|
#include "main_inc.h"
|
|
|
|
|
#include "global.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
#define CELL_TYPE_AIR 0
|
|
|
|
|
#define CELL_TYPE_WALL 1
|
|
|
|
|
#define CELL_TYPE_HEAD 2
|
|
|
|
|
#define CELL_TYPE_BODY 3
|
|
|
|
|
#define CELL_TYPE_FOOD 4
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD>ߴ磬<DFB4><E7A3AC><EFBFBD><EFBFBD>254*254
|
2025-06-27 00:32:57 +08:00
|
|
|
|
#define MAP_X_SIZE 25
|
|
|
|
|
#define MAP_Y_SIZE 25
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD>̰<EFBFBD><CCB0><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
#define DIR_RIGHT 1
|
|
|
|
|
#define DIR_LEFT 2
|
|
|
|
|
#define DIR_UP 3
|
|
|
|
|
#define DIR_DOWN 4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
u8 type;
|
|
|
|
|
u8 next_x;
|
|
|
|
|
u8 next_y;
|
|
|
|
|
}cell_struct;
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD>̰<EFBFBD><CCB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
cell_struct map[MAP_X_SIZE*MAP_Y_SIZE];
|
2025-07-05 19:47:28 +08:00
|
|
|
|
int wall_num;//ǽ<>ĸ<EFBFBD><C4B8><EFBFBD>
|
|
|
|
|
int mark; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD>ʳ<EFBFBD><CAB3>
|
|
|
|
|
int dir; //̰<><CCB0><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
u8 head_x; //<2F><><EFBFBD>ﱣ<EFBFBD><EFB1A3>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
u8 head_y;
|
|
|
|
|
u8 tail_x;
|
|
|
|
|
u8 tail_y;
|
|
|
|
|
|
|
|
|
|
}snak_struct;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>̰<EFBFBD><CCB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
snak_struct *snake_creat(void);
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><>ʼ<EFBFBD><CABC>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
void snake_init(snak_struct *s);
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//ɾ<><C9BE>һ<EFBFBD><D2BB>̰<EFBFBD><CCB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
void snake_delete(snak_struct *s);
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>ʳ<EFBFBD><CAB3>,<2C><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʳ<EFBFBD>0<EFA3AC><30><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>ʳ<EFBFBD><CAB3><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
int snake_food(snak_struct *s);
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//̰<><CCB0><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>һ<EFBFBD><D2BB>,1,<2C>ɹ<EFBFBD><C9B9><EFBFBD>0<EFBFBD><30>ʧ<EFBFBD><CAA7>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
int snake_forward(snak_struct *s);
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD>ʳ<EFBFBD><EFBFBD><EFA3AC><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ɹ<EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
int snake_grow(snak_struct *s);
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F>ҵ<EFBFBD><D2B5>µ<EFBFBD>β<EFBFBD><CEB2>,<2C><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>0<EFBFBD><30>ʧ<EFBFBD><CAA7>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
int snake_find_tail_new(snak_struct *s);
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
int snake_run(snak_struct *s);
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
int snake_set_dir(snak_struct *s,int dir);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|