1结构体
可以看出🐍有头尾坐标(H,T),长度L,方向(HD,TD),身体各节数量(JN)与坐标(JX)
做结构体如下
struct SP
{
uint8_t H;//HEADzb
uint8_t T;//TAILzb
uint8_t D;//direct
uint8_t JN; //joinnumber
uint8_t Jx; //joinzb
uint8_t TD;//HEAD_direct
uint8_t HD;//TAIL_direct
uint8_t L;//length
}Snake;
初始化
void Snake_init(void)
{
Snake.L=2;
Snake.HD=2;
Snake.TD=2;
Snake.H=[2][6];
Snake.T=[1][6];
}
运行错误,参考示例程序
struct Snake_Parameters
{
uint8_t Header_Coordinates[2]; //头 坐标 0-X 1-Y [坐标范围 0-7]
uint8_t Tail_Coordinates[2]; //尾 坐标 0-X 1-Y
uint8_t Header_dir; //头 方向 1-上 2-下 3-左 4-右
uint8_t Tail_dir; //尾 方向 1-上 2-下 3-左 4-右
uint8_t SnakeHeaderBeforeDir; //头 上一个方向
uint8_t Length; //蛇 长度
uint8_t Joint_Num; //关节 数量
uint8_t Joint_Coordinates[50][3]; //关节 坐标 0-X 1-Y 3-下一个方向 [关节数量-1][坐标] = 最后一个关节处的坐标
};
struct Snake_Parameters Snake; //定义蛇的参数
//蛇参数初始化
void Snake_init(void)
{
Snake.Header_Coordinates[0] = 2; //蛇头初始坐标 2,2
Snake.Header_Coordinates[1] = 6;
Snake.Tail_Coordinates[0] = 1; //蛇尾初始坐标 1,2
Snake.Tail_Coordinates[1] = 6;
Snake.Header_dir = 2; //头方向 下
Snake.Tail_dir = 2; //尾方向 下
Snake.SnakeHeaderBeforeDir = 2; //头的上一个方向
Snake.Length = 2; //初始长度 2
Snake.Joint_Num = 0; //关节数量 0
memset(Snake.Joint_Coordinates, 0, sizeof(Snake.Joint_Coordinates)); //清空关节坐标
Food_Coordinates[0] = 5; //食物初始坐标
Food_Coordinates[1] = 5;
Food_Flag = 0; //食物未被吃到
memset(MatrixData, 0, sizeof(MatrixData)); //清空记录坐标
KeyDir = 2; //恢复初始按键运动方向
}
修改,头是数组,还要加上上个方向
struct SP
{
uint8_t H[2];//HEADzb
uint8_t T[2];//TAILzb
uint8_t D;//direct
uint8_t JN; //joinnumber
uint8_t JX[50][3]; //joinzb
uint8_t TD;//HEAD_direct
uint8_t HD;//TAIL_direct
uint8_t L;//length
uint8_t SHD;//sgfx
}Snake;
void Snake_init(void)
{
Snake.L=2;
Snake.HD=2;
Snake.TD=2;
Snake.SHD=2;
Snake.H[0]=2;
Snake.H[1]=6;
Snake.T[0]=1;
Snake.T[1]=6;
Snake.L=2;
Snake.JN = 0;
memset(Snake.JX, 0, sizeof(Snake.JX));
Food_Coordinates[0] = 5; //ʳÎï³õʼ×ø±ê
Food_Coordinates[1] = 5;
Food_Flag = 0; //ʳÎïδ±»³Ôµ½
}
memset()是在第一个字符串中复制第三个参数个数的第二个参数。
具体见相关博主memset()函数链接:https://blog.csdn.net/Supreme7/article/details/115431235