TGC Codebase Backup



TANKGAME by Anonymous Coder

23rd Jan 2004 12:20
Summary

SIMPLE SPRITE ANIMATION DEMO



Description

SIMPLE TANK BATTLE DEMO SHOWING HOW TO USE SPRITES ON A SINGLE PC



Code
                                    ` This code was downloaded from The Game Creators
                                    ` It is reproduced here with full permission
                                    ` http://www.thegamecreators.com
                                    
                                    Rem Project: TANKGAME
Rem Created: 1/12/2004 10:20:48 AM
Rem ***** Main Source File *****
INPUT "YOUR NAME   ",YOURNAME$
INPUT " type 1 FOR STRAIGHT SHOTS OR 2 FOR GUIDED SHOTS",CONTROLSHOT
SET DISPLAY MODE 640,480,16
SYNC ON
SYNC RATE 30
SET TEXT SIZE 20
load sound "gun 3.wav",1
input:print statements, " "
DIM TANKXPOS(2)
DIM TANKYPOS(2)
DIM TANKANGLE(2)
SHOTREADY=1
SHOTREADY2=1
red = 0
red1=100
green=0
green1=100
CLS
HIDE MOUSE
LOAD BITMAP "TANK.BMP",1
SET CURRENT BITMAP 1
GET IMAGE 1,0,0,40,40
SET CURRENT BITMAP 0
SPRITE 1,20,240,1
SCALE SPRITE 1,82
OFFSET SPRITE 1,20,20

LOAD BITMAP "TANK2.BMP",2
SET CURRENT BITMAP 2
GET IMAGE 2,0,0,40,40
SET CURRENT BITMAP 0
SPRITE 2,600,240,2
SCALE SPRITE 2,82
OFFSET SPRITE 2,20,20

LOAD BITMAP "SHELL.BMP",3
SET CURRENT BITMAP 3
GET IMAGE 3,0,0,10,10

LOAD BITMAP "SHELL2.BMP",4
SET CURRENT BITMAP 4
GET IMAGE 4,0,0,10,10
load bitmap "barrier.bmp",5
set current bitmap 5
get image 5,150,130,170,360
SET CURRENT BITMAP 0
sprite 5,280,120,5
DO
   GOSUB CONTROLLERHANDLER
   GOSUB CONTROLSHOT
   GOSUB CONTROLLERHANDLER2
   GOSUB CONTROLSHOT2
   text 29,19,str$(red1)+"   "+str$(red)
   text 580,19,str$(green1)+"   "+str$(green)
   if red1<1then shotready=0
   if green1<1 then shotready2=0
   SYNC
LOOP
END

CONTROLLERHANDLER:
   TANKXPOS(1)=SPRITE X(1)
   TANKYPOS(1)=SPRITE Y(1)
   TANKANGLE(1)=SPRITE ANGLE(1)

   IF JOYSTICK X()>300 OR JOYSTICK X()<-300
      IF JOYSTICK X()>300
         ANGLE=ANGLE+5
         ANGLE=WRAPVALUE(ANGLE)
      ELSE
         ANGLE=ANGLE-5
         ANGLE=WRAPVALUE(ANGLE)
      ENDIF
      ROTATE SPRITE 1,ANGLE
   ENDIF

   IF JOYSTICK Y()>300 OR JOYSTICK Y()<-300
      IF JOYSTICK Y()<0
         VELOCITY=JOYSTICK SLIDER A()/5000
      ELSE
         VELOCITY=-JOYSTICK SLIDER A()/5000
      ENDIF

      MOVE SPRITE 1,VELOCITY
      IF TANKOFFSCREEN(1)=1
         SPRITE 1,TANKXPOS(1),TANKYPOS(1),1
      ENDIF
   ENDIF

   IF JOYSTICK FIRE A()=1 AND SHOTREADY=1 and red1>0
   play sound 1
   dec red1
      SPRITE 3,TANKXPOS(1),TANKYPOS(1),3
      ROTATE SPRITE 3,TANKANGLE(1)
   ENDIF
RETURN

CONTROLSHOT:
   if sprite exist(3)=1
      if sprite collision(3,2)=0
         shotready=0
         offset sprite 3,5,5
   IF CONTROLSHOT=2

         rotate sprite 3,tankangle(1)
         ENDIF
         move sprite 3,10

         if tankoffscreen(3)=1
            delete sprite 3
         endif
      else
         red=red+10
         delete sprite 3
      endif
   else
      shotready=1
   endif
RETURN

CONTROLLERHANDLER2:
   TANKXPOS(2)=SPRITE X(2)
   TANKYPOS(2)=SPRITE Y(2)
   TANKANGLE(2)=SPRITE ANGLE(2)

   IF LEFTKEY()=1 OR RIGHTKEY()=1
      IF LEFTKEY()=1
         ANGLE2=ANGLE2-5
         ANGLE2=WRAPVALUE(ANGLE2)
      ELSE
         ANGLE2=ANGLE2+5
         ANGLE2=WRAPVALUE(ANGLE2)
      ENDIF
      ROTATE SPRITE 2,ANGLE2
   ENDIF

   IF UPKEY()=1 OR DOWNKEY()=1
      IF UPKEY()=1
         VELOCITY=5
      ELSE
         VELOCITY=-5
      ENDIF

      MOVE SPRITE 2,VELOCITY
      IF TANKOFFSCREEN(2)=1
         SPRITE 2,TANKXPOS(2),TANKYPOS(2),2
      ENDIF
   ENDIF

   IF SPACEKEY()=1 AND SHOTREADY2=1 and green1>0
   dec green1
      SPRITE 4,TANKXPOS(2),TANKYPOS(2),4
      ROTATE SPRITE 4,TANKANGLE(2)
      play sound 1
   ENDIF
RETURN

CONTROLSHOT2:
   if sprite exist(4)=1
      if sprite collision(4,1)=0
         shotready2=0
         offset sprite 4,5,5
   IF CONTROLSHOT=2
         rotate sprite 4,tankangle(2)
         ENDIF
         move sprite 4,10

         if tankoffscreen(4)=1
            delete sprite 4
         endif
      else
         green=green+10
         delete sprite 4
      endif
   else
      shotready2=1
   endif
RETurn

FUNCTION TANKOFFSCREEN(TANKNUMBER)
   IF SPRITE X(TANKNUMBER)<=20 OR SPRITE X(TANKNUMBER)>=620 OR SPRITE Y(TANKNUMBER)<=20 OR  SPRITE Y(TANKNUMBER)>=460 OR SPRITE COLLISION(TANKNUMBER,5)=1 OR SPRITE COLLISION(1,2)=1 OR SPRITE COLLISION(2,1)=1
      OFFSCREEN=1
   ELSE
      OFFSCREEN=0
   ENDIF
ENDFUNCTION OFFSCREEN