Here's my entry.
Shoot the targets so far. It's not much more than the comp challenge said, "Target Practice". Plan on adding Levels, scoring, and targets that shoot back at higher levels.
` Coding Challenge Entry
` Author: RiiDii (Patrick Lewis)
` 24 March 2005
Randomize Timer()
Sync On
Sync Rate 60
Autocam Off: Position Camera 500,7,20: Set Camera Range .1,3000
Type Coordinates
x as Float
y as Float
z as Float
EndType
Global Object as Coordinates
Global Target as Coordinates
Global Camera as Coordinates
Global AI as Coordinates
Global Retical_Angle as Coordinates
Global Camera_Angle as Coordinates
Global Last_Bullet as DWORD
Global Bullet_Count
Global New_Bullet
Global TargetNum
New_Bullet=200
Position Mouse Screen Width()/2,Screen Height()/2
Make_Field()
Make_Target(4)
Make Object Box 1,5,10,5
Position Object 1,500,5,20
Hide Object 1
Set Object Collision to Boxes 1
Make Object Sphere 2,1,3,3
Set Object Collision Off 2
Set Object Collision To Boxes 2
Make Object Cylinder 3,1
Scale Object 3,20,500,20
Hide Object 2
Pitch Object Down 3,90
Fix Object Pivot 3
Make Mesh from Object 3,3
Delete Object 3
Make Object 3,3,0
Delete Mesh 3
Set Object Cull 3,0
Set Object Collision Off 3
Make Object Sphere 5,4
Pitch Object Down 5,90
Set Alpha Mapping On 5,30
Color Object 5,Rgb(255,0,0)
Set Object Emissive 5,rgb(100,0,0)
Fix Object Pivot 5
Disable Object zDepth 5
Make_Flash()
Do
Player()
Bullet()
If Rnd(100)=1 Then New_Target()
Ink Rgb(255,255,255),0
Set Cursor 0,0
Print TargetNum
Sync
Loop
Function Player()
Turn Object Left 1,(LeftKey()-RightKey())*3
Move Object 1,(UpKey()-DownKey())*3
Return_Object(1)
Position Object 1,Object.x,Get Ground Height(1,Object.x,Object.z)+5,Object.z
Return_Object(1)
Position Object 5,Object.x,Object.y,Object.z
Set Object To Object Orientation 5,1
Retical_Angle.y=Retical_Angle.y+MouseMoveX()*.1
Retical_Angle.x=Retical_Angle.x-MouseMoveY()*.1
If Retical_Angle.y>45 then Retical_Angle.y=45
If Retical_Angle.y<-45 then Retical_Angle.y=-45
If Retical_Angle.x>20 then Retical_Angle.x=20
If Retical_Angle.x<-20 then Retical_Angle.x=-20
Turn Object Right 5,Retical_Angle.y
Pitch Object Up 5,Retical_Angle.x
Move Object 5,200
PC=Object Collision(1,0)
Set Cursor 0,0:Print PC
Select PC
Case 901
Do
Return_Object(1)
Position Object 1,Object.x,Object.y,Object.z+.5
If Object Collision(1,901)=0 Then Exit
Loop
EndCase
Case 902
Do
Return_Object(1)
Position Object 1,Object.x+.5,Object.y,Object.z
If Object Collision(1,902)=0 Then Exit
Loop
EndCase
Case 903
Do
Return_Object(1)
Position Object 1,Object.x-.5,Object.y,Object.z
If Object Collision(1,903)=0 Then Exit
Loop
EndCase
Case 904
Do
Return_Object(1)
Position Object 1,Object.x,Object.y,Object.z-.5
If Object Collision(1,904)=0 Then Exit
Loop
EndCase
Case Default
If PC>600 and PC<900
Do
Return_Object(1)
Return_Target(PC)
Position Object 2,Object.x,Object.y,Object.z
Point Object 2,Target.x,Target.y,Target.z
Move Object 2,-.5
Return_AI()
Position Object 1,AI.x,AI.y,AI.z
PC=Object Collision(1,0)
If PC<600 or PC>900 then Exit
Loop
Endif
EndCase
EndSelect
Return_Object(1)
Position Object 3,Object.x,Object.y+1,Object.z
Set Object To Object Orientation 3,1
Move Object Right 3,1
Return_Target(5)
Point Object 3,Target.x,Target.y,Target.z
Position Camera Object.x,Object.y+2,Object.z
Move Object 1,10
Return_Object(1)
Point Camera Object.x,Object.y,Object.z
Move Object 1,-10
Hide Object 6
If MouseClick()=1 then Make_Bullet()
EndFunction
Function Make_Bullet()
If Timer()-Last_Bullet<200 then ExitFunction
Last_Bullet=Timer()
If Object Exist(New_Bullet) then Delete Object New_bullet
Make Object Sphere New_Bullet,.3,1,1
Scale Object New_Bullet,100,100,200
Set Object Collision To Boxes New_Bullet
Return_Object(3)
Return_Target(5)
Position Object New_Bullet,Object.x,Object.y,Object.z
Point Object New_Bullet,Target.x,Target.y,Target.z
Return_Object(New_Bullet)
Position Object 6,Object.x,Object.y,Object.z
Set Object To Object Orientation 6,New_Bullet
Show Object 6
Move Object 6,2.6
Roll Object Right 6,rnd(359)
New_Bullet=New_Bullet+1
If New_Bullet>248 Then New_Bullet=200
EndFunction
Function Bullet()
Bullet_Count=0
For i = 200 to 249
If Object Exist(i)
Bullet_Count=Bullet_Count+1
For j = 1 to 20
If Abs(New_Bullet-i)<4
Ink rgb(50+j*3,50+j*3,50+j*3),0
Dot Object Screen x(i),Object Screen y(i)+4
Endif
Move Object i,2
Return_Object(i)
BC=Object Collision(i,0)
If BC>10
If BC>1000 Then Delete Object BC
Delete Object i
Exit
Else
If Object.x<-100 or Object.x>1100 or Object.z<-100 or Object.z>1100 Or Object.y<Get Ground Height(1,Object.x,Object.z)
Delete Object i
Exit
Endif
Endif
Next j
Endif
Next i
Endfunction
Function Make_Target(ObjectID)
Make Object Box ObjectID,5,10,5
Make Mesh From Object ObjectID,ObjectID
Delete Object ObjectID
Make Object Sphere ObjectID,.01,1,1
Add Limb ObjectID,1,ObjectID
OffSet Limb ObjectID,1,0,5,0
Delete Mesh ObjectID
If Bitmap Exist(1) Then Delete Bitmap 1
Create Bitmap 1,128,256
Set Current Bitmap 1
Ink rgb(255,255,255),0
Box 0,0,127,256
Color$="Red"
For i# =0.0 to 60.0 step .5
If i#/10.0=Int(i#/10.0)
If Color$="Red"
Ink 0,0
Color$="Black"
Else
ink rgb(255,0,0),0
Color$="Red"
Endif
Endif
Circle 63,63,i#
Next i
Get Image ObjectID,0,0,127,255,1
Texture Limb ObjectID,1,ObjectID
Set Current Bitmap 0
EndFunction
Function Make_Field()
If Matrix Exist(1) Then Delete Matrix 1
Make Matrix 1,1000,1000,100,100
Randomize Matrix 1,8
If Bitmap Exist(1) Then Delete Bitmap 1
Create Bitmap 1,128,128
Set Current Bitmap 1
Ink RGB(0,128,0),0
Box 0,0,127,127
For i=1 to 200
Dot rnd(127),rnd(127),Rgb(10,Rnd(255),10)
Next i
Get Image 999,0,0,127,127
Prepare Matrix Texture 1,999,1,1
Update Matrix 1
Make Object Box 901,1000,30,2
Make Object Box 902,1000,30,2
Make Object Box 903,1000,30,2
Make Object Box 904,1000,30,2
Position Object 901,500,10,0
Position Object 902,0,10,500
Turn Object Left 902,90
Position Object 903,1000,10,500
Position Object 904,500,10,1000
Turn Object Right 903,90
`Turn Object Left 904,90
Make Object Sphere 601,10,8,8
Make Object Cylinder 602,5
Scale Object 602,30,200,30
Make Mesh From Object 602,602
Add Limb 601,1,602
Delete Object 602
Delete Mesh 602
Offset Limb 601,1,0,2.5,0
Offset Limb 601,0,0,12,0
Texture Limb 601,0,999
Color Limb 601,1,RGB(128,64,64)
Make Object Sphere 602,8,8,8
Color Object 602,RGB(109,103,78)
For i = 1 to rnd(50)+rnd(50)+rnd(50)+rnd(50)+rnd(50)+rnd(50)+rnd(50)
cln=rnd(1)+1
Clone Object 602+i,600+cln
x=rnd(980)+10:z=rnd(980)+10
Position Object 602+i,x,Get Ground Height(1,x,z),z
Set Object Collision To Boxes 602+i
Next i
x=rnd(980)+10:z=rnd(980)+10
Position Object 601,x,Get Ground Height(1,x,z),z
Set Object Collision To Boxes 601
x=rnd(980)+10:z=rnd(980)+10
Position Object 602,x,Get Ground Height(1,x,z),z
Set Object Collision To Boxes 602
EndFunction
Function Make_Flash()
Make Object Cone 6,.3
Pitch Object Up 6,90
Fix Object Pivot 6
Make Mesh from Object 6,6
Delete Object 6
If Bitmap Exist(1) Then Delete Bitmap 1
Create Bitmap 1,128,128
Set Current Bitmap 1
Ink 0,0
Box 0,0,127,127
Ink Rgb(255,0,0),0
x=0
Do
x=x+rnd(5)+1
if x>126 Then Exit
Line x,0,x,127
Loop
Get Image 6,0,0,127,127
Make Object 6,6,6
Delete Mesh 6
Set Current Bitmap 0
Delete Bitmap 1
Set Object Cull 6,0
Set Object Collision Off 6
Set Alpha Mapping On 6,80
Set Object Emissive 6,Rgb(200,100,100)
Hide Object 6
EndFunction
Function New_Target()
For i = 1001 to 1020
If Object Exist(i)=0 Then Exit
Next i
If i>1020 Then ExitFunction
TargetNum = i
Clone Object i,4
Return_Object(1)
Do
r#=Rnd(200.0)+50.0
x#=sin(Rnd(359.0))*r#+Object.x
z#=cos(Rnd(359.0))*r#+Object.z
Position Object i,x#,0,z#
TC=Object Collision(i,0)
if x#>10 and x#<990 and z#>10 and z#<990 and TC=0 Then Exit
Loop
Turn Object Right i,Rnd(360)
`Pitch Object Down i,90
EndFunction
Function Return_Target(TargetID)
Target.x=Object Position X(TargetID):Target.y=Object Position Y(TargetID):Target.z=Object Position Z(TargetID)
EndFunction
Function Return_Object(ObjectID)
Object.x=Object Position X(ObjectID):Object.y=Object Position Y(ObjectID):Object.z=Object Position Z(ObjectID)
EndFunction
Function Return_AI()
AI.x=Object Position X(2):AI.y=Object Position Y(2):AI.z=Object Position Z(2)
EndFunction
Function Return_Camera()
Camera.x=Camera Position X():Camera.y=Camera Position Y():Camera.z=Camera Position Z()
EndFunction
Function Make_AI()
If Object Exist(2) Then Delete Object 2
Make Object Sphere 2,1,6,6
EndFunction
"Droids don't rip your arms off when they lose." -H. Solo
REALITY II