Ignore:
Timestamp:
Dec 15, 2002, 4:41:32 AM (19 years ago)
Author:
Sam Hocevar
Message:
  • real Debian package files.
  • two new types of aliens. only one rules.
  • removed gfx_write in favor of gfx_putchar and gfx_putstr.
  • added bonuses at alien death. they do nothing yet.
  • seeker missiles. 'b' to test.
  • weapon resolution is now 16*char. needs to be generalized.
  • fixed the supernova bugs. center could collide with the tunnel, and the last frame was badly displayed.
  • lots of cleanups everywhere.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • ttyvaders/trunk/src/main.c

    r18 r20  
    3333    game *g = malloc(sizeof(game));
    3434
    35 //    srand(time(NULL));
     35    //srand(time(NULL));
    3636
    3737    if( init_graphics() )
     
    5858    int poz = 0;
    5959    int skip = 0;
    60 
    61     starfield *sf = malloc(sizeof(starfield));
    62     weapons *wp = malloc(sizeof(weapons));
    63     explosions *ex = malloc(sizeof(explosions));
    64     tunnel *t = create_tunnel( g, g->w, g->h );
    65     player *p = create_player( g );
    66     aliens *al = malloc(sizeof(aliens));
    67 
    68     init_starfield( g, sf );
    69     init_weapons( g, wp );
    70     init_explosions( g, ex );
    71     init_aliens( g, al );
     60    int purcompteur = 0;
     61
     62    g->sf = malloc(sizeof(starfield));
     63    g->wp = malloc(sizeof(weapons));
     64    g->ex = malloc(sizeof(explosions));
     65    g->bo = malloc(sizeof(bonus));
     66    g->t = create_tunnel( g, g->w, g->h );
     67    g->p = create_player( g );
     68    g->al = malloc(sizeof(aliens));
     69
     70    init_starfield( g, g->sf );
     71    init_weapons( g, g->wp );
     72    init_explosions( g, g->ex );
     73    init_aliens( g, g->al );
    7274
    7375    /* Temporary stuff */
    7476    for( i = 0; i < 5; i++ )
    7577    {
    76         add_alien( g, al, rand() % g->w, rand() % g->h / 2 );
     78        add_alien( g, g->al, rand() % g->w, rand() % g->h / 2, ALIEN_POOLP );
    7779    }
    78     t->w = 25;
     80
     81    g->t->w = 25;
    7982
    8083    while( !quit )
     
    9699                    break;
    97100                case 'h':
    98                     p->dir = -3;
     101                    g->p->dir = -3;
    99102                    break;
    100103                case 'j':
    101                     if( p->y < g->h - 2 ) p->y += 1;
     104                    if( g->p->y < g->h - 2 ) g->p->y += 1;
    102105                    break;
    103106                case 'k':
    104                     if( p->y > 1 ) p->y -= 1;
     107                    if( g->p->y > 1 ) g->p->y -= 1;
    105108                    break;
    106109                case 'l':
    107                     p->dir = 3;
     110                    g->p->dir = 3;
    108111                    break;
    109112                case '\r':
    110                     if( p->nuke == 0 )
     113                    if( g->p->nuke == 0 )
    111114                    {
    112                         p->nuke = 40;
    113                         add_weapon( g, wp, p->x + 2, p->y, 2 );
     115                        g->p->nuke = 40;
     116                        add_weapon( g, g->wp, (g->p->x + 2) << 4, g->p->y << 4, 0, 0, WEAPON_NUKE );
    114117                    }
    115118                    break;
     119                case 'b':
     120                    if( g->p->weapon == 0 )
     121                    {
     122                        g->p->weapon = 4;
     123                        add_weapon( g, g->wp, g->p->x << 4, g->p->y << 4, -24, -16, WEAPON_SEEKER );
     124                        add_weapon( g, g->wp, (g->p->x + 5) << 4, g->p->y << 4, 24, -16, WEAPON_SEEKER );
     125                    }
    116126                case ' ':
    117                     if( p->weapon == 0 )
     127                    if( g->p->weapon == 0 )
    118128                    {
    119                         p->weapon = 4;
    120                         add_weapon( g, wp, p->x, p->y, 1 );
    121                         add_weapon( g, wp, p->x + 5, p->y, 1 );
     129                        g->p->weapon = 4;
     130                        add_weapon( g, g->wp, g->p->x << 4, g->p->y << 4, 0, -16, WEAPON_LASER );
     131                        add_weapon( g, g->wp, (g->p->x + 5) << 4, g->p->y << 4, 0, -16, WEAPON_LASER );
    122132                    }
    123133                    break;
     
    129139        if( GET_RAND(0,10) == 0 )
    130140        {
    131             add_alien( g, al, 0, rand() % g->h / 2 );
     141            int list[3] = { ALIEN_POOLP, ALIEN_BOOL, ALIEN_BRAH };
     142
     143            add_alien( g, g->al, 0, rand() % g->h / 2, list[GET_RAND(0,3)] );
    132144        }
    133145
     
    144156        }
    145157
     158        /* Update game rules */
     159        if( g->t->right[1] - g->t->left[1] == g->t->w )
     160        {
     161            g->t->w = 85 - g->t->w;
     162        }
     163
    146164        /* Scroll and update positions */
    147         collide_player_tunnel( g, p, t, ex );
    148         update_player( g, p );
    149         collide_player_tunnel( g, p, t, ex );
    150 
    151         update_starfield( g, sf );
    152         update_aliens( g, al );
    153 
    154         collide_weapons_tunnel( g, wp, t, ex );
    155         collide_weapons_aliens( g, wp, al, ex );
    156         update_weapons( g, wp );
    157         collide_weapons_tunnel( g, wp, t, ex );
    158         collide_weapons_aliens( g, wp, al, ex );
    159 
    160         update_explosions( g, ex );
    161         update_tunnel( g, t );
     165        collide_player_tunnel( g, g->p, g->t, g->ex );
     166        update_player( g, g->p );
     167        collide_player_tunnel( g, g->p, g->t, g->ex );
     168
     169        update_starfield( g, g->sf );
     170        update_bonus( g, g->bo );
     171        update_aliens( g, g->al );
     172
     173        collide_weapons_tunnel( g, g->wp, g->t, g->ex );
     174        collide_weapons_aliens( g, g->wp, g->al, g->ex );
     175        update_weapons( g, g->wp );
     176        collide_weapons_tunnel( g, g->wp, g->t, g->ex );
     177        collide_weapons_aliens( g, g->wp, g->al, g->ex );
     178
     179        update_explosions( g, g->ex );
     180        /*if(purcompteur%2)*/ update_tunnel( g, g->t );
    162181
    163182        /* Clear screen */
     
    165184
    166185        /* Print starfield, tunnel, aliens, player and explosions */
    167         draw_starfield( g, sf );
    168         draw_tunnel( g, t );
    169         draw_aliens( g, al );
    170         draw_player( g, p );
    171         draw_weapons( g, wp );
    172         draw_explosions( g, ex );
     186        draw_starfield( g, g->sf );
     187        draw_tunnel( g, g->t );
     188        draw_bonus( g, g->bo );
     189        draw_aliens( g, g->al );
     190        draw_player( g, g->p );
     191        draw_weapons( g, g->wp );
     192        draw_explosions( g, g->ex );
    173193
    174194        /* Refresh */
    175195        refresh_graphics();
     196
     197        purcompteur++;
    176198    }
    177199
    178200#if 0
    179201    free_player( p );
    180     free_tunnel( t );
     202    free_tunnel( g->t );
    181203#endif
    182204}
Note: See TracChangeset for help on using the changeset viewer.