Changeset 41


Ignore:
Timestamp:
Dec 22, 2002, 11:17:41 PM (20 years ago)
Author:
Sam Hocevar
Message:
  • dead aliens don't explode in the collision loop but in their update loop.
  • new super weapon, the fragmentation bomb.
Location:
libcaca/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/doc/shapes.txt

    r31 r41  
    105105
    106106       ,--.
    107       ( () )
     107      ( ', )
    108108       `--'
    109109       o O
  • libcaca/trunk/src/aliens.c

    r37 r41  
    44 *                 All Rights Reserved
    55 *
    6  *   $Id: aliens.c,v 1.6 2002/12/22 18:44:12 sam Exp $
     6 *   $Id: aliens.c,v 1.7 2002/12/22 22:17:41 sam Exp $
    77 *
    88 *   This program is free software; you can redistribute it and/or modify
     
    6868    for( i = 0; i < ALIENS; i++ )
    6969    {
     70        /* If alien died, make it explode */
     71        if( al->type[i] != ALIEN_NONE && al->life[i] < 0 )
     72        {
     73            add_explosion( g, g->ex, al->x[i], al->y[i], 0, 0, EXPLOSION_MEDIUM );
     74            al->type[i] = ALIEN_NONE;
     75            add_bonus( g, g->bo, al->x[i], al->y[i], GET_RAND(0,5) ? BONUS_GREEN : BONUS_LIFE );
     76        }
     77
     78        /* Update coordinates */
    7079        switch( al->type[i] )
    7180        {
  • libcaca/trunk/src/ceo.c

    r37 r41  
    44 *                 All Rights Reserved
    55 *
    6  *   $Id: ceo.c,v 1.3 2002/12/22 18:44:12 sam Exp $
     6 *   $Id: ceo.c,v 1.4 2002/12/22 22:17:41 sam Exp $
    77 *
    88 *   This program is free software; you can redistribute it and/or modify
     
    2121 */
    2222
     23#include "config.h"
     24
     25#include <unistd.h>
     26
    2327#include "common.h"
    2428
    2529void ceo_alert( void )
    2630{
    27     char key;
    28     int  end = 0;
     31    int end = 0;
    2932
    3033    while( !end )
  • libcaca/trunk/src/collide.c

    r37 r41  
    44 *                 All Rights Reserved
    55 *
    6  *   $Id: collide.c,v 1.6 2002/12/22 18:44:12 sam Exp $
     6 *   $Id: collide.c,v 1.7 2002/12/22 22:17:41 sam Exp $
    77 *
    88 *   This program is free software; you can redistribute it and/or modify
     
    3636        switch( wp->type[i] )
    3737        {
    38             case WEAPON_NONE:
    39                 break;
    40             case WEAPON_SEEKER:
    41             case WEAPON_BOMB:
    42                 if( x <= t->left[y]
    43                      || x >= t->right[y] )
    44                 {
    45                     int damage = wp->type[i] == WEAPON_SEEKER ? 1 : 2;
    46 
    47                     add_explosion( g, ex, x, y, 0, 1, wp->type[i] == WEAPON_SEEKER ? EXPLOSION_SMALL : EXPLOSION_MEDIUM );
    48 
    49                     if( x <= t->left[y] )
    50                     {
    51                         t->right[y-2] -= damage - 1;
    52                         t->left[y-1] -= damage;
    53                         t->left[y] -= damage + 1;
    54                         t->left[y+1] -= damage;
    55                         t->right[y+2] -= damage - 1;
    56                     }
    57                     else
    58                     {
    59                         t->right[y-2] += damage - 1;
    60                         t->right[y-1] += damage;
    61                         t->right[y] += damage + 1;
    62                         t->right[y+1] += damage;
    63                         t->right[y+2] += damage - 1;
    64                     }
    65 
     38        case WEAPON_LIGHTNING:
     39        case WEAPON_NONE:
     40            break;
     41        case WEAPON_SEEKER:
     42        case WEAPON_BOMB:
     43        case WEAPON_FRAGBOMB:
     44            if( x <= t->left[y]
     45                 || x >= t->right[y] )
     46            {
     47                int damage = wp->type[i] == WEAPON_SEEKER ? 1 : 2;
     48
     49                add_explosion( g, ex, x, y, 0, 1, wp->type[i] == WEAPON_SEEKER ? EXPLOSION_SMALL : EXPLOSION_MEDIUM );
     50
     51                if( x <= t->left[y] )
     52                {
     53                    t->right[y-2] -= damage - 1;
     54                    t->left[y-1] -= damage;
     55                    t->left[y] -= damage + 1;
     56                    t->left[y+1] -= damage;
     57                    t->right[y+2] -= damage - 1;
     58                }
     59                else
     60                {
     61                    t->right[y-2] += damage - 1;
     62                    t->right[y-1] += damage;
     63                    t->right[y] += damage + 1;
     64                    t->right[y+1] += damage;
     65                    t->right[y+2] += damage - 1;
     66                }
     67
     68                if( wp->type[i] == WEAPON_FRAGBOMB )
     69                {
     70                    wp->n[i] = -1;
     71                }
     72                else
     73                {
    6674                    wp->type[i] = WEAPON_NONE;
    6775                }
    68                 break;
    69             case WEAPON_LASER:
    70                 if( x <= t->left[y+1]
    71                      || x >= t->right[y+1] )
    72                 {
    73                     add_explosion( g, ex, x, y+1, 0, 1, EXPLOSION_SMALL );
    74 
    75                     if( x <= t->left[y+1] )
    76                     {
    77                         t->left[y]--;
    78                         t->left[y+1]-=2;
    79                         t->left[y+2]--;
    80                     }
    81                     else
    82                     {
    83                         t->right[y]++;
    84                         t->right[y+1]+=2;
    85                         t->right[y+2]++;
    86                     }
    87 
    88                     wp->type[i] = WEAPON_NONE;
    89                 }
    90                 else if( x <= t->left[y]
    91                           || x >= t->right[y] )
    92                 {
    93                     add_explosion( g, ex, x, y, 0, 1, EXPLOSION_SMALL );
    94 
    95                     if( x <= t->left[y] )
    96                     {
    97                         t->left[y-1]--;
    98                         t->left[y]-=2;
    99                         t->left[y+1]--;
    100                     }
    101                     else
    102                     {
    103                         t->right[y-1]++;
    104                         t->right[y]+=2;
    105                         t->right[y+1]++;
    106                     }
    107 
    108                     wp->type[i] = WEAPON_NONE;
    109                 }
    110                 break;
    111             case WEAPON_NUKE:
    112             case WEAPON_BEAM:
    113                 /* The nuke and the laser do not break the tunnel */
    114                 break;
     76            }
     77            break;
     78        case WEAPON_LASER:
     79            if( x <= t->left[y+1]
     80                 || x >= t->right[y+1] )
     81            {
     82                add_explosion( g, ex, x, y+1, 0, 1, EXPLOSION_SMALL );
     83
     84                if( x <= t->left[y+1] )
     85                {
     86                    t->left[y]--;
     87                    t->left[y+1]-=2;
     88                    t->left[y+2]--;
     89                }
     90                else
     91                {
     92                    t->right[y]++;
     93                    t->right[y+1]+=2;
     94                    t->right[y+2]++;
     95                }
     96
     97                wp->type[i] = WEAPON_NONE;
     98            }
     99            else if( x <= t->left[y]
     100                      || x >= t->right[y] )
     101            {
     102                add_explosion( g, ex, x, y, 0, 1, EXPLOSION_SMALL );
     103
     104                if( x <= t->left[y] )
     105                {
     106                    t->left[y-1]--;
     107                    t->left[y]-=2;
     108                    t->left[y+1]--;
     109                }
     110                else
     111                {
     112                    t->right[y-1]++;
     113                    t->right[y]+=2;
     114                    t->right[y+1]++;
     115                }
     116
     117                wp->type[i] = WEAPON_NONE;
     118            }
     119            break;
     120        case WEAPON_NUKE:
     121        case WEAPON_BEAM:
     122            /* The nuke and the laser do not break the tunnel */
     123            break;
    115124        }
    116125    }
     
    131140        switch( wp->type[i] )
    132141        {
    133             case WEAPON_NONE:
    134                 break;
    135             case WEAPON_NUKE:
    136                 /* Big nuke */
    137                 r = (29 - wp->n[i]) * (29 - wp->n[i]) / 8;
    138 
    139                 for( j = 0; j < ALIENS; j++ )
    140                 {
    141                     if( al->type[j] == ALIEN_NONE )
    142                     {
    143                         continue;
    144                     }
    145 
    146                     if( wp->n[i] == 0 /* Nuke destroys _everything_ */ ||
    147                         (al->x[j] - x) * (al->x[j] - x)
    148                           + 4 * (al->y[j] - y) * (al->y[j] - y)
    149                         <= r * r )
    150                     {
    151                         /* Kill alien, not nuke */
    152                         al->type[j] = ALIEN_NONE;
    153                         add_explosion( g, ex, al->x[j], al->y[j], 0, 0, EXPLOSION_MEDIUM );
    154                         add_bonus( g, g->bo, al->x[j], al->y[j], GET_RAND(0,5) ? BONUS_GREEN : BONUS_LIFE );
    155                     }
    156                 }
    157                 break;
    158             case WEAPON_BEAM:
    159                 r = (29 - wp->n[i]) * (29 - wp->n[i]) / 8;
    160 
    161                 for( j = 0; j < ALIENS; j++ )
    162                 {
    163                     if( al->type[j] == ALIEN_NONE )
    164                     {
    165                         continue;
    166                     }
    167 
    168                     if( x >= al->x[j] && x <= al->x[j] + 4
    169                          && y >= al->y[j] + 2 && y-5-r <= al->y[j] )
    170                     {
    171                         al->life[j] -= 4;
    172                         if( al->life[j] <= 0 )
    173                         {
    174                             al->type[j] = ALIEN_NONE;
    175                             add_explosion( g, ex, al->x[j], al->y[j], 0, 0, EXPLOSION_MEDIUM );
    176                             add_bonus( g, g->bo, al->x[j], al->y[j], GET_RAND(0,5) ? BONUS_GREEN : BONUS_LIFE );
    177                         }
    178                     }
    179                 }
    180                 break;
    181 
    182             case WEAPON_LASER:
    183                 for( j = 0; j < ALIENS; j++ )
    184                 {
    185                     if( al->type[j] == ALIEN_NONE )
    186                     {
    187                         continue;
    188                     }
    189 
    190                     if( x >= al->x[j] && x <= al->x[j] + 4
    191                          && y >= al->y[j] && y <= al->y[j] + 2 )
    192                     {
    193                         al->life[j]--;
    194                         if( al->life[j] <= 0 )
    195                         {
    196                             al->type[j] = ALIEN_NONE;
    197                             add_explosion( g, ex, al->x[j], al->y[j], 0, 0, EXPLOSION_MEDIUM );
    198                             add_bonus( g, g->bo, al->x[j], al->y[j], GET_RAND(0,5) ? BONUS_GREEN : BONUS_LIFE );
    199                         }
    200                         ok = 1;
    201                     }
    202                     else if( x >= al->x[j] && x <= al->x[j] + 4
    203                               && y+1 >= al->y[j] && y+1 <= al->y[j] + 2 )
    204                     {
    205                         al->life[j]--;
    206                         if( al->life[j] <= 0 )
    207                         {
    208                             al->type[j] = ALIEN_NONE;
    209                             add_explosion( g, ex, al->x[j], al->y[j]+1, 0, 0, EXPLOSION_MEDIUM );
    210                             add_bonus( g, g->bo, al->x[j], al->y[j]+1, GET_RAND(0,5) ? BONUS_GREEN : BONUS_LIFE );
    211                         }
    212                         ok = 1;
    213                     }
    214                 }
    215 
    216                 if( ok )
    217                 {
    218                     add_explosion( g, ex, x, y+1, 0, 0, EXPLOSION_SMALL );
     142        case WEAPON_LIGHTNING:
     143        case WEAPON_NONE:
     144            break;
     145        case WEAPON_NUKE:
     146            /* Big nuke */
     147            r = (29 - wp->n[i]) * (29 - wp->n[i]) / 8;
     148
     149            for( j = 0; j < ALIENS; j++ )
     150            {
     151                if( al->type[j] == ALIEN_NONE || al->life[j] < 0 )
     152                {
     153                    continue;
     154                }
     155
     156                if( wp->n[i] == 0 /* Nuke destroys _everything_ */ ||
     157                    (al->x[j] - x) * (al->x[j] - x)
     158                      + 4 * (al->y[j] - y) * (al->y[j] - y)
     159                    <= r * r )
     160                {
     161                    /* Kill alien, not nuke */
     162                    al->life[j] -= 10;
     163                }
     164            }
     165            break;
     166
     167        case WEAPON_BEAM:
     168            r = (29 - wp->n[i]) * (29 - wp->n[i]) / 8;
     169
     170            for( j = 0; j < ALIENS; j++ )
     171            {
     172                if( al->type[j] == ALIEN_NONE || al->life[j] < 0 )
     173                {
     174                    continue;
     175                }
     176
     177                if( x >= al->x[j] && x <= al->x[j] + 4
     178                     && y >= al->y[j] + 2 && y-5-r <= al->y[j] )
     179                {
     180                    al->life[j] -= 4;
     181                }
     182            }
     183            break;
     184
     185        case WEAPON_LASER:
     186            for( j = 0; j < ALIENS; j++ )
     187            {
     188                if( al->type[j] == ALIEN_NONE || al->life[j] < 0 )
     189                {
     190                    continue;
     191                }
     192
     193                if( x >= al->x[j] && x <= al->x[j] + 4
     194                     && y >= al->y[j] && y <= al->y[j] + 2 )
     195                {
     196                    al->life[j]--;
     197                    ok = 1;
     198                }
     199                else if( x >= al->x[j] && x <= al->x[j] + 4
     200                          && y+1 >= al->y[j] && y+1 <= al->y[j] + 2 )
     201                {
     202                    al->life[j]--;
     203                    ok = 1;
     204                }
     205            }
     206
     207            if( ok )
     208            {
     209                add_explosion( g, ex, x, y+1, 0, 0, EXPLOSION_SMALL );
     210                wp->type[i] = WEAPON_NONE;
     211            }
     212            break;
     213
     214        case WEAPON_SEEKER:
     215        case WEAPON_BOMB:
     216        case WEAPON_FRAGBOMB:
     217            for( j = 0; j < ALIENS; j++ )
     218            {
     219                if( al->type[j] == ALIEN_NONE || al->life[j] < 0 )
     220                {
     221                    continue;
     222                }
     223
     224                if( x >= al->x[j] && x <= al->x[j] + 4
     225                     && y >= al->y[j] && y <= al->y[j] + 2 )
     226                {
     227                    al->life[j] -= wp->type[i] == WEAPON_SEEKER ? 1 : 5;
     228                    ok = 1;
     229                }
     230            }
     231
     232            if( ok )
     233            {
     234                add_explosion( g, ex, x, y+1, 0, 0, wp->type[i] == WEAPON_SEEKER ? EXPLOSION_SMALL : EXPLOSION_MEDIUM );
     235
     236                if( wp->type[i] == WEAPON_FRAGBOMB )
     237                {
     238                    wp->n[i] = -1;
     239                }
     240                else
     241                {
    219242                    wp->type[i] = WEAPON_NONE;
    220243                }
    221                 break;
    222 
    223             case WEAPON_SEEKER:
    224             case WEAPON_BOMB:
    225                 for( j = 0; j < ALIENS; j++ )
    226                 {
    227                     if( al->type[j] == ALIEN_NONE )
    228                     {
    229                         continue;
    230                     }
    231 
    232                     if( x >= al->x[j] && x <= al->x[j] + 4
    233                          && y >= al->y[j] && y <= al->y[j] + 2 )
    234                     {
    235                         al->life[j] -= wp->type[i] == WEAPON_BOMB ? 5 : 1;
    236                         if( al->life[j] <= 0 )
    237                         {
    238                             al->type[j] = ALIEN_NONE;
    239                             add_explosion( g, ex, al->x[j], al->y[j], 0, 0, EXPLOSION_MEDIUM );
    240                             add_bonus( g, g->bo, al->x[j], al->y[j], GET_RAND(0,5) ? BONUS_GREEN : BONUS_LIFE );
    241                         }
    242                         ok = 1;
    243                     }
    244                 }
    245 
    246                 if( ok )
    247                 {
    248                     add_explosion( g, ex, x, y+1, 0, 0, wp->type[i] == WEAPON_SEEKER ? EXPLOSION_SMALL : EXPLOSION_MEDIUM );
    249                     wp->type[i] = WEAPON_NONE;
    250                 }
    251                 break;
     244            }
     245            break;
    252246        }
    253247    }
  • libcaca/trunk/src/common.h

    r37 r41  
    44 *                 All Rights Reserved
    55 *
    6  *   $Id: common.h,v 1.7 2002/12/22 18:44:12 sam Exp $
     6 *   $Id: common.h,v 1.8 2002/12/22 22:17:41 sam Exp $
    77 *
    88 *   This program is free software; you can redistribute it and/or modify
     
    7474typedef struct
    7575{
    76     enum { WEAPON_NONE, WEAPON_LASER, WEAPON_SEEKER, WEAPON_NUKE, WEAPON_BEAM, WEAPON_LIGHTNING, WEAPON_BOMB } type[WEAPONS];
     76    enum { WEAPON_NONE, WEAPON_LASER, WEAPON_SEEKER, WEAPON_NUKE, WEAPON_BEAM, WEAPON_LIGHTNING, WEAPON_BOMB, WEAPON_FRAGBOMB } type[WEAPONS];
    7777    int x[WEAPONS];
    7878    int y[WEAPONS];
  • libcaca/trunk/src/main.c

    r37 r41  
    44 *                 All Rights Reserved
    55 *
    6  *   $Id: main.c,v 1.7 2002/12/22 18:44:12 sam Exp $
     6 *   $Id: main.c,v 1.8 2002/12/22 22:17:41 sam Exp $
    77 *
    88 *   This program is free software; you can redistribute it and/or modify
     
    128128                        g->p->nuke = 40;
    129129                        add_weapon( g, g->wp, (g->p->x + 2) << 4, g->p->y << 4, 0, 0, WEAPON_BEAM );
     130                    }
     131                    break;
     132                case 'd':
     133                    if( g->p->nuke == 0 )
     134                    {
     135                        g->p->nuke = 40;
     136                        add_weapon( g, g->wp, (g->p->x + 2) << 4, g->p->y << 4, 0, -16, WEAPON_FRAGBOMB );
    130137                    }
    131138                    break;
     
    206213        draw_bonus( g, g->bo );
    207214        draw_aliens( g, g->al );
    208         draw_player( g, g->p );
    209215        draw_explosions( g, g->ex );
    210216        draw_weapons( g, g->wp );
     217        draw_player( g, g->p );
    211218
    212219        /* Refresh */
  • libcaca/trunk/src/weapons.c

    r37 r41  
    44 *                 All Rights Reserved
    55 *
    6  *   $Id: weapons.c,v 1.7 2002/12/22 18:44:12 sam Exp $
     6 *   $Id: weapons.c,v 1.8 2002/12/22 22:17:41 sam Exp $
    77 *
    88 *   This program is free software; you can redistribute it and/or modify
     
    3030static void draw_beam( int x, int y, int frame );
    3131static void draw_circle( int x, int y, int r, char c );
     32static void draw_fragbomb( int x, int y, int frame );
    3233
    3334void init_weapons( game *g, weapons *wp )
     
    8182                draw_bomb( wp->x[i] >> 4, wp->y[i] >> 4, wp->vx[i], wp->vy[i] );
    8283                break;
     84            case WEAPON_FRAGBOMB:
     85                draw_fragbomb( wp->x[i] >> 4, wp->y[i] >> 4, wp->n[i] );
     86                break;
    8387            case WEAPON_BEAM:
    8488                draw_beam( wp->x[i] >> 4, wp->y[i] >> 4, wp->n[i] );
     
    8791                draw_nuke( wp->x[i] >> 4, wp->y[i] >> 4, wp->n[i] );
    8892                break;
     93            case WEAPON_LIGHTNING:
    8994            case WEAPON_NONE:
    9095                break;
     
    173178
    174179                break;
     180            case WEAPON_FRAGBOMB:
     181                /* If n was set to -1, the fragbomb exploded */
     182                if( wp->n[i] == -1 )
     183                {
     184                    add_weapon( g, g->wp, wp->x[i] + 24, wp->y[i], 24, 0, WEAPON_SEEKER );
     185                    add_weapon( g, g->wp, wp->x[i] - 24, wp->y[i], -24, 0, WEAPON_SEEKER );
     186                    add_weapon( g, g->wp, wp->x[i], wp->y[i] + 24, 0, 24, WEAPON_SEEKER );
     187                    add_weapon( g, g->wp, wp->x[i], wp->y[i] - 24, 0, -24, WEAPON_SEEKER );
     188                    add_weapon( g, g->wp, wp->x[i] + 24, wp->y[i] + 8, 24, 8, WEAPON_SEEKER );
     189                    add_weapon( g, g->wp, wp->x[i] - 24, wp->y[i] + 8, -24, 8, WEAPON_SEEKER );
     190                    add_weapon( g, g->wp, wp->x[i] + 24, wp->y[i] - 8, 24, -8, WEAPON_SEEKER );
     191                    add_weapon( g, g->wp, wp->x[i] - 24, wp->y[i] - 8, -24, -8, WEAPON_SEEKER );
     192                    add_weapon( g, g->wp, wp->x[i] + 16, wp->y[i] + 16, 16, 16, WEAPON_SEEKER );
     193                    add_weapon( g, g->wp, wp->x[i] - 16, wp->y[i] + 16, -16, 16, WEAPON_SEEKER );
     194                    add_weapon( g, g->wp, wp->x[i] + 16, wp->y[i] - 16, 16, -16, WEAPON_SEEKER );
     195                    add_weapon( g, g->wp, wp->x[i] - 16, wp->y[i] - 16, -16, -16, WEAPON_SEEKER );
     196                    wp->type[i] = WEAPON_NONE;
     197                }
     198
     199                wp->x[i] += wp->vx[i];
     200                wp->y[i] += wp->vy[i];
     201                wp->n[i]++;
     202                if( wp->y[i] < 0 )
     203                {
     204                    wp->type[i] = WEAPON_NONE;
     205                }
     206                break;
    175207            case WEAPON_BEAM:
    176208                wp->x[i] = (g->p->x + 2) << 4;
     
    189221                }
    190222                break;
     223            case WEAPON_LIGHTNING:
    191224            case WEAPON_NONE:
    192225                break;
     
    208241            wp->vy[i] = vy;
    209242            wp->type[i] = type;
     243            wp->n[i] = 0;
    210244            switch( type )
    211245            {
    212246                case WEAPON_LASER:
     247                    break;
     248                case WEAPON_FRAGBOMB:
    213249                    break;
    214250                case WEAPON_SEEKER:
     
    410446            }
    411447        }
     448    }
     449}
     450
     451static void draw_fragbomb( int x, int y, int frame )
     452{
     453    gfx_color( WHITE );
     454
     455    gfx_color( frame & 1 ? CYAN : WHITE );
     456    gfx_goto( x-2, y );
     457    gfx_putstr( "(    )" );
     458    gfx_goto( x-1, y+1 );
     459    gfx_putstr( "`--'" );
     460
     461    gfx_color( frame & 1 ? WHITE : CYAN );
     462    gfx_goto( x-1, y-1 );
     463    gfx_putstr( ",--." );
     464    gfx_goto( x, y );
     465    gfx_putstr( "'," );
     466
     467    switch( frame % 4 )
     468    {
     469    case 0:
     470        gfx_color( CYAN );
     471        gfx_goto( x, y + 2 );
     472        gfx_putchar( 'O' );
     473        gfx_goto( x + 2, y + 2 );
     474        gfx_putchar( 'o' );
     475        gfx_goto( x + 1, y + 3 );
     476        gfx_putchar( 'o' );
     477        gfx_color( GRAY );
     478        gfx_goto( x - 1, y + 3 );
     479        gfx_putchar( '°' );
     480        gfx_goto( x + 2, y + 4 );
     481        gfx_putchar( '°' );
     482        gfx_goto( x, y + 4 );
     483        gfx_putchar( '.' );
     484        gfx_goto( x + 1, y + 5 );
     485        gfx_putchar( '.' );
     486        break;
     487    case 1:
     488        gfx_color( CYAN );
     489        //gfx_goto( x, y + 1 );
     490        //gfx_putchar( 'O' );
     491        gfx_goto( x + 1, y + 2 );
     492        gfx_putchar( 'O' );
     493        gfx_goto( x, y + 3 );
     494        gfx_putchar( 'o' );
     495        gfx_color( GRAY );
     496        gfx_goto( x + 2, y + 3 );
     497        gfx_putchar( '°' );
     498        gfx_goto( x + 1, y + 4 );
     499        gfx_putchar( '°' );
     500        gfx_goto( x - 1, y + 4 );
     501        gfx_putchar( '.' );
     502        gfx_goto( x + 2, y + 5 );
     503        gfx_putchar( '.' );
     504        break;
     505    case 2:
     506        gfx_color( CYAN );
     507        //gfx_goto( x - 1, y + 1 );
     508        //gfx_putchar( 'O' );
     509        gfx_goto( x + 2, y + 2 );
     510        gfx_putchar( 'O' );
     511        gfx_goto( x, y + 2 );
     512        gfx_putchar( 'o' );
     513        gfx_goto( x + 1, y + 3 );
     514        gfx_putchar( 'o' );
     515        gfx_color( GRAY );
     516        gfx_goto( x, y + 4 );
     517        gfx_putchar( '°' );
     518        gfx_goto( x + 2, y + 4 );
     519        gfx_putchar( '.' );
     520        gfx_goto( x + 1, y + 5 );
     521        gfx_putchar( '.' );
     522        break;
     523    case 3:
     524        gfx_color( CYAN );
     525        //gfx_goto( x + 2, y + 1 );
     526        //gfx_putchar( 'O' );
     527        gfx_goto( x + 1, y + 2 );
     528        gfx_putchar( 'O' );
     529        gfx_goto( x - 1, y + 2 );
     530        gfx_putchar( 'o' );
     531        gfx_goto( x + 2, y + 3 );
     532        gfx_putchar( 'o' );
     533        gfx_color( GRAY );
     534        gfx_goto( x, y + 3 );
     535        gfx_putchar( '°' );
     536        gfx_goto( x + 1, y + 4 );
     537        gfx_putchar( '°' );
     538        gfx_goto( x, y + 5 );
     539        gfx_putchar( '.' );
     540        break;
    412541    }
    413542}
Note: See TracChangeset for help on using the changeset viewer.