#include #include "common.h" static void draw_alien( game *g, int x, int y, int type ); void init_aliens( game *g, aliens *al ) { int i; for( i = 0; i < ALIENS; i++ ) { al->x[i] = -1; al->y[i] = -1; al->img[i] = 0; al->life[i] = 0; } } void draw_aliens( game *g, aliens *al ) { int i; for( i = 0; i < ALIENS; i++ ) { if( al->y[i] >= 0 ) { draw_alien( g, al->x[i], al->y[i], al->img[i] % 2 ); } } } void update_aliens( game *g, aliens *al ) { int i; for( i = 0; i < ALIENS; i++ ) { if( al->y[i] < 0 ) { //al->x[i] = g->w; } else { 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] + rand() % 4; /* Check collisions */ if( al->y[i] < 0 ) al->y[i] = 0; if( al->y[i] > g->w - 1 ) al->y[i] = g->w - 1; } } } void add_alien( game *g, aliens *al, int x, int y ) { int i; for( i = 0; i < ALIENS; i++ ) { if( al->y[i] < 0 ) { al->x[i] = x; al->y[i] = y; al->img[i] = 0; al->life[i] = 2; break; } } } static void draw_alien( game *g, int x, int y, int type ) { switch( type ) { case 0: GFX_COLOR( MAGENTA ); GFX_GOTO( x, y ); GFX_WRITE( ',' ); GFX_WRITE( '-' ); GFX_WRITE( '-' ); GFX_WRITE( '-' ); GFX_WRITE( '.' ); GFX_GOTO( x, y+1 ); GFX_WRITE( '\\' ); GFX_COLOR( WHITE ); GFX_WRITE( 'o' ); GFX_WRITE( ' ' ); GFX_WRITE( 'O' ); GFX_COLOR( MAGENTA ); GFX_WRITE( '/' ); GFX_GOTO( x, y+2 ); GFX_WRITE( '^' ); GFX_WRITE( '^' ); GFX_WRITE( '^' ); GFX_WRITE( '^' ); GFX_WRITE( '^' ); break; case 1: GFX_COLOR( MAGENTA ); GFX_GOTO( x, y ); GFX_WRITE( ',' ); GFX_WRITE( '-' ); GFX_WRITE( '-' ); GFX_WRITE( '-' ); GFX_WRITE( '.' ); GFX_GOTO( x, y+1 ); GFX_WRITE( '\\' ); GFX_COLOR( WHITE ); GFX_WRITE( 'O' ); GFX_WRITE( ' ' ); GFX_WRITE( 'o' ); GFX_COLOR( MAGENTA ); GFX_WRITE( '/' ); GFX_GOTO( x, y+2 ); GFX_WRITE( '^' ); GFX_WRITE( '^' ); GFX_WRITE( '^' ); GFX_WRITE( '^' ); GFX_WRITE( '^' ); break; } } #if 0 void draw_rock( int x, int y, int type ) { switch( type ) { case 0: GFX_COLOR( RED ); GFX_GOTO( x, y ); GFX_WRITE( '/' ); GFX_WRITE( '\\' ); GFX_WRITE( '_' ); GFX_WRITE( '/' ); GFX_WRITE( '\\' ); GFX_GOTO( x, y+1 ); GFX_WRITE( '>' ); GFX_WRITE( ' ' ); GFX_WRITE( ' ' ); GFX_WRITE( ' ' ); GFX_WRITE( '/' ); GFX_GOTO( x, y+2 ); GFX_WRITE( '\\' ); GFX_WRITE( '/' ); GFX_WRITE( '\\' ); GFX_WRITE( '_' ); GFX_WRITE( '>' ); break; case 1: GFX_COLOR( RED ); GFX_GOTO( x, y ); GFX_WRITE( '_' ); GFX_WRITE( '/' ); GFX_WRITE( '\\' ); GFX_WRITE( '/' ); GFX_WRITE( '>' ); GFX_GOTO( x, y+1 ); GFX_WRITE( '\\' ); GFX_WRITE( ' ' ); GFX_WRITE( ' ' ); GFX_WRITE( ' ' ); GFX_WRITE( '\\' ); GFX_GOTO( x, y+2 ); GFX_WRITE( '<' ); GFX_WRITE( '_' ); GFX_WRITE( '/' ); GFX_WRITE( '\\' ); GFX_WRITE( '/' ); break; } } #endif