tron

le jeu des motos dans tron - retour accueil

git clone git://bebou.netlib.re/tron

Log | Files | Refs | README |

commit 036b292c314d34c2b782e5a38080029a4ca7a93c
parent 284b6e2c41c9848ecff12dd007d8bc86c912fac2
Auteurice: Arthur Pons <arthur.pons@unistra.fr>
Date:   Wed, 25 Jun 2025 16:41:07 +0200

On gère la queue avec un tableau de taille fixe

Ca fait beaucoup de recopie de mémoire mais soit
Valgrind m'affiche encore une erreur (mais plus qu'une !!)

Diffstat:
Mtron.c | 16++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/tron.c b/tron.c @@ -26,10 +26,8 @@ struct arena { void display(struct car *cars, int ticks, int tail, struct arena arena, int timeout) { for (int i=0;i<2;i++) { tb_printf(cars[i].position.x,cars[i].position.y,cars[i].color,0,"●"); - for (int j=ticks-tail;j<ticks+1;j++) - if(cars[i].path[j].x!=cars[i].path[j-1].x) - tb_printf(cars[i].path[j].x,cars[i].path[j].y,cars[i].color,0,"▒"); - else + for (int j=0;j<TAIL;j++) + if(cars[i].path[j].x!=0 && cars[i].path[j].y!=0) tb_printf(cars[i].path[j].x,cars[i].path[j].y,cars[i].color,0,"▒"); tb_printf(0,arena.height+i+1,cars[i].color,0,"car %d - x: %d, y: %d, direction %d",i+1,cars[i].position.x,cars[i].position.y,cars[i].direction); } @@ -50,7 +48,10 @@ void display(struct car *cars, int ticks, int tail, struct arena arena, int time } void update(struct car *car, coord *incs, int ticks) { - car->path[ticks]=car->position; + for(int i=TAIL-1;i>0;i--) { + car->path[i]=car->path[i-1]; + } + car->path[0]=car->position; car->position.x=car->position.x+incs[car->direction].x; car->position.y=car->position.y+incs[car->direction].y; } @@ -59,10 +60,9 @@ int is_in_conflict(struct car *cars, int ticks, int tail, struct arena arena) { for (int i=0;i<2;i++) { if(cars[i].position.x==0 || cars[i].position.x==arena.width || cars[i].position.y==1 || cars[i].position.y==arena.height) return i+1; - for (int j=ticks-tail;j<ticks+1;j++) + for (int j=0;j<TAIL;j++) for (int k=0;k<2;k++) - if (cars[i].position.x==cars[k].path[j].x && - cars[i].position.y==cars[k].path[j].y) + if (cars[i].position.x==cars[k].path[j].x && cars[i].position.y==cars[k].path[j].y) return i+1; } return 0;