home *** CD-ROM | disk | FTP | other *** search
- /////////////////////////////////////////////////////////////////////////
- // Game Programming All In One, Second Edition
- // Source Code Copyright (C)2004 by Jonathan S. Harbour
- // Tank War Enhancement 5 - tank.c
- /////////////////////////////////////////////////////////////////////////
-
- #include "tankwar.h"
-
-
- void drawtank(int num)
- {
- int dir = tanks[num]->dir;
- int x = tanks[num]->x-15;
- int y = tanks[num]->y-15;
- draw_sprite(buffer, tank_bmp[num][dir], x, y);
-
- //what about the enemy tank?
- x = scrollx[!num] + SCROLLW/2;
- y = scrolly[!num] + SCROLLH/2;
- if (inside(x, y,
- scrollx[num], scrolly[num],
- scrollx[num] + SCROLLW, scrolly[num] + SCROLLH))
- {
- //draw enemy tank, adjust for scroll
- draw_sprite(buffer, tank_bmp[!num][tanks[!num]->dir],
- startx[num]+x-scrollx[num]-15, starty[num]+y-scrolly[num]-15);
-
- }
- }
-
- void movetank(int num){
- int dir = tanks[num]->dir;
- int speed = tanks[num]->xspeed;
-
- //update tank position
- switch(dir)
- {
- case 0:
- scrolly[num] -= speed;
- break;
- case 1:
- scrolly[num] -= speed;
- scrollx[num] += speed;
- break;
- case 2:
- scrollx[num] += speed;
- break;
- case 3:
- scrollx[num] += speed;
- scrolly[num] += speed;
- break;
- case 4:
- scrolly[num] += speed;
- break;
- case 5:
- scrolly[num] += speed;
- scrollx[num] -= speed;
- break;
- case 6:
- scrollx[num] -= speed;
- break;
- case 7:
- scrollx[num] -= speed;
- scrolly[num] -= speed;
- break;
- }
-
- //keep tank inside bounds
- if (scrollx[num] < 0)
- scrollx[num] = 0;
- if (scrollx[num] > scroll->w - SCROLLW)
- scrollx[num] = scroll->w - SCROLLW;
- if (scrolly[num] < 0)
- scrolly[num] = 0;
- if (scrolly[num] > scroll->h - SCROLLH)
- scrolly[num] = scroll->h - SCROLLH;
-
- }
-