修改1:结构体与初始化

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

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值