From 349ba14ae0e1b71634b899ce015d60192478aefa Mon Sep 17 00:00:00 2001 From: Sam Hocevar Date: Mon, 23 Dec 2002 13:46:27 +0000 Subject: [PATCH] * aliens are now named foo, bar and baz. * beginning of life jauges. --- src/aliens.c | 38 +++++++++++++++++++------------------- src/collide.c | 9 ++++++++- src/common.h | 7 +++++-- src/main.c | 4 ++-- src/player.c | 28 +++++++++++++++++++++++++++- 5 files changed, 61 insertions(+), 25 deletions(-) diff --git a/src/aliens.c b/src/aliens.c index b4ab8e5..e045a4d 100644 --- a/src/aliens.c +++ b/src/aliens.c @@ -3,7 +3,7 @@ * Copyright (c) 2002 Sam Hocevar * All Rights Reserved * - * $Id: aliens.c,v 1.7 2002/12/22 22:17:41 sam Exp $ + * $Id: aliens.c,v 1.8 2002/12/23 13:46:27 sam Exp $ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,9 +24,9 @@ #include "common.h" -static void draw_alien_poolp( game *g, int x, int y, int frame ); -static void draw_alien_bool( game *g, int x, int y, int frame ); -static void draw_alien_brah( game *g, int x, int y, int frame ); +static void draw_alien_foo( game *g, int x, int y, int frame ); +static void draw_alien_bar( game *g, int x, int y, int frame ); +static void draw_alien_baz( game *g, int x, int y, int frame ); void init_aliens( game *g, aliens *al ) { @@ -46,14 +46,14 @@ void draw_aliens( game *g, aliens *al ) { switch( al->type[i] ) { - case ALIEN_BRAH: - draw_alien_brah( g, al->x[i], al->y[i], al->img[i] % 8 ); + case ALIEN_FOO: + draw_alien_foo( g, al->x[i], al->y[i], al->img[i] % 8 ); break; - case ALIEN_POOLP: - draw_alien_poolp( g, al->x[i], al->y[i], al->img[i] % 2 ); + case ALIEN_BAR: + draw_alien_bar( g, al->x[i], al->y[i], al->img[i] % 2 ); break; - case ALIEN_BOOL: - draw_alien_bool( g, al->x[i], al->y[i], al->img[i] % 6 ); + case ALIEN_BAZ: + draw_alien_baz( g, al->x[i], al->y[i], al->img[i] % 6 ); break; case ALIEN_NONE: break; @@ -78,9 +78,9 @@ void update_aliens( game *g, aliens *al ) /* Update coordinates */ switch( al->type[i] ) { - case ALIEN_POOLP: - case ALIEN_BOOL: - case ALIEN_BRAH: + case ALIEN_FOO: + case ALIEN_BAR: + case ALIEN_BAZ: al->x[i] = ((al->x[i] + 5) % (g->w + 3)) - 3; al->y[i] = al->y[i] + (rand() % 8) / 7 - (rand() % 8) / 7; al->img[i] = al->img[i] + 1; @@ -110,13 +110,13 @@ void add_alien( game *g, aliens *al, int x, int y, int type ) switch( al->type[i] ) { - case ALIEN_POOLP: + case ALIEN_FOO: al->life[i] = 3; break; - case ALIEN_BOOL: + case ALIEN_BAR: al->life[i] = 3; break; - case ALIEN_BRAH: + case ALIEN_BAZ: al->life[i] = 3; break; case ALIEN_NONE: @@ -128,7 +128,7 @@ void add_alien( game *g, aliens *al, int x, int y, int type ) } } -static void draw_alien_poolp( game *g, int x, int y, int frame ) +static void draw_alien_bar( game *g, int x, int y, int frame ) { switch( frame ) { @@ -161,7 +161,7 @@ static void draw_alien_poolp( game *g, int x, int y, int frame ) } } -static void draw_alien_bool( game *g, int x, int y, int frame ) +static void draw_alien_baz( game *g, int x, int y, int frame ) { gfx_color( GREEN ); gfx_goto( x, y-1 ); @@ -199,7 +199,7 @@ static void draw_alien_bool( game *g, int x, int y, int frame ) gfx_putstr( "oo" ); } -static void draw_alien_brah( game *g, int x, int y, int frame ) +static void draw_alien_foo( game *g, int x, int y, int frame ) { gfx_color( YELLOW ); diff --git a/src/collide.c b/src/collide.c index 883b070..fefbe17 100644 --- a/src/collide.c +++ b/src/collide.c @@ -3,7 +3,7 @@ * Copyright (c) 2002 Sam Hocevar * All Rights Reserved * - * $Id: collide.c,v 1.8 2002/12/23 09:28:37 sam Exp $ + * $Id: collide.c,v 1.9 2002/12/23 13:46:27 sam Exp $ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -261,15 +261,22 @@ void collide_weapons_aliens( game *g, weapons *wp, aliens *al, explosions *ex ) void collide_player_tunnel( game *g, player *p, tunnel *t, explosions *ex ) { + if( p->dead ) + { + return; + } + if( p->x <= t->left[p->y] ) { p->x += 2; add_explosion( g, ex, p->x+1, p->y-2, 0, 0, EXPLOSION_SMALL ); + p->life -= 50; } else if( p->x + 5 >= t->right[p->y] ) { p->x -= 2; add_explosion( g, ex, p->x+4, p->y-2, 0, 0, EXPLOSION_SMALL ); + p->life -= 50; } } diff --git a/src/common.h b/src/common.h index 171c542..c970524 100644 --- a/src/common.h +++ b/src/common.h @@ -3,7 +3,7 @@ * Copyright (c) 2002 Sam Hocevar * All Rights Reserved * - * $Id: common.h,v 1.12 2002/12/23 13:13:04 sam Exp $ + * $Id: common.h,v 1.13 2002/12/23 13:46:27 sam Exp $ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,6 +20,8 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#define MAX_LIFE 1000 + #define STARS 50 #define WEAPONS 200 #define BONUS 30 @@ -104,12 +106,13 @@ typedef struct int x, y; int vx, vy; int weapon, nuke; + int life, dead; } player; typedef struct { - enum { ALIEN_NONE, ALIEN_POOLP, ALIEN_BOOL, ALIEN_BRAH } type[ALIENS]; + enum { ALIEN_NONE, ALIEN_FOO, ALIEN_BAR, ALIEN_BAZ } type[ALIENS]; int x[ALIENS]; int y[ALIENS]; int life[ALIENS]; diff --git a/src/main.c b/src/main.c index 006c9b0..955a724 100644 --- a/src/main.c +++ b/src/main.c @@ -3,7 +3,7 @@ * Copyright (c) 2002 Sam Hocevar * All Rights Reserved * - * $Id: main.c,v 1.13 2002/12/23 13:13:04 sam Exp $ + * $Id: main.c,v 1.14 2002/12/23 13:46:27 sam Exp $ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -168,7 +168,7 @@ static void start_game (game *g) /* XXX: to be removed */ if( GET_RAND(0,10) == 0 ) { - int list[3] = { ALIEN_POOLP, ALIEN_BOOL, ALIEN_BRAH }; + int list[3] = { ALIEN_FOO, ALIEN_BAR, ALIEN_BAZ }; add_alien( g, g->al, 0, rand() % g->h / 2, list[GET_RAND(0,3)] ); } diff --git a/src/player.c b/src/player.c index 5363ef4..4da5751 100644 --- a/src/player.c +++ b/src/player.c @@ -3,7 +3,7 @@ * Copyright (c) 2002 Sam Hocevar * All Rights Reserved * - * $Id: player.c,v 1.5 2002/12/23 13:13:04 sam Exp $ + * $Id: player.c,v 1.6 2002/12/23 13:46:27 sam Exp $ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -35,6 +35,7 @@ player * create_player( game *g ) p->vy = 0; p->weapon = 0; p->nuke = 0; + p->life = MAX_LIFE; return p; } @@ -46,6 +47,11 @@ void free_player( player *p ) void draw_player( game *g, player *p ) { + if( p->dead ) + { + return; + } + gfx_goto( p->x + 2, p->y - 2 ); gfx_color( GREEN ); gfx_putstr( "/\\" ); @@ -62,6 +68,19 @@ void draw_player( game *g, player *p ) void update_player( game *g, player *p ) { + if( p->dead ) + { + return; + } + + if( p->life <= 0 ) + { + add_explosion( g, g->ex, p->x, p->y, 0, 0, EXPLOSION_SMALL ); + p->dead = 1; + return; + } + + /* Update weapon stats */ if( p->weapon ) { p->weapon--; @@ -72,6 +91,13 @@ void update_player( game *g, player *p ) p->nuke--; } + /* Update life */ + if( p->life < MAX_LIFE ) + { + p->life++; + } + + /* Update coords */ p->x += p->vx; if( p->vx < 0 )