Sprite based particles seem quite daunting, if there's no other option then that's what I'll do but in the mean time, this is the code for my whole program and the attached media (I had to reduce the quality of the background to transport it here), I did it check if it works and the images for the game came from my little brother who asked me to make the game for him. .And sorry if my code is long and untidy.
Rem Project: Slug Slayer
Rem Created: 7/01/2008 6:36:21 PM
Rem ***** Main Source File *****
Rem THIS IS THE SETUP PART, making the load screen and the program settings
DISABLE ESCAPEKEY
HIDE MOUSE
CHANGE MOUSE 0
SET TEXT SIZE 52
SET TEXT TO BOLD
SETGREY(175)
TEXT 350, 350, "LOADING..."
Rem This loads stuff like pictures and sounds
LOAD IMAGE "Media\Jungle.bmp", 1
LOAD IMAGE "Media\red.bmp", 2
LOAD IMAGE "Media\slug.bmp", 3
LOAD IMAGE "Media\decal.bmp", 4
LOAD SOUND "Media\Gun1.wav", 1
LOAD SOUND "Media\Gun2.wav", 2
LOAD MUSIC "Media\Militär.mid", 1
Rem this declares the variables
score AS INTEGER
seed AS INTEGER
bulletnumber AS INTEGER
counter AS INTEGER
counterlimit AS INTEGER
makeslug AS INTEGER
score=0
seed=1
bulletnumber=1000
counter=0
counterlimit=105
makeslug=0
Rem This plays the music -DUH!
SET MUSIC VOLUME 1, 199
LOOP MUSIC 1
Rem Shows the credits before the game starts
CLS
txtfade=0
SETGREY(txtfade)
REPEAT
INC txtfade, 5
SETGREY(txtfade)
TEXT 310, 350, "SINISTERSOURCE"
UNTIL txtfade=255
WAIT 2000
REPEAT
DEC txtfade, 5
SETGREY(txtfade)
TEXT 310, 350, "SINISTERSOURCE"
UNTIL txtfade=0
SET TEXT SIZE 32
REPEAT
INC txtfade, 5
SETGREY(txtfade)
TEXT 280, 350, "Programming by: Siôn le Roux"
UNTIL txtfade=255
WAIT 2000
REPEAT
DEC txtfade, 5
SETGREY(txtfade)
TEXT 280, 350, "Programming by: Siôn le Roux"
UNTIL txtfade=0
REPEAT
INC txtfade, 5
SETGREY(txtfade)
TEXT 280, 350, "Graphics by: Tristan le Roux"
UNTIL txtfade=255
WAIT 2000
REPEAT
DEC txtfade, 5
SETGREY(txtfade)
TEXT 280, 350, "Graphics by: Tristan le Roux"
UNTIL txtfade=0
REPEAT
INC txtfade, 5
SETGREY(txtfade)
TEXT 280, 350, "Music by: Siôn le Roux"
UNTIL txtfade=255
WAIT 2000
REPEAT
DEC txtfade, 5
SETGREY(txtfade)
TEXT 280, 350, "Music by: Siôn le Roux"
UNTIL txtfade=0
REPEAT
INC txtfade, 5
SETGREY(txtfade)
TEXT 280, 350, "Game design by: Tristan le Roux"
UNTIL txtfade=255
WAIT 2000
REPEAT
DEC txtfade, 5
SETGREY(txtfade)
TEXT 280, 350, "Game design by: Tristan le Roux"
UNTIL txtfade=0
Rem This makes the background
SPRITE 1, 0, 0, 1
SHOW MOUSE
Rem This makes 7 slugs
SPRITE 2, 38, 583, 3
SPRITE 3, 38, 304, 3
SPRITE 4, 26, 17, 3
SPRITE 5, 411, 4, 3
SPRITE 6, 935, 2, 3
SPRITE 7, 935, 315, 3
SPRITE 8, 929, 583, 3
Rem sets the slugs' initial states (dead/alive/dying) and the fade value
slug1=1
slug2=0
slug3=0
slug4=0
slug5=0
slug6=0
slug7=0
fade1=255
fade2=255
fade3=255
fade4=255
fade5=255
fade6=255
fade7=255
Rem some other settings, allowing you to see the text and particle effects
`DRAW TO FRONT
`DRAW SPRITES FIRST
Rem Sets the screen refresh rate + speeds up the game
SYNC ON : SYNC RATE 100
Rem ***This is the main loop***
REPEAT
Rem This creates a slug at random of 7 positions (set to value 1)
IF makeslug=1
IF RND(6)=1 AND slug1=0 THEN slug1=1
IF RND(6)=2 AND slug2=0 THEN slug2=1
IF RND(6)=3 AND slug3=0 THEN slug3=1
IF RND(6)=4 AND slug4=0 THEN slug4=1
IF RND(6)=5 AND slug5=0 THEN slug5=1
IF RND(6)=6 AND slug6=0 THEN slug6=1
IF RND(6)=0 AND slug7=0 THEN slug7=1
makeslug=0
ENDIF
Rem this makes a slug invisible (set to value 0) once it has faded
IF SPRITE ALPHA(2)=5 THEN slug1=0
IF SPRITE ALPHA(3)=5 THEN slug2=0
IF SPRITE ALPHA(4)=5 THEN slug3=0
IF SPRITE ALPHA(5)=5 THEN slug4=0
IF SPRITE ALPHA(6)=5 THEN slug5=0
IF SPRITE ALPHA(7)=5 THEN slug6=0
IF SPRITE ALPHA(8)=5 THEN slug7=0
Rem This makes slugs invisible (value 0 - dead)
IF slug1=0 THEN SET SPRITE ALPHA 2, 0
IF slug2=0 THEN SET SPRITE ALPHA 3, 0
IF slug3=0 THEN SET SPRITE ALPHA 4, 0
IF slug4=0 THEN SET SPRITE ALPHA 5, 0
IF slug5=0 THEN SET SPRITE ALPHA 6, 0
IF slug6=0 THEN SET SPRITE ALPHA 7, 0
IF slug7=0 THEN SET SPRITE ALPHA 8, 0
Rem This makes slugs visible (value 1 - alive)
IF slug1=1 THEN SET SPRITE ALPHA 2, 255 : fade1=255
IF slug2=1 THEN SET SPRITE ALPHA 3, 255 : fade2=255
IF slug3=1 THEN SET SPRITE ALPHA 4, 255 : fade3=255
IF slug4=1 THEN SET SPRITE ALPHA 5, 255 : fade4=255
IF slug5=1 THEN SET SPRITE ALPHA 6, 255 : fade5=255
IF slug6=1 THEN SET SPRITE ALPHA 7, 255 : fade6=255
IF slug7=1 THEN SET SPRITE ALPHA 8, 255 : fade7=255
Rem This determines wether you hit a slug and states what happens... also when you miss
IF MOUSECLICK()=1 AND slug1=1 AND slughit(1)=1
SPRITE bulletnumber, MOUSEX(), MOUSEY(), 2
MAKE PARTICLES bulletnumber,4,8,20
POSITION PARTICLES bulletnumber,MOUSEX(),MOUSEY(),-20
ROTATE PARTICLES bulletnumber,90,0,0
SET PARTICLE GRAVITY bulletnumber,20
COLOR PARTICLES bulletnumber,255,0,0
PLAY SOUND 1 : slug1=2 : WAIT 300 : INC bulletnumber : SYNC
ENDIF
IF MOUSECLICK()=1 AND slug2=1 AND slughit(2)=1
SPRITE bulletnumber, MOUSEX(), MOUSEY(), 2
MAKE PARTICLES bulletnumber,4,8,20
POSITION PARTICLES bulletnumber,MOUSEX(),MOUSEY(),-20
ROTATE PARTICLES bulletnumber,90,0,0
SET PARTICLE GRAVITY bulletnumber,20
COLOR PARTICLES bulletnumber,255,0,0
PLAY SOUND 1 : slug2=2 : WAIT 300 : INC bulletnumber : SYNC
ENDIF
IF MOUSECLICK()=1 AND slug3=1 AND slughit(3)=1
SPRITE bulletnumber, MOUSEX(), MOUSEY(), 2
MAKE PARTICLES bulletnumber,4,8,20
POSITION PARTICLES bulletnumber,MOUSEX(),MOUSEY(),-20
ROTATE PARTICLES bulletnumber,90,0,0
SET PARTICLE GRAVITY bulletnumber,20
COLOR PARTICLES bulletnumber,255,0,0
PLAY SOUND 1 : slug3=2 : WAIT 300 : INC bulletnumber : SYNC
ENDIF
IF MOUSECLICK()=1 AND slug4=1 AND slughit(4)=1
SPRITE bulletnumber, MOUSEX(), MOUSEY(), 2
MAKE PARTICLES bulletnumber,4,8,20
POSITION PARTICLES bulletnumber,MOUSEX(),MOUSEY(),-20
ROTATE PARTICLES bulletnumber,90,0,0
SET PARTICLE GRAVITY bulletnumber,20
COLOR PARTICLES bulletnumber,255,0,0
PLAY SOUND 1 : slug4=2 : WAIT 300 : INC bulletnumber : SYNC
ENDIF
IF MOUSECLICK()=1 AND slug5=1 AND slughit(5)=1
SPRITE bulletnumber, MOUSEX(), MOUSEY(), 2
MAKE PARTICLES bulletnumber,4,8,20
POSITION PARTICLES bulletnumber,MOUSEX(),MOUSEY(),-20
ROTATE PARTICLES bulletnumber,90,0,0
SET PARTICLE GRAVITY bulletnumber,20
COLOR PARTICLES bulletnumber,255,0,0
PLAY SOUND 1 : slug5=2 : WAIT 300 : INC bulletnumber : SYNC
ENDIF
IF MOUSECLICK()=1 AND slug6=1 AND slughit(6)=1
SPRITE bulletnumber, MOUSEX(), MOUSEY(), 2
MAKE PARTICLES bulletnumber,4,8,20
POSITION PARTICLES bulletnumber,MOUSEX(),MOUSEY(),-20
ROTATE PARTICLES bulletnumber,90,0,0
SET PARTICLE GRAVITY bulletnumber,20
COLOR PARTICLES bulletnumber,255,0,0
PLAY SOUND 1 : slug6=2 : WAIT 300 : INC bulletnumber : SYNC
ENDIF
IF MOUSECLICK()=1 AND slug7=1 AND slughit(7)=1
SPRITE bulletnumber, MOUSEX(), MOUSEY(), 2
MAKE PARTICLES bulletnumber,4,8,20
POSITION PARTICLES bulletnumber,MOUSEX(),MOUSEY(),-20
ROTATE PARTICLES bulletnumber,90,0,0
SET PARTICLE GRAVITY bulletnumber,20
COLOR PARTICLES bulletnumber,255,0,0
PLAY SOUND 1 : slug7=2 : WAIT 300 : INC bulletnumber : SYNC
ENDIF
IF MOUSECLICK()=1 AND ((slug1=1 AND slughit(1)=0) OR (slug2=1 AND slughit(2)=0) OR (slug3=1 AND slughit(3)=0) OR (slug4=1 AND slughit(4)=0) OR (slug5=1 AND slughit(5)=0) OR (slug6=1 AND slughit(6)=0) OR (slug7=1 AND slughit(7)=0)) THEN PLAY SOUND 2 : WAIT 300
IF MOUSECLICK()=1 AND (slug1=0 AND slug2=0 AND slug3=0 AND slug4=0 AND slug5=0 AND slug6=0 AND slug7=0) THEN PLAY SOUND 2 : WAIT 300
Rem This counts down until the next slug is created
IF counter=counterlimit
makeslug=1
IF counterlimit>20 THEN DEC counterlimit, 2
counter=0
ELSE
INC counter
ENDIF
Rem This fades out slugs and bulletholes after a slug is hit (value 2 - dying)
IF slug1=2
SET SPRITE ALPHA 2, fade1
bulletfadenum=1000
REPEAT
IF SPRITE EXIST(bulletfadenum)
IF SPRITE X(bulletfadenum)>38 AND SPRITE X(bulletfadenum)<103 AND SPRITE Y(bulletfadenum)>583 AND SPRITE Y(bulletfadenum)<738 THEN SET SPRITE ALPHA bulletfadenum, fade1
IF SPRITE ALPHA(bulletfadenum)=5 THEN DELETE SPRITE bulletfadenum : DELETE PARTICLES bulletfadenum
ENDIF
INC bulletfadenum
UNTIL bulletfadenum=>bulletnumber
DEC fade1, 25
ENDIF
IF slug2=2
SET SPRITE ALPHA 3, fade2
bulletfadenum=1000
REPEAT
IF SPRITE EXIST(bulletfadenum)
IF SPRITE X(bulletfadenum)>38 AND SPRITE X(bulletfadenum)<103 AND SPRITE Y(bulletfadenum)>304 AND SPRITE Y(bulletfadenum)<459 THEN SET SPRITE ALPHA bulletfadenum, fade2
IF SPRITE ALPHA(bulletfadenum)=5 THEN DELETE SPRITE bulletfadenum : DELETE PARTICLES bulletfadenum
ENDIF
INC bulletfadenum
UNTIL bulletfadenum=>bulletnumber
DEC fade2, 25
ENDIF
IF slug3=2
SET SPRITE ALPHA 4, fade3
bulletfadenum=1000
REPEAT
IF SPRITE EXIST(bulletfadenum)
IF SPRITE X(bulletfadenum)>26 AND SPRITE X(bulletfadenum)<91 AND SPRITE Y(bulletfadenum)>17 AND SPRITE Y(bulletfadenum)<172 THEN SET SPRITE ALPHA bulletfadenum, fade3
IF SPRITE ALPHA(bulletfadenum)=5 THEN DELETE SPRITE bulletfadenum : DELETE PARTICLES bulletfadenum
ENDIF
INC bulletfadenum
UNTIL bulletfadenum=>bulletnumber
DEC fade3, 25
ENDIF
IF slug4=2
SET SPRITE ALPHA 5, fade4
bulletfadenum=1000
REPEAT
IF SPRITE EXIST(bulletfadenum)
IF SPRITE X(bulletfadenum)>411 AND SPRITE X(bulletfadenum)<476 AND SPRITE Y(bulletfadenum)>4 AND SPRITE Y(bulletfadenum)<159 THEN SET SPRITE ALPHA bulletfadenum, fade4
IF SPRITE ALPHA(bulletfadenum)=5 THEN DELETE SPRITE bulletfadenum : DELETE PARTICLES bulletfadenum
ENDIF
INC bulletfadenum
UNTIL bulletfadenum=>bulletnumber
DEC fade4, 25
ENDIF
IF slug5=2
SET SPRITE ALPHA 6, fade5
bulletfadenum=1000
REPEAT
IF SPRITE EXIST(bulletfadenum)
IF SPRITE X(bulletfadenum)>935 AND SPRITE X(bulletfadenum)<1000 AND SPRITE Y(bulletfadenum)>2 AND SPRITE Y(bulletfadenum)<157 THEN SET SPRITE ALPHA bulletfadenum, fade5
IF SPRITE ALPHA(bulletfadenum)=5 THEN DELETE SPRITE bulletfadenum : DELETE PARTICLES bulletfadenum
ENDIF
INC bulletfadenum
UNTIL bulletfadenum=>bulletnumber
DEC fade5, 25
ENDIF
IF slug6=2
SET SPRITE ALPHA 7, fade6
bulletfadenum=1000
REPEAT
IF SPRITE EXIST(bulletfadenum)
IF SPRITE X(bulletfadenum)>935 AND SPRITE X(bulletfadenum)<1000 AND SPRITE Y(bulletfadenum)>315 AND SPRITE Y(bulletfadenum)<470 THEN SET SPRITE ALPHA bulletfadenum, fade6
IF SPRITE ALPHA(bulletfadenum)=5 THEN DELETE SPRITE bulletfadenum : DELETE PARTICLES bulletfadenum
ENDIF
INC bulletfadenum
UNTIL bulletfadenum=>bulletnumber
DEC fade6, 25
ENDIF
IF slug7=2
SET SPRITE ALPHA 8, fade7
bulletfadenum=1000
REPEAT
IF SPRITE EXIST(bulletfadenum)
IF SPRITE X(bulletfadenum)>929 AND SPRITE X(bulletfadenum)<994 AND SPRITE Y(bulletfadenum)>583 AND SPRITE Y(bulletfadenum)<738 THEN SET SPRITE ALPHA bulletfadenum, fade7
IF SPRITE ALPHA(bulletfadenum)=5 THEN DELETE SPRITE bulletfadenum : DELETE PARTICLES bulletfadenum
ENDIF
INC bulletfadenum
UNTIL bulletfadenum=>bulletnumber
DEC fade7, 25
ENDIF
Rem This deisplays how many points you have
SET CURSOR 350, 350 : PRINT "POINTS:"
Rem This command refreshes the screen!!!
SYNC
`IF slug1=1 AND slug2=1 AND slug3=1 AND slug4=1 AND slug5=1 AND slug6=1 AND slug7=1 THEN GOSUB youlose
UNTIL MOUSECLICK()=2 OR ESCAPEKEY()=1 `OR endcondition=1
Rem What happens after you loose
youlose:
SYNC OFF
CLS
SET TEXT SIZE 52
txtfade=0
SETGREY(txtfade)
REPEAT
INC txtfade, 5
SETGREY(txtfade)
TEXT 310, 350, "YOU LOSE!!!"
UNTIL txtfade=255
WAIT 2000
REPEAT
DEC txtfade, 5
SETGREY(txtfade)
TEXT 310, 350, "YOU LOOSE!!!"
UNTIL txtfade=0
endcondition=1
RETURN
Rem Cleanup - deletes everything... except the bullets, cos that doesn't seem to work
SYNC OFF
CLS
DELETE IMAGE 1
DELETE IMAGE 2
DELETE IMAGE 3
DELETE SOUND 1
DELETE SOUND 2
DELETE SPRITE 1
DELETE SPRITE 2
DELETE SPRITE 3
DELETE SPRITE 4
DELETE SPRITE 5
DELETE SPRITE 6
DELETE SPRITE 7
DELETE SPRITE 8
bulletfadenum=1000
REPEAT
IF SPRITE EXIST(bulletfadenum) THEN DELETE SPRITE bulletfadenum
` IF SPRITE ALPHA(bulletfadenum)=5 THEN DELETE SPRITE bulletfadenum
` ENDIF
INC bulletfadenum
UNTIL bulletfadenum=>bulletnumber
DELETE MUSIC 1
CLS
Rem contact details at the end
CLS
SET TEXT SIZE 32
REPEAT
INC txtfade, 5
SETGREY(txtfade)
TEXT 200, 350, "send your opinions to: sinisterstuf@yahoo.com"
UNTIL txtfade=255
WAIT 3000
REPEAT
DEC txtfade, 5
SETGREY(txtfade)
TEXT 200, 350, "send your opinions to: sinisterstuf@yahoo.com"
UNTIL txtfade=0
FUNCTION SETGREY(a) `Decreases R, G & B by an equal, specified amount
INK RGB(a,a,a),RGB(0,0,0)
ENDFUNCTION
Rem This function determines wether the specified slug is hit when you click on the screen
FUNCTION slughit(slugnumber)
IF slugnumber=1 THEN xpos=38 : ypos=583
IF slugnumber=2 THEN xpos=38 : ypos=304
IF slugnumber=3 THEN xpos=26 : ypos=17
IF slugnumber=4 THEN xpos=411 : ypos=4
IF slugnumber=5 THEN xpos=935 : ypos=2
IF slugnumber=6 THEN xpos=935 : ypos=315
IF slugnumber=7 THEN xpos=929 : ypos=583
IF MOUSEX()>xpos AND MOUSEX()<xpos+65 AND MOUSEY()>ypos AND MOUSEY()<ypos+155
hit=1
ELSE
hit=0
ENDIF
ENDFUNCTION hit