TGC Codebase Backup



bullet code(add by Laak

24th Nov 2005 14:29
Summary

simple bullet code that is easily applicable to larger programs. mess around with color, size, speed, rate, etc.



Description

this is built mainly on the variable bullet code program.
however you can aim with the arrowkeys and it has no vectors



Code
                                    ` This code was downloaded from The Game Creators
                                    ` It is reproduced here with full permission
                                    ` http://www.thegamecreators.com
                                    
                                    RANDOMIZE TIMER()
SET DISPLAY MODE 1280,1024,0

AUTOCAM OFF
MAKE CAMERA 1
POSITION CAMERA 1,0,0,0
POSITION CAMERA 1,0,50,0
MAKE OBJECT CUBE 101,20
POSITION OBJECT 101,0,0,100

`DECLARES BULLET CHARACTERISTICS
type bullet
   ID AS INTEGER
   SPEED AS FLOAT
   FIRED AS BOOLEAN
   COLORR AS INTEGER
   COLORB AS INTEGER
   COLORG AS INTEGER
   ALIVE AS BOOLEAN
   VISIBLE AS BOOLEAN
   START_X_POS AS FLOAT ` STARTING POSITION OF BULLET
   START_Y_POS AS FLOAT
   START_Z_POS AS FLOAT
   X_ANGLE AS FLOAT
   Y_ANGLE AS FLOAT
   Z_ANGLE AS FLOAT
   SIZE AS FLOAT
   RANGE AS FLOAT
endtype

DIM SHELL(100) AS BULLET `CREATES AN ARRAY OF BULLETS
FOR T=1 TO 100
SHELL(T).ID = T
SHELL(T).SPEED = 1
SHELL(T).FIRED = 0
SHELL(T).START_X_POS = OBJECT POSITION X(101)
SHELL(T).START_Y_POS = OBJECT POSITION Y(101)
SHELL(T).START_Z_POS = OBJECT POSITION Z(101)
SHELL(T).SIZE = RND(9)+1
SHELL(T).RANGE = 200
SHELL(T).X_ANGLE = OBJECT ANGLE X(101)
SHELL(T).Y_ANGLE = OBJECT ANGLE X(101)
SHELL(T).Z_ANGLE = OBJECT ANGLE X(101)
SHELL(T).COLORR = RND(255)
SHELL(T).COLORG = RND(255)
SHELL(T).COLORB = RND(255)

MAKE OBJECT SPHERE T,SHELL(T).SIZE `MAKES BULLETS
POSITION OBJECT T,SHELL(T).START_X_POS,SHELL(T).START_Y_POS,SHELL(T).START_Z_POS `POSITIONS BULLETS AT BOX COORDINATES
ROTATE OBJECT T,SHELL(T).X_ANGLE,SHELL(T).Y_ANGLE,SHELL(T).Z_ANGLE `AIMS BULLETS
COLOR OBJECT T,RGB(SHELL(T).COLORR,SHELL(T).COLORG,SHELL(T).COLORB) `COLORS BULLETS



NEXT T

CURRENT_BULLET AS INTEGER
AMMO AS INTEGER
TIME AS FLOAT

CURRENT_BULLET = 1 `DETERMINES WHICH BULLET IS BEING FIRED
AMMO = 100
TIME = 10 `TIME UNTIL NEXT BULLET IS FIRED


DO

IF CURRENT_BULLET >100 THEN CURRENT_BULLET  = 1

DEC TIME
IF MOUSECLICK() = 1 AND TIME <= 0 ` BULLET CAN ONLY BE FIRED AFTER TIMER HAS COUNTED DOWN
   SHELL(CURRENT_BULLET).FIRED = 1 `CHANGE THE BULLET TO FIRING STATE
   SHELL(CURRENT_BULLET).RANGE = 1000
   SHELL(CURRENT_BULLET).ALIVE = 1

   SHELL(CURRENT_BULLET).START_X_POS = OBJECT POSITION X(101) `REPOSITIONS BULLETS THAT WERE CALLED
   SHELL(CURRENT_BULLET).START_Y_POS = OBJECT POSITION Y(101) `BACK TO THE GUN THAT HAVE NOT REACHED THEIR RANGE
   SHELL(CURRENT_BULLET).START_Z_POS = OBJECT POSITION Z(101)

   SHELL(CURRENT_BULLET).X_ANGLE = OBJECT ANGLE X(101)
   SHELL(CURRENT_BULLET).Y_ANGLE = OBJECT ANGLE X(101)
   SHELL(CURRENT_BULLET).Z_ANGLE = OBJECT ANGLE X(101)

   TIME = 20 `RESET THE COUNTER FOR THE TIME UNTIL THE NEXT BULLET CAN BE FIRED
   INC CURRENT_BULLET `SWITCH TO NEXT BULLET
ENDIF

FOR T= 1 TO 100
 IF SHELL(T).FIRED  =  1
  SHOW OBJECT T
  MOVE OBJECT T,SHELL(T).SPEED
  SHELL(T).RANGE = SHELL(T).RANGE - 1
  IF SHELL(T).RANGE <= 0 THEN SHELL(T).FIRED = 0 : SHELL(T).ALIVE = 0
 ELSE
  HIDE OBJECT T
  pOSITION OBJECT T,SHELL(T).START_X_POS,SHELL(T).START_Y_POS,SHELL(T).START_Z_POS
  ROTATE OBJECT T,SHELL(T).X_ANGLE,SHELL(T).Y_ANGLE,SHELL(T).Z_ANGLE
 ENDIF

NEXT T




fOR T= 1 TO 100 ` MAKE SURE THAT BULLETS AIM THE RIGHT WAY AND START AT THE CORRECT COORDINATES
SHELL(T).START_X_POS = OBJECT POSITION X(101)
SHELL(T).START_Y_POS = OBJECT POSITION Y(101)
SHELL(T).START_Z_POS = OBJECT POSITION Z(101)

SHELL(T).X_ANGLE = OBJECT ANGLE X(101)
SHELL(T).Y_ANGLE = OBJECT ANGLE Y(101)
SHELL(T).Z_ANGLE = OBJECT ANGLE Z(101)

NEXT T

IF RIGHTKEY() = 1 THEN TURN OBJECT RIGHT 101,.2
IF LEFTKEY() = 1 THEN TURN OBJECT LEFT 101,.2
IF UPKEY() = 1 THEN PITCH OBJECT UP 101,.2
IF DOWNKEY() = 1 THEN PITCH OBJECT DOWN 101,.2







LOOP