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