Files
player/Project_App_Snake/App_Src/calc/snake.h

88 lines
1.3 KiB
C
Raw Normal View History

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