I have a little game where you click on fireworks and blow them up. But it's only picking the most recently created firework entity.
Example: 2 fireworks shoot up at a 10 loop delay between them.
And you try to click on the second one but it doesn't explode . Click on the first one first then it explodes and then you can explode the second one.
Code:
If you need the media, just say so. Though its just some basic text and sprites.
Example: 2 fireworks shoot up at a 10 loop delay between them.
And you try to click on the second one but it doesn't explode . Click on the first one first then it explodes and then you can explode the second one.
Code:
Print "Loading Includes..." Include "Includes/DevilParticleSystem.bb" Include "includes/LIB_Juicy_fonts.bb" Print "Setting up Graphics..." Graphics3D 800,600,32 SetBuffer BackBuffer() Print "Creating Types..." ClearTextureFilters() Type fire Field xv#,yv#,zv# Field s,score,r_ang# End Type Type part Field xv#,yv#,zv# Field s End Type Type em Field ent End Type Print "Creating Variables..." Global level=1,stage=1,stagetime,fm,cam,l,f_tex,tmp1,tmp2,s_50,s_100,score,num_fires,mouse Const YV_DECREASE#=.005 Print "Init Game..." cam=CreateCamera() MoveEntity cam,0,20,-20 InitParticles(cam) fm=CreateMesh() surf=CreateSurface(fm) v0=AddVertex(surf,0,0,0,0,2) v1=AddVertex(surf,0,2,0,0,0) v2=AddVertex(surf,2,2,0,2,0) v3=AddVertex(surf,2,0,0,2,2) AddTriangle(surf,v0,v1,v2) AddTriangle(surf,v0,v2,v3) HideEntity fm f_tex=LoadTexture("media/firework.jpg",4) ScaleTexture f_tex,MeshWidth(fm),MeshHeight(fm) back=LoadSprite("backgrounds/skyline01.jpg") MoveEntity back,0,20,-18 ScaleSprite back,2,2 score_spr=LoadSprite("media/score.png") MoveEntity score_spr,-1.5,18.7,-18 ScaleSprite score_spr,.4,.4 score_font=JF_Load_Font("includes/PinkShadow.png") mouse=LoadImage("media/pointer.png") Print "Loading Sprites..." LoadScoreSprites() LoadParticles() l=CreateLight() AmbientLight 255,255,255 Print "Successful Load" Cls StageIntro(stage) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; While Not KeyDown(1) U_Stage() U_Fire() U_Parts() Cls UpdateParticles() UpdateWorld RenderWorld DrawImage mouse,MouseX(),MouseY() Jf_Text(score_font,200,GraphicsHeight()-100,score) Flip Wend FreeParticles() End ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function U_Stage() Select level Case 1 Select stage Case 1 If stagetime=0 Then CreateFire(-3,0,0,.02,.5,0,100) If stagetime=100 Then CreateFire(3,0,0,-.02,.5,0,50) If stagetime=200 Then CreateFire(-3,0,0,.08,.5,0,50) If stagetime=250 Then CreateFire(-10,0,0,.03,.5,0,50) If stagetime=500 Then CreateFire(10,0,0,-.04,.55,0,50) If stagetime=600 Then CreateFire(10,0,0,-.04,.55,0,50) If stagetime=700 Then CreateFire(0,0,0,0,.35,0,50) If stagetime=700 Then CreateFire(11,0,0,-.04,.45,0,50) If stagetime=700 Then CreateFire(-11,0,0,.04,.45,0,50) If stagetime=800 Then CreateFire(-15,0,0,.09,.55,0,50) If stagetime=880 Then CreateFire(5,0,0,-.09,.55,0,50) If stagetime=960 Then CreateFire(-5,0,0,.09,.55,0,50) If stagetime>1200 And num_fires=0 Then WinStage() Case 2 If stagetime=10 Then CreateFire(0,0,0,0,.6,0,50) If stagetime=100 Then CreateFire(-10,0,0,0,.5,0,50) If stagetime=100 Then CreateFire(10,0,0,0,.5,0,50) End Select End Select stagetime=stagetime+1 End Function ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function U_Fire() For f.fire=Each fire MoveEntity f\s,f\xv#,f\yv#,f\zv# f\yv#=f\yv#-YV_DECREASE# If MouseHit(1) Then If CameraPick(cam,MouseX(),MouseY())=f\s Then CreateExplosion(f\s) If f\score=50 CreatePart(f\s,s_50,f\score) If f\score=100 CreatePart(f\s,s_100,f\score) HideEntity f\s Delete f num_fires=num_fires-1 EndIf EndIf Next End Function ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function U_Parts() For p.part=Each part Next End Function ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function CreateExplosion(ent) e.em=New em e\ent=CreateSprite() PositionEntity e\ent,EntityX(ent)+(MeshWidth(ent)/2),EntityY(ent)+(MeshHeight(ent)/2),EntityZ(ent) SetEmitter(e\ent,tmp1) SetEmitter(e\ent,tmp2) HideEntity e\ent Delete e End Function ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function LoadParticles() ;Template1 - Smoke tmp1 = CreateTemplate() SetTemplateEmitterBlend(tmp1, 1) SetTemplateInterval(tmp1, 1) SetTemplateEmitterLifeTime(tmp1, 10) SetTemplateParticleLifeTime(tmp1, 50, 65) SetTemplateTexture(tmp1, "Media\Smoke.png", 2) SetTemplateOffset(tmp1, -.1, .1, -1.1, -.9,0,0) ;-.1, .1) SetTemplateVelocity(tmp1, -.1, .1, -.1, .1,0,0) ;-.01, .01) SetTemplateRotation(tmp1, -3, 3) SetTemplateAlpha(tmp1, .3) SetTemplateAlphaVel(tmp1, True) SetTemplateSize(tmp1, 1.5, 1.5, .7, 1.5) ;Smokefire t0 = CreateTemplate() SetTemplateEmitterBlend(t0, 3) SetTemplateInterval(t0, 1) SetTemplateParticlesPerInterval(t0, 3) SetTemplateEmitterLifeTime(t0, 10) SetTemplateParticleLifeTime(t0, 5, 10) SetTemplateTexture(t0, "Media\Fire.jpg", 3) SetTemplateOffset(t0, -.1, .1, -1.1, -.9,0,0); -.1, .1) SetTemplateVelocity(t0, -.1, .1, -.1, .1,0,0); -.01, .01) SetTemplateRotation(t0, -3, 3) SetTemplateAlphaVel(t0, True) SetTemplateSize(t0, .5, .5, .7, 1.5) SetTemplateBrightness(t0, 3) SetTemplateSubTemplate(tmp1, t0) ;Template2 - Explosion tmp2 = CreateTemplate() SetTemplateEmitterBlend(tmp2, 3) SetTemplateInterval(tmp2, 1) SetTemplateParticlesPerInterval(tmp2, 30) SetTemplateEmitterLifeTime(tmp2, 1) SetTemplateParticleLifeTime(tmp2, 70, 85) SetTemplateTexture(tmp2, "Media\Spark.jpg", 3) SetTemplateOffset(tmp2, -.2, .2, -.2, .2,0,0); -.2, .2) SetTemplateVelocity(tmp2, -.1, .1, -.1, .2,0,0) ;-.1, .1) SetTemplateAlignToFall(tmp2, True, 45) SetTemplateGravity(tmp2, .0015) SetTemplateAlphaVel(tmp2, True) SetTemplateSize(tmp2, .45, .1) SetTemplateColors(tmp2, $FF0000, $FF0000) SetTemplateBrightness(tmp2, 8) ;Blue explosion t0 = CreateTemplate() SetTemplateEmitterBlend(t0, 3) SetTemplateInterval(t0, 1) SetTemplateParticlesPerInterval(t0, 30) SetTemplateEmitterLifeTime(t0, 1) SetTemplateParticleLifeTime(t0, 70, 85) SetTemplateTexture(t0, "Media\Spark.jpg", 3) SetTemplateOffset(t0, -.2, .2, -.2, .2,0,0); -.2, .2) SetTemplateVelocity(t0, -.1, .1, -.1, .2,0,0); -.1, .1) SetTemplateAlignToFall(t0, True, 45) SetTemplateGravity(t0, .0015) SetTemplateAlphaVel(t0, True) SetTemplateSize(t0, .45, .1) SetTemplateColors(t0, $0000FF, $0000FF) SetTemplateBrightness(t0, 8) SetTemplateSubTemplate(tmp2, t0) ;Yellow t0 = CreateTemplate() SetTemplateEmitterBlend(t0, 3) SetTemplateInterval(t0, 1) SetTemplateParticlesPerInterval(t0, 70) SetTemplateEmitterLifeTime(t0, 1) SetTemplateParticleLifeTime(t0, 40, 85) SetTemplateTexture(t0, "Media\Spark.jpg", 3) SetTemplateOffset(t0, -.2, .2, -.2, .2,0,0); -.2, .2) SetTemplateVelocity(t0, -.05, .05, -.03, .1,0,0); -.05, .05) SetTemplateGravity(t0, .00125) SetTemplateAlphaVel(t0, True) SetTemplateSize(t0, .3, .3) SetTemplateBrightness(t0, 3) SetTemplateSubTemplate(tmp2, t0) End Function ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function CreateFire(x#,y#,z#,xv#,yv#,zv#=0,score_addition) f.fire=New fire f\s=CopyEntity(fm) f\xv#=xv# f\yv#=yv# f\zv#=zv# f\score=score_addition EntityTexture f\s,f_tex PositionEntity f\s,x#,y#,z#-2 RotateEntity f\s,0,0,-f\xv#*200 EntityPickMode f\s,2 num_fires=num_fires+1 End Function ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function CreatePart(ent,score_spr,add_to_score) p.part=New part p\s=CreateSprite() PositionEntity p\s,EntityX(ent),EntityY(ent),EntityZ(ent)-.5 SetEmitter(p\s,score_spr) HideEntity(p\s) Delete p score=score+add_to_score End Function ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function FirePicked() For f.fire=Each fire If CameraPick(cam,MouseX(),MouseY())=f\s And MouseHit(1) Then Return f\s:Else Return 0 Next End Function ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function LoadScoreSprites() s_50 = CreateTemplate() SetTemplateEmitterBlend(s_50, 1) SetTemplateInterval(s_50, 5) SetTemplateEmitterLifeTime(s_50, 5) SetTemplateParticleLifeTime(s_50, 130, 145) SetTemplateTexture(s_50, "Media\s_50.png", 2, 1) SetTemplateOffset(s_50, -.3, .3, -.3, .3, -.3, .3) SetTemplateVelocity(s_50, -.02, .02, -.02, -.04, -0.02, -0.07) SetTemplateSize(s_50, 1, 1, 1, 1) SetTemplateSizeVel(s_50, .01, 1) SetTemplateAlpha(s_50, .9) SetTemplateAlphaVel(s_50, True) s_100 = CreateTemplate() SetTemplateEmitterBlend(s_100, 1) SetTemplateInterval(s_100, 5) SetTemplateEmitterLifeTime(s_100, 5) SetTemplateParticleLifeTime(s_100, 130, 145) SetTemplateTexture(s_100, "Media\s_100.png", 2, 1) SetTemplateOffset(s_100, -.3, .3, -.3, .3, -.3, .3) SetTemplateVelocity(s_100, -.02, .02, -.02, -.04, -0.02, -0.07) SetTemplateSize(s_100, 1, 1, 1, 1) SetTemplateSizeVel(s_100, .01, 1) SetTemplateAlpha(s_100, .9) SetTemplateAlphaVel(s_100, True) End Function ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function StageIntro(num$) Local start,dir,ang# FlushKeys() FlushMouse() inspr=LoadSprite("media/stage"+num$+".png",4) MoveEntity inspr,0,20,-18.5 SpriteViewMode inspr,2 Repeat start=start+1 If GetKey()<>0 Or start=400 Or GetMouse()<>0 Then Exit If dir=1 Then ang#=ang#+.2 If dir=0 Then ang#=ang#-.2 If ang#<-3 Then dir=1 If ang#>3 Then dir=0 RotateEntity inspr,0,ang#,0 UpdateWorld RenderWorld Flip Forever HideEntity inspr FlushMouse() FlushKeys() FreeEntity inspr End Function ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function WinStage() Local start,dir,ang# FlushKeys() FlushMouse() clspr=LoadSprite("media/stage_cleared.png",4) MoveEntity clspr,0,20,-18.5 SpriteViewMode clspr,2 Repeat start=start+1 If GetKey()<>0 Or start=400 Or GetMouse()<>0 Then Exit If dir=1 Then ang#=ang#+.2 If dir=0 Then ang#=ang#-.2 If ang#<-3 Then dir=1 If ang#>3 Then dir=0 RotateEntity clspr,0,ang#,0 UpdateWorld RenderWorld Flip Forever HideEntity clspr FlushMouse() FlushKeys() FreeEntity clspr stagetime=0 stage=stage+1 End Function
If you need the media, just say so. Though its just some basic text and sprites.