home *** CD-ROM | disk | FTP | other *** search
/ Game Programming - All in One (3rd Edition) / game_prog_all_in_one_3rd_ed.iso / sources / chapter12 / tankwar_r5 / tank.c < prev    next >
Encoding:
C/C++ Source or Header  |  2004-04-05  |  2.1 KB  |  79 lines

  1. /////////////////////////////////////////////////////////////////////////
  2. // Game Programming All In One, Second Edition
  3. // Source Code Copyright (C)2004 by Jonathan S. Harbour
  4. // Tank War Enhancement 5 - tank.c
  5. /////////////////////////////////////////////////////////////////////////
  6.  
  7. #include "tankwar.h"
  8.  
  9.  
  10. void drawtank(int num)
  11. {
  12.     int dir = tanks[num]->dir;
  13.     int x = tanks[num]->x-15;
  14.     int y = tanks[num]->y-15;
  15.     draw_sprite(buffer, tank_bmp[num][dir], x, y);
  16.  
  17.     //what about the enemy tank?
  18.     x = scrollx[!num] + SCROLLW/2;
  19.     y = scrolly[!num] + SCROLLH/2;
  20.     if (inside(x, y, 
  21.         scrollx[num], scrolly[num], 
  22.         scrollx[num] + SCROLLW, scrolly[num] + SCROLLH))
  23.     {
  24.         //draw enemy tank, adjust for scroll
  25.         draw_sprite(buffer, tank_bmp[!num][tanks[!num]->dir], 
  26.             startx[num]+x-scrollx[num]-15, starty[num]+y-scrolly[num]-15);
  27.  
  28.     }
  29. }
  30.  
  31. void movetank(int num){
  32.     int dir = tanks[num]->dir;
  33.     int speed = tanks[num]->xspeed;
  34.  
  35.     //update tank position
  36.     switch(dir)
  37.     {
  38.         case 0:
  39.             scrolly[num] -= speed;
  40.             break;
  41.         case 1:
  42.             scrolly[num] -= speed;
  43.             scrollx[num] += speed;
  44.             break;
  45.         case 2:
  46.             scrollx[num] += speed;
  47.             break;
  48.         case 3:
  49.             scrollx[num] += speed;
  50.             scrolly[num] += speed;
  51.             break;
  52.         case 4:
  53.             scrolly[num] += speed;
  54.             break;
  55.         case 5:
  56.             scrolly[num] += speed;
  57.             scrollx[num] -= speed;
  58.             break;
  59.         case 6:
  60.             scrollx[num] -= speed;
  61.             break;
  62.         case 7:
  63.             scrollx[num] -= speed;
  64.             scrolly[num] -= speed;
  65.             break;
  66.     }
  67.  
  68.     //keep tank inside bounds
  69.     if (scrollx[num] < 0)
  70.         scrollx[num] = 0;
  71.     if (scrollx[num] > scroll->w - SCROLLW)
  72.         scrollx[num] = scroll->w - SCROLLW;
  73.     if (scrolly[num] < 0)
  74.         scrolly[num] = 0;
  75.     if (scrolly[num] > scroll->h - SCROLLH)
  76.         scrolly[num] = scroll->h - SCROLLH;
  77.  
  78. }
  79.