Dreamland by Dragonboy8th Jul 2005 12:53
|
---|
Summary A small Shooting game. Description You were minding your buisness until a portal opened and you were suck into dreamworld!!! Code ` This code was downloaded from The Game Creators ` It is reproduced here with full permission ` http://www.thegamecreators.com Rem Setup sync Sync On Sync Rate 30 Draw to front Backdrop on Set camera range 1,3000 Autocam off Hide mouse Fog on Fog distance 3000 Fog color RGB(128,128,128) Color Backdrop RGB(128,128,128) Rem make matrix Make matrix 1,10000,10000,20,20 Rem texture matrix Load image "Grass09.bmp",1 Prepare matrix texture 1,1,1,1 Fill matrix 1,0,1 rem Make Gun Make object cylinder 1,2 XRotate Object 1,90 Fix object pivot 1 Scale object 1,100,100,500 position object 1,0,-7,15 Lock object on 1 rem make HUD Make object Plain 200,1,1 position object 200,-2.7,1.9,4 Lock object on 200 ghost object on 200 Make object Plain 201,1,1 position object 201,2.7,1.9,4 Lock object on 201 ghost object on 201 Load image "score.bmp",201 Texture object 201,201 rem Load and create hud bitmaps. Load Bitmap "Score.bmp",2 Create Bitmap 1,50,50 rem fire texture Load Image "Resus.bmp",2 rem Make Bullet Make Object Sphere 2,2 texture object 2,2 Hide Object 2 rem Make MonsterBullet Make Object Sphere 102,2 texture object 102,2 Hide Object 102 rem Make Explosion Make Object Sphere 30,20 texture object 30,2 ghost object on 30 Hide Object 30 Make Object Sphere 31,20 texture object 31,2 ghost object on 31 Hide Object 31 rem Make Monster Explosion Make Object Sphere 130,20 texture object 130,2 ghost object on 130 Hide Object 130 Make Object Sphere 131,20 texture object 131,2 ghost object on 131 Hide Object 131 rem load particles For x = 0 to 10 Make object plain x+10,5,5 Texture object x+10,2 Set object x+10,1,0,0 Ghost object on x+10 Hide object x+10 Next x rem load Monsterparticles Load Image "fire.bmp",2 For x =100 to 110 Make object plain x+10,5,5 Texture object x+10,2 Set object x+10,1,0,0 Ghost object on x+10 Hide object x+10 Next x rem intialize particle counter Pn=10 MPn=110 rem load sounds load music "xfiles.mid",1 : loop music 1 Load 3Dsound "Rifle.wav",2 Load 3Dsound "Rifle.wav",102 Load 3Dsound "HAHAHA.wav",3 Load 3Dsound "Scream1.wav",103 rem Randomize the matrix randomize matrix 1,125 rem create decorative objects load image "cottag02.bmp",300 t=300 For x = 1 to 9 For z = 1 to 9 Make object cube t,100 Scale object t,100,600,100 y = get ground height(1,x*1000,z*1000) position object t,x*1000,y+275,z*1000 texture object t,300 scale object texture t,1,-6 inc t next z next x Rem Load Target Load object "idle.x",3 Append Object "idle.x",3,21 Yrotate object 3,180 Fix Object Pivot 3 Loop Object 3 mX# = 5000 mZ# = 5000 mY# = Get Ground Height(1,5000,5000) X# = 5500 Y# = Get Ground Height(1,5500,5500) Z# = 5500 MonsterScore=0 PlayerScore=0 Gosub PlaceMonster Gosub PlacePlayer Rem Main loop Do set cursor 550,20 print "MScore: ",MonsterScore set cursor 550,40 print "PScore: ",PlayerScore print total object frames(3) oldcAY# = cAY# oldcAX# = cAX# oldX#=X# oldY#=Y# oldZ#=Z# cAY# = WrapValue(cAY#+MousemoveX()*0.2) cAX# = WrapValue(cAX#+MousemoveY()*0.2) caZ# = Camera angle Z() Rem Control input for camera If Upkey()=1 XTest# = Newxvalue(X#,cAY#,7) ZTest# = Newzvalue(Z#,cAY#,7) If XTest#>0 and XTest#<10000 and ZTest#>0 and ZTest#<10000 X#=XTest# Z#=ZTest# Endif Endif If Downkey()=1 XTest# = Newxvalue(X#,Wrapvalue(cAY#-180),7) ZTest# = Newzvalue(Z#,Wrapvalue(cAY#-180),7) If XTest#>0 and XTest#<10000 and ZTest#>0 and ZTest#<10000 X#=XTest# Z#=ZTest# Endif Endif If Leftkey()=1 XTest# = Newxvalue(X#,Wrapvalue(cAY#-90),7) ZTest# = Newzvalue(Z#,Wrapvalue(cAY#-90),7) If XTest#>0 and XTest#<10000 and ZTest#>0 and ZTest#<10000 X#=XTest# Z#=ZTest# Endif Endif If Rightkey()=1 XTest# = Newxvalue(X#,Wrapvalue(cAY#+90),7) ZTest# = Newzvalue(Z#,Wrapvalue(cAY#+90),7) If XTest#>0 and XTest#<10000 and ZTest#>0 and ZTest#<10000 X#=XTest# Z#=ZTest# Endif Endif Rem Rotate camera cTestX#=WrapValue(cAX#-180) if cTestX# > 225 then cAX#=45 if cTestX# < 135 then cAX#=315 YRotate camera CurveAngle(cAY#,oldcAY#,24) XRotate camera CurveAngle(cAX#,oldcAX#,24) Y# = Get ground height(1,X#,Z#)+35 rem collision detection if DecoCollide(X#,Y#,Z#) = 1 X#=oldX# Y#=oldY# Z#=oldZ# Endif Rem Position Camera Position Camera X#,Y#,Z# Rem Position Listener Position Listener X#,Y#,Z# Rotate Listener 0,cAY#,0 Rem Shoot bullet if Mouseclick()=1 and Explode =0 if BulletLife=0 or BulletLife<50 Position object 2,X#,Y#-7,Z# Set object to camera orientation 2 BulletLife =120 show object 2 Loop sound 2 Endif Endif If BulletLife > 0 then Gosub ShootBullet If MonsterBulletLife > 0 then Gosub MonsterShootBullet If Explode > 0 then Gosub ExplodeRocket If MonsterExplode > 0 Gosub MonsterExplodeRocket else Gosub MonsterAI Endif Rem make radar Copy Bitmap 2,1 set current bitmap 1 ink rgb(0,0,255),rgb(0,0,0) PRX#=X#/200 PRZ#=50-(Z#/200) Circle PRX#,PRZ#,1 ink rgb(255,0,0),rgb(0,0,0) MRX#=mX#/200 MRZ#=50-(mZ#/200) Circle MRX#,MRZ#,1 Get image 200,0,0,50,50 set current bitmap 0 texture object 200,200 ink rgb(255,128,128),rgb(0,0,0) Rem Refresh Screen Sync Loop Rem check for collision with wall decorations Function DecoCollide(X#,Y#,Z#) for u = 1 to 9 for v = 1 to 9 if X#>u*1000-60 if X#<u*1000+60 if Z#>v*1000-60 if Z#<v*1000+60 if Y# < Get ground height(1,u*1000,v*1000)+575 Collide=1 Exitfunction Collide endif endif endif endif endif next v next u Collide=0 Endfunction Collide Rem Shoot player bullet ShootBullet: Dec BulletLife Move object 2,12 bX#=Object position X(2) bY#=Object position Y(2) bZ#=Object position Z(2) inc Pn if Pn=21 then Pn=10 Scale object Pn,100,100,100 Position object Pn,bX#,bY#,bZ# point object Pn,X#,Y#,Z# Zrotate object Pn,rnd(180) Show object Pn for x = 1 to 10 scale object int((Wrapvalue((Pn-9+x)*36))/36)+10,100+x*25,100+x*25,100+x*25 set cursor 10,10 next x if bY# < Get Ground height(1,bX#,bZ#) then BulletLife=0 Position sound 2,bX#,bY#,bZ# set cursor 10,10 if Sqrt((mX# - bX#)^2 + (mY#+25 - bY#)^2 + (mZ# - bZ#)^2) <20 Gosub PlaceMonster inc PlayerScore MonsterBulletLife = 1 BulletLife=0 endif if DecoCollide(bX#,bY#,bZ#) = 1 then BulletLife = 0 if BulletLife = 0 Hide object 2 stop sound 2 for x=10 to 20 hide object x next x Explode = 20 endif Return Rem Explode bullet ExplodeRocket: Position object 30,bX#,bY#,bZ# Show object 30 Position object 31,bX#,bY#,bZ# Show object 31 EScale=20*(30-Explode) Scale object 30,EScale,EScale,EScale Yrotate object 30,WrapValue(Explode*37) Scale object 31,EScale/1.5,EScale/1.5,EScale/1.5 Yrotate object 31,WrapValue(359-Explode*37) Dec Explode If Explode = 0 then hide object 30: Hide object 31 If Explode=18 position sound 3,bX#,bY#,bZ# play sound 3 endif If Explode < 15 then position sound 3,X#,Y#,Z# Return Rem Explode monster bullet MonsterExplodeRocket: Position object 130,MbX#,MbY#,MbZ# Show object 130 Position object 131,MbX#,MbY#,MbZ# Show object 131 EScale=20*(30-MonsterExplode) Scale object 130,EScale,EScale,EScale Yrotate object 130,WrapValue(MonsterExplode*37) Scale object 131,EScale/1.5,EScale/1.5,EScale/1.5 Yrotate object 131,WrapValue(359-MonsterExplode*37) Dec MonsterExplode If MonsterExplode = 0 then hide object 130: Hide object 131 If MonsterExplode=18 position sound 103,X#,Y#,Z# play sound 103 endif If MonsterExplode < 15 then position sound 103,X#,Y#,Z# Return Rem Simple AI for guided monster misile MonsterAI: Point object 3,X#,Y#,Z# If AvoidDeco >0 mA# = Object Angle Y(3) Dec AvoidDeco Yrotate object 3,WrapValue(mA#+AvoidDeco*60) endif Rem Position Monster at new location Position Object 3,mX#,mY#,mZ# Rem check distance from player PDist=Sqrt((mX# - X#)^2 + (mY#+25 - Y#)^2 + (mZ# - Z#)^2) Rem If the player is within range shoot bullet if PDist<1500 if MonsterBulletLife=0 or MonsterBulletLife < 500-Pdist/10 Point object 3,X#,Y#-25,Z# If BulletAvoidDeco > 0 CornerAim = Rnd(1) mA# = object angle Y(3) if CornerAim = 0 then Yrotate Object 3,WrapValue(mA#+BulletAvoidDeco*10) if CornerAim = 1 then Yrotate Object 3,WrapValue(mA#+BulletAvoidDeco*-16) Dec BulletAvoidDeco Endif If ShootUp > 0 mA# = object angle X(3) XRotate Object 3,WrapValue(mA#+ShootUp*-8) Dec ShootUp Endif Position object 102,mX#,mY#+25,mZ# Set object to object orientation 102,3 MonsterBulletLife =500 show object 102 Loop sound 102 Rem Play idle animation Loop Object 3,0,20 Endif Endif if PDist>1000 Rem Store old location OldmX# = mX# OldmZ# = mZ# OldmY# = mY# Rem Play walking animation Loop Object 3,21,46 Rem Move monster Move Object 3,7 Rem Get new position mX# = Object Position X(3) mZ# = Object Position Z(3) mY# = Get Ground Height(1,mX#,mZ#) Rem Check for Decoration collision If DecoCollide(mX#,mY#,mZ#) = 1 and AvoidDeco = 0 mX# = OldmX# mZ# = OldmZ# mY# = OldmY# AvoidDeco = 3 Endif Endif Return Rem Shoot Monster bullet MonsterShootBullet: Dec MonsterBulletLife Move object 102,12 MbX#=Object position X(102) MbY#=Object position Y(102) MbZ#=Object position Z(102) inc MPn if MPn=121 then MPn=110 Scale object MPn,100,100,100 Position object MPn,MbX#,MbY#,MbZ# Position sound 102,MbX#,MbY#,MbZ# point object MPn,X#,Y#,Z# Zrotate object MPn,rnd(180) Show object MPn for x = 1 to 10 scale object int((Wrapvalue((MPn-9+x)*36))/36)+110,100+x*25,100+x*25,100+x*25 next x if MbY# < Get Ground height(1,MbX#,MbZ#) MonsterBulletLife=0 ShootUp=3 endif Pdist=Sqrt((X# - MbX#)^2 + (Y#+25 - MbY#)^2 + (Z# - MbZ#)^2) if Pdist<50 GoSub PlacePlayer MonsterBulletLife = 0 inc MonsterScore endif Rem guided missile if Pdist <500+PlayerScore*100 and Pdist>250 then Point object 102,X#,Y#,Z# if Pdist < 100 then point object 102,X#,Y#,Z# if DecoCollide(MbX#,MbY#,MbZ#) = 1 MonsterBulletLife = 0 BulletAvoidDeco = BulletAvoidDeco + 2 Endif if MonsterBulletLife = 0 Hide object 102 stop sound 102 for x=110 to 120 hide object x next x MonsterExplode = 20 endif Return PlaceMonster: mX#=X# mY#=Y# mZ#=Z# While Sqrt((X# - MX#)^2 + (Y#+25 - MY#)^2 + (Z# - MZ#)^2)<1000 mX#=rnd(10000) mZ#=rnd(10000) mY#= get ground height(1,mX#,mZ#) If DecoCollide(mX#,mY#,mZ#) = 1 mX#=X# mY#=Y# mZ#=Z# endif EndWhile Position object 3,mX#,mY#,mZ# Return PlacePlayer: X#=mX# Y#=mY# Z#=mZ# While Sqrt((X# - mX#)^2 + (Y#+25 - mY#)^2 + (Z# - mZ#)^2)<1000 X#=rnd(10000) Z#=rnd(10000) Y#= get ground height(1,X#,Z#) If DecoCollide(X#,Y#,Z#) = 1 X#=mX# Y#=mY# Z#=mZ# endif EndWhile Position camera X#,Y#,Z# Point camera mX#,mY#,mZ# Return |