C 字符自动移动isn';行不通

C 字符自动移动isn';行不通,c,teensy,C,Teensy,我试图让一个角色随机自动移动,并在墙壁上弹跳。理论上,我的代码应该可以工作,但是角色没有移动。我没有犯错误,也试着找出一个问题,但没有成功 我修复了声明和一些比较中的一些问题,但是我还没有发现另一个问题,那就是阻止代码运行。我在48x84 LCD屏幕上运行这个 主要功能并不精确,但当前运行的顺序是相同的 int t_xy[27][2] = { {0,0}, {4,0}, {0,1}, {1,1}, {3,1}, {4,1}, {0,2}, {1,2}, {2,2}, {3,2}, {4,2},

我试图让一个角色随机自动移动,并在墙壁上弹跳。理论上,我的代码应该可以工作,但是角色没有移动。我没有犯错误,也试着找出一个问题,但没有成功

我修复了声明和一些比较中的一些问题,但是我还没有发现另一个问题,那就是阻止代码运行。我在48x84 LCD屏幕上运行这个

主要功能并不精确,但当前运行的顺序是相同的

int t_xy[27][2] = { {0,0}, {4,0}, {0,1}, {1,1}, {3,1}, {4,1}, {0,2}, {1,2}, {2,2}, {3,2}, {4,2}, {0,3}, {2,3}, {4,3}, {0,4}, {1,4}, {3,4}, {4,4}, {0,5}, {1,5}, {2,5}, {3,5}, {4,5}, {1,6}, {2,6}, {3,6} }; //27 pixels in bitmap

//Tom's positon
double t_x = LCD_X - 5, t_y = LCD_Y - 9,  t_dx, t_dy;

void t_setup() {
    double gait = 0.3;
    double t_dir = rand() * 3.14 * 2 / RAND_MAX; // random direction
    t_dx = gait * cos(t_dir);
    t_dy = gait * sin(t_dir);
}

void t_move() {
    int new_x = round(t_x + t_dx);
    int new_y = round(t_y + t_dy);
    int bounced = 0;
        if (new_x == 0 || new_x == LCD_X - 5) {
            t_dx = -t_dx;
            bounced = 1;

        }
        if (new_y == 8 || new_y == LCD_Y - 7) {
            t_dy = -t_dy;
            bounced = 1;
        }
        if (!(bounced == 1)) {
            t_x += t_dx;
            t_y += t_dy;
        }

void main()
    t_setup();
    while (!(game_over == 1))
    {
        t_move();
    }
}

我希望tom能够自动移动,跳出屏幕边界,并以随机方向移动,但目前tom根本不移动,但没有出现任何错误,其他游戏元素工作正常

跳出检测应考虑移动方向,但它没有,目前,我为每个bounce语句添加了一个调用,以将其发送回t_设置程序以获得新的方向。我不太担心他撞到墙上的方向与撞到墙上的方向相同->你放了分号,这就是为什么
main
根本不起作用的原因。@miradizeynalli那不是我真正的main,只是我在编写代码时犯的一个错误,这样人们就可以了解我在做什么。我的实际主要作品很好,因为计时器和玩家角色的动作和其他一些东西都很好。你正在开发Arduino IDE吗?如果是,您可以尝试使用
Serial.print
s进行调试。我觉得,你的
游戏结束后
从一开始就是1。