http://alpha-thema-online.uv.ro
Fa-ti si tu propriul forum, pe www.myforum.ro!
Pagina de start a forumului http://alpha-thema-online.uv.ro Autentificare Inregistrare FAQ Membri Cautare

Pagina de start a forumului http://alpha-thema-online.uv.ro » Exemple Coduri » Robotic Arm Game
Creaza un subiect nou  Raspunde la subiect Subiectul anterior :: Subiectul urmator 
Robotic Arm Game
MesajTrimis: 06/07/2007 09:34 Raspunde cu citat (quote)
Ad_Infinitum
Administrator
Administrator
Ad_Infinitum
Data inscrierii: 23/Iun/2007
Mesaje: 212




ACest cod creeaza o masa ce are diverse obiscte pe ea.In joc potzi lovi obiectele cu batzul ce se roteste si se apleaca .

Citat:

#CONSTANT CRATE_COUNT 10
#CONSTANT ARM_COUNT 6
#CONSTANT ARM_LENGTH 2.0
#CONSTANT DEFAULT_ANGLE 20.0
HALF_ARM_LENGTH# = ARM_LENGTH*0.5





set display mode 1280, 1024, 32
sync on
sync rate 0
autocam off
position camera 10, 10, 10
point camera 0, 0, 0
backdrop on
color backdrop 0
randomize timer()


`set directional light 0, -1, -1, -1
set point light 0, 10, 10, 10
set ambient light 0

`MAKE FLOOR
make object plain 2, 30, 30
position object 2, 0, 0.0, 0
point object 2, 0, 1, 0
color object 2, 0xFF77FF77





Type Coords
x#
y#
z#
EndType


colSelected as DWORD : colSelected = 0x66FF0000
colUnselected as DWORD : colUnselected = 0x66FFFFFF
colHomeBox as DWORD : colHomeBox = 0x660000FF
colCrates as DWORD : colCrates = 0x66FFFF00



`Arm Template
make object cylinder 1, ARM_LENGTH
scale object 1, 10, 100, 10
make mesh from object 1, 1

`Point template
delete object 1
make object sphere 1, ARM_LENGTH * 0.2, 24, 24
make mesh from object 2, 1

`Hide control point because its the root point
hide limb 1, 0
`Add an arm to the control point
add limb 1, 1, 1
offset limb 1, 1, 0.0, HALF_ARM_LENGTH#, 0.0
link limb 1, 0, 1

`The next arms can be made in a loop
for i = 2 to ARM_COUNT*2 step 2
`Create a new control point
add limb 1, i, 2
`Offset it by helf the length of a strut
offset limb 1, i, 0.0, HALF_ARM_LENGTH#, 0.0
`Link it to the last strut
link limb 1, i-1, i
`Color the joint unselected, but set the alpha to FF using BITWISE OR
color limb 1, i, (colUnselected || 0xFF000000)


`Add next arm
add limb 1, i+1, 1
`Offset it by helf the length of a strut
offset limb 1, i+1, 0.0, HALF_ARM_LENGTH#, 0.0
`Link it to the control point
link limb 1, i, i+1
`Color the arm unselected
color limb 1, i+1, colUnselected
next i

i = ARM_COUNT*2+2
`Create Final point, used for pickups
add limb 1, i, 2
`Offset it by helf the length of a strut
offset limb 1, i, 0.0, HALF_ARM_LENGTH#, 0.0
`Link it to the last strut
link limb 1, i-1, i
`Color the joint unselected, but set the alpha to FF using BITWISE OR
color limb 1, i, (colUnselected || 0xFF000000)
`Enable transparency
set object transparency 1, 3

`Make temp object for detecting tip collisions
make object plain 3, ARM_LENGTH * 0.2, ARM_LENGTH * 0.2
glue object to limb 3, 1, i
hide object 3


`Create Pickups
G as Coords
G.x# = object size x(2) * 0.5
G.z# = object size y(2) * 0.5

