home *** CD-ROM | disk | FTP | other *** search
/ Game Programming - All in One (3rd Edition) / game_prog_all_in_one_3rd_ed.iso / sources / chapter14 / tankwar_r7 / input.c < prev    next >
Encoding:
C/C++ Source or Header  |  2006-09-15  |  1.4 KB  |  61 lines

  1. /////////////////////////////////////////////////////////////////////////
  2. // Game Programming All In One, Third Edition
  3. // Tank War Enhancement 7 - input.c
  4. /////////////////////////////////////////////////////////////////////////
  5.  
  6. #include "tankwar.h"
  7.  
  8. void forward(int num)
  9. {
  10.     //use xspeed as a generic "speed" variable
  11.     tanks[num]->xspeed++;
  12.     if (tanks[num]->xspeed > MAXSPEED)
  13.         tanks[num]->xspeed = MAXSPEED;
  14. }
  15.  
  16. void backward(int num)
  17. {
  18.     tanks[num]->xspeed--;
  19.     if (tanks[num]->xspeed < -MAXSPEED)
  20.         tanks[num]->xspeed = -MAXSPEED;
  21. }
  22.  
  23. void turnleft(int num)
  24. {
  25.     tanks[num]->dir--;
  26.     if (tanks[num]->dir < 0)
  27.         tanks[num]->dir = 7;
  28. }
  29.  
  30. void turnright(int num)
  31. {
  32.     tanks[num]->dir++;
  33.     if (tanks[num]->dir > 7)
  34.         tanks[num]->dir = 0;
  35. }
  36.  
  37. void getinput()
  38. {
  39.     //hit ESC to quit
  40.     if (key[KEY_ESC])   gameover = 1;
  41.  
  42.     //WASD - SPACE keys control tank 1
  43.     if (key[KEY_W])     forward(0);
  44.     if (key[KEY_D])     turnright(0);
  45.     if (key[KEY_A])     turnleft(0);
  46.     if (key[KEY_S])     backward(0);
  47.     if (key[KEY_SPACE]) fireweapon(0);
  48.  
  49.     //arrow - ENTER keys control tank 2
  50.     if (key[KEY_UP])    forward(1);
  51.     if (key[KEY_RIGHT]) turnright(1);
  52.     if (key[KEY_DOWN])  backward(1);
  53.     if (key[KEY_LEFT])  turnleft(1);
  54.     if (key[KEY_ENTER]) fireweapon(1);
  55.  
  56.     //short delay after keypress
  57.     rest(20);
  58.  
  59. }
  60.  
  61.