From 6111c42181f182d3c38f3648fca945d5d7dee831 Mon Sep 17 00:00:00 2001 From: flo Date: Sun, 30 Jul 2017 16:40:36 +0200 Subject: [PATCH] =?UTF-8?q?tks=20Leph=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/wings.h | 8 +++++++- src/wings.c | 46 +++++++++++++++++++++++----------------------- 2 files changed, 30 insertions(+), 24 deletions(-) diff --git a/include/wings.h b/include/wings.h index 9e0ebd4..3166f16 100755 --- a/include/wings.h +++ b/include/wings.h @@ -47,9 +47,15 @@ typedef struct Cloud short y; } Cloud; +typedef struct Dir_t +{ + Direction map_dir; + Direction dir_requested; +} Dir_t; + int menu(void); void init(void); -void *update_frame(Direction *direction); +void update_frame(Dir_t *way); int game(void); #endif diff --git a/src/wings.c b/src/wings.c index 80721e0..28189f2 100755 --- a/src/wings.c +++ b/src/wings.c @@ -87,20 +87,26 @@ int menu() } } -void *update_frame(Direction *map_dir) +void update_frame(Dir_t *way) { static unsigned char i,j; dclear(); dprint(1, 1, "s:%d l:%d", planes[0].bullets, planes[0].life); - dprint(1, 10, "(%d,%d)", map_dir->dx, map_dir->dy); + dprint(1, 10, "(%d,%d)", way->map_dir.dx, way->map_dir.dy); //dprint(1,10, "(x,y)(%d,%d)", planes[1].x + decalx, planes[1].y + decaly); + if(way->dir_requested.dx != 0 || way->dir_requested.dy != 0) + { + way->map_dir = way->dir_requested; + planes[0].dir = way->dir_requested; + } + for(i = 0; i < MAX_CLOUDS; i++) { - clouds[i].x += map_dir->dx; - clouds[i].y += map_dir->dy; + clouds[i].x += way->map_dir.dx; + clouds[i].y += way->map_dir.dy; dimage(clouds[i].x, clouds[i].y, &cloud); } @@ -108,16 +114,16 @@ void *update_frame(Direction *map_dir) { if(i > 0) { - planes[i].x += map_dir->dx + planes[i].dir.dx; - planes[i].y += map_dir->dy + planes[i].dir.dy; + planes[i].x += way->map_dir.dx - planes[i].dir.dx; + planes[i].y += way->map_dir.dy - planes[i].dir.dy; } dimage_part(planes[i].x, planes[i].y, &plane, 16*(1 - planes[i].dir.dx), 16 * (1 - planes[i].dir.dy), 16, 16); for(j = 0; j < MAX_MISSILES; j++) { - planes[i].missiles[j].x += map_dir->dx - 2 * planes[i].missiles[j].dir.dx; - planes[i].missiles[j].y += map_dir->dy - 2 * planes[i].missiles[j].dir.dy; + planes[i].missiles[j].x += way->map_dir.dx - 2 * planes[i].missiles[j].dir.dx; + planes[i].missiles[j].y += way->map_dir.dy - 2 * planes[i].missiles[j].dir.dy; dimage_part(planes[i].missiles[j].x, planes[i].missiles[j].y ,&missile, 8 * (1 - planes[i].missiles[j].dir.dx), 8 * (1 - planes[i].missiles[j].dir.dy), 8, 8); } @@ -130,19 +136,19 @@ int game() unsigned char fire = 0, j = 0; // fire disable //direction for the map - Direction map_dir, dir_requested; + Dir_t way; init(); timer_t *timer = NULL; - timer = timer_create(40, 0); - timer_attach(timer, update_frame, &map_dir); + timer = timer_create(50, 0); + timer_attach(timer, update_frame, &way); timer_start(timer); event_t events; - map_dir.dx = dir_requested.dx = 0; - map_dir.dy = dir_requested.dy = 0; + way.map_dir.dx = way.dir_requested.dx = 0; + way.map_dir.dy = way.dir_requested.dy = 0; while(1) { @@ -154,22 +160,22 @@ int game() { case KEY_UP : { - dir_requested.dy += 3 - events.type; + way.dir_requested.dy += 3 - events.type; break; } case KEY_DOWN : { - dir_requested.dy -= 3 - events.type; + way.dir_requested.dy -= 3 - events.type; break; } case KEY_LEFT : { - dir_requested.dx += 3 - events.type; + way.dir_requested.dx += 3 - events.type; break; } case KEY_RIGHT : { - dir_requested.dx -= 3 - events.type; + way.dir_requested.dx -= 3 - events.type; break; } @@ -193,12 +199,6 @@ int game() } } - if(dir_requested.dx != 0 || dir_requested.dy != 0) - { - map_dir = dir_requested; - planes[0].dir = dir_requested; - } - if(fire) { planes[0].missiles[0].dir = planes[0].dir;