for i = 10 to 10+CRATE_COUNT
make object box i, 0.5+(rnd(5.0)*0.1), 0.5+(rnd(5.0)*0.1), 0.5+(rnd(5.0)*0.1)
position object i, rnd(G.x#) - (G.x# * 0.5), object size y(i)*0.5, rnd(G.z#) - (G.z# * 0.5)
yrotate object i, rnd(360)
color object i, colCrates
set object transparency i, 3
next i

`Make Home Crate
make object box 9, 1.5, 0.5, 1.5
position object 9, rnd(G.x#) - (G.x# * 0.5), 0.25, rnd(G.z#) - (G.z# * 0.5)
color object 9, colHomeBox
set object transparency 9, 3





`Declare some variables for control.
limbSelected = 0
mouseStatus = 0

`Color the selected limb in
color limb 1, limbSelected+1, colSelected



`LimbAngles
Dim LimbAngles(ARM_COUNT*2) as Coords
Dim TargetLimbAngles(ARM_COUNT*2) as Coords

for i = 0 to ARM_COUNT*2 step 2
LimbAngles(i).x# = 0.0
LimbAngles(i).y# = 0.0
LimbAngles(i).z# = 0.0

TargetLimbAngles(i).x# = 0.0
TargetLimbAngles(i).y# = 0.0
TargetLimbAngles(i).z# = DEFAULT_ANGLE
next i
`Exclusion - make sure the root strut is vertical
TargetLimbAngles(0).z# = 0.0


`Currently holding variable.. -1 if nothing, >=10 if holding
pickedUp = -1
CratesPutAway = 0


`Setup Arm Cam
make camera 1
set camera view 1, screen width() * 0.5, 0, screen width(), screen height() * .15
set camera aspect 1, (screen width() * 0.5) / (screen height() * .15)
color backdrop 1, 0
set current camera 0


frameTime# = 1.0
startTime = timer()
do
frameTime# = (frameTime# * 0.8) + ((timer() - startTime) * 0.2)
startTime = timer()
text 10, 10, "FPS: " + str$(screen fps())
text 10, 30, "SCORE: " + str$(CratesPutAway)

`position arm cam
camLimb = ARM_COUNT*2 : position camera 1, limb position x(1, camLimb), limb position y(1, camLimb) + 3.0, limb position z(1, camLimb)
camLimb = ARM_COUNT*2 + 2 : point camera 1, limb position x(1, camLimb), limb position y(1, camLimb), limb position z(1, camLimb)



`ALL ONCE-PER-CLICK STUFF GOES IN HERE
if mouseclick() <> mouseStatus
mouseStatus = mouseclick()
`Clear the mousemovement functions so the arms dont initially jump (ie movement AFTER the click is considered, not pre-click).
dx# = mousemovex()
dy# = mousemovey()

if mouseStatus && %0010
`Right mouse button
if pickedUp = -1
collVal = object collision(3,0)
if collVal > 9
pickedUp = collVal
position object pickedUp, 0, 0, 0
glue object to limb pickedUp, 1, ARM_COUNT*2+2
endif
else
unglue object pickedUp
pickedUp = -1
endif
endif
endif



`Check all objects are either on the floor or removed from being "put away"
for i = 10 to 10 + CRATE_COUNT
if object exist(i) AND i <> pickedUp
`Show score
strScore$ = left$(str$(object size(i)*100.0), 3)
if mid$(strScore$, len(strScore$)) = "." then strScore$ = left$(strScore$, len(strScore$)-1)

center text object screen x(i), object screen y(i), strScore$
if object collision(i, 2) = 0
position object i, object position x(i), object position y(i) - frameTime#*0.001, object position z(i)
if object collision(i, 9) then inc CratesPutAway, val(left$(str$(object size(i)*100.0), 3)) : delete object i
endif
endif
next i



`CHECK MOUSE WHEEL FOR STRUT CHANGE
dz# = mousemovez()
if dz# > 0
color limb 1, limbSelected+1, colUnselected
inc limbSelected, 2
if limb exist(1, limbSelected+1) = 0 then limbSelected = 0
color limb 1, limbSelected+1, colSelected
else
if dz# < 0
color limb 1, limbSelected+1, colUnselected
dec limbSelected, 2
if limbSelected < 0 then limbSelected = ARM_COUNT*2
color limb 1, limbSelected+1, colSelected
endif
endif


`THIS IS TO BE DONE WHILE EITHER LEFT OR RIGHT BUTTON IS HELD
if mouseStatus && %0011
if limbSelected = 0
dx# = mousemovex()
inc TargetLimbAngles(limbSelected).y#, dx#
else
dy# = mousemovey()
inc TargetLimbAngles(limbSelected).z#, dy#

`Set limb ranges
maxAngle# = 120.0
minAngle# = -120.0


`Check for limits
if TargetLimbAngles(limbSelected).z# > maxAngle#
TargetLimbAngles(limbSelected).z# = maxAngle#
else
if TargetLimbAngles(limbSelected).z# < minAngle#
TargetLimbAngles(limbSelected).z# = minAngle#
endif
endif
endif
endif


`LOOP THROUGH ALL JOINTS AND CURVE ANGLE TO THEM
for i = 0 to ARM_COUNT*2 step 2
LimbAngles(i).x# = curvevalue(TargetLimbAngles(i).x#, LimbAngles(i).x#, 100.0 / frameTime#)
LimbAngles(i).y# = curvevalue(TargetLimbAngles(i).y#, LimbAngles(i).y#, 100.0 / frameTime#)
LimbAngles(i).z# = curvevalue(TargetLimbAngles(i).z#, LimbAngles(i).z#, 100.0 / frameTime#)

rotate limb 1, i, LimbAngles(i).x#, LimbAngles(i).y#, LimbAngles(i).z#
next i

sync
loop



---------------------------------ScreenShot--------------------------------------







Robotic Arm Game Robotic Arm Game
Vezi profilul utilizatorului Trimite mesaj privat

Robotic Arm Game
 Pagina de start a forumului http://alpha-thema-online.uv.ro » Exemple Coduri
Nu puteti crea un subiect nou in acest forum
Nu puteti raspunde in subiectele acestui forum
Nu puteti modifica mesajele proprii din acest forum
Nu puteti sterge mesajele proprii din acest forum
Nu puteti vota in chestionarele din acest forum
Ora este GMT + 3 ore  
Pagina 1 din 1  

  
  
 Creaza un subiect nou  Raspunde la subiect  


Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro
    Powered by phpBB © 2001-2004 phpBB Group. phpBB Skin by Vjacheslav Trushkin.