Ignore:
Timestamp:
Dec 23, 2002, 1:03:31 PM (18 years ago)
Author:
Sam Hocevar
Message:
  • lasers are now twice as fast.
  • walls are now filled, and displayed on top of aliens.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/src/tunnel.c

    r51 r53  
    44 *                 All Rights Reserved
    55 *
    6  *   $Id: tunnel.c,v 1.6 2002/12/23 10:06:27 sam Exp $
     6 *   $Id: tunnel.c,v 1.7 2002/12/23 12:03:31 sam Exp $
    77 *
    88 *   This program is free software; you can redistribute it and/or modify
     
    7070{
    7171    /* Print tunnel */
    72     draw_wall( g, t->left, -2 );
     72    draw_wall( g, t->left, 1 );
    7373    draw_wall( g, t->right, -1 );
    7474}
     
    152152static void draw_wall( game *g, int *wall, int delta )
    153153{
    154     int i;
     154    int i, j;
    155155
    156156    gfx_color( RED );
    157157
     158    if( delta == -1 )
     159    {
     160        for( i = 0; i < g->h ; i++ )
     161        {
     162            for( j = wall[i] ; j < g->w ; j++ )
     163            {
     164                gfx_goto( j, i );
     165                gfx_putchar( '#' );
     166            }
     167        }
     168    }
     169    else
     170    {
     171        for( i = 0; i < g->h ; i++ )
     172        {
     173            for( j = 0 ; j <= wall[i]; j++ )
     174            {
     175                gfx_goto( j, i );
     176                gfx_putchar( '#' );
     177            }
     178        }
     179    }
     180
     181    gfx_color( GREEN );
     182
    158183    for( i = 0; i < g->h ; i++ )
    159184    {
    160         char *str;
    161 
    162         if( wall[i] < -10 || wall[i] >= g->w + 10 )
     185        char c;
     186
     187        if( wall[i] <= -10 || wall[i] >= g->w + 10 )
    163188        {
    164189            continue;
    165190        }
    166191
    167         if( wall[i] > wall[i+1] )
    168         {
    169             str = wall[i] > wall[i-1] ? ">##>" : "/##/";
     192        if( i + 1 == g->h || wall[i] > wall[i+1] )
     193        {
     194            c = ( i == 0 || wall[i] > wall[i-1] ) ? '>' : '/';
    170195        }
    171196        else
    172197        {
    173             str = wall[i] > wall[i-1] ? "\\##\\" : "<##<";
    174         }
    175 
    176         if( wall[i] == wall[i+1] + 2 )
    177         {
    178             gfx_goto( wall[i] - 1 + delta, i );
    179             gfx_putchar( '_' );
     198            c = ( i == 0 || wall[i] > wall[i-1] ) ? '\\' : '<';
     199        }
     200
     201        if( delta == -1 && i + 1 < g->h )
     202        {
     203            for( j = 1; j < wall[i] - wall[i+1]; j++ )
     204            {
     205                gfx_goto( wall[i+1] + j - 1, i );
     206                gfx_putchar( '_' );
     207            }
    180208        }
    181209
    182210        gfx_goto( wall[i] + delta, i );
    183         gfx_putstr( str );
    184         if( wall[i] == wall[i+1] - 2 ) gfx_putchar( '_' );
    185     }
    186 }
    187 
     211        gfx_putchar( c );
     212
     213        if( delta == +1 && i + 1 < g->h )
     214        {
     215            for( j = 1; j < wall[i+1] - wall[i]; j++ )
     216            {
     217                gfx_goto( wall[i] + j + 1, i );
     218                gfx_putchar( '_' );
     219            }
     220        }
     221    }
     222}
     223
Note: See TracChangeset for help on using the changeset viewer.