Ahhh, it's a new version, with new features.. like map names, flipping through pages of moves and clearing the queue. (See TAB instructions)
Oh, also featuring the premieres of... The MAMMOTH and The MAMMOTH II
Two of the hardest levels I had the time to conjure up.
Enjoy.
`************** DiNGo DaNGo
`***************** By Jimmy
SYNC ON : SYNC RATE 40 : HIDE MOUSE
DIM Moves(8) as String
Moves(0) = ""
Moves(1) = "Forward 1"
Moves(2) = "Forward 2"
Moves(3) = "Forward 3"
Moves(4) = "Rotate Left"
Moves(5) = "Rotate Right"
Moves(6) = "Rotate 180"
Moves(7) = "Backward 1"
scrW = SCREEN WIDTH()
Make_Robot(100)
SCALE OBJECT 100, 50, 50, 50
INK RGB(255, 255, 255), RGB(0, 0, 0)
MAKE OBJECT CUBE 1, 5
COLOR OBJECT 1, RGB(100, 100, 100)
MAKE OBJECT CUBE 2, 5
COLOR OBJECT 2, RGB(0, 0, 200)
MAKE OBJECT CUBE 3, 5
COLOR OBJECT 3, RGB(0, 200, 0)
MAKE OBJECT CUBE 4, 5
COLOR OBJECT 4, RGB(0, 0, 0)
MAKE OBJECT CUBE 5, 5
COLOR OBJECT 5, RGB(255, 0, 0)
MAKE OBJECT CUBE 6, 3
COLOR OBJECT 6, RGB(255, 255, 0)
MAKE OBJECT CUBE 7, 5
COLOR OBJECT 7, RGB(255, 0, 255)
FOR i=1 TO 7
HIDE OBJECT i
NEXT i
`MAKE OBJECT SPHERE 100, 4
`COLOR OBJECT 100, RGB(255, 255, 0)
MAKE OBJECT CONE 101, 2
COLOR OBJECT 101, RGB(255, 155, 0)
HIDE OBJECT 101
CurLevel = 0
NEWLEVEL:
GOSUB LoadNextLevel
RESTART:
PPosX# = blueJ*5.4
PPosZ# = blueI*5.4
PAng# = 0
OAng# = 0
CamHeight# = 15.0
curMove = 0
camx = levW*-1
camz = levW*-1
POSITION CAMERA camx, CamHeight#, camz
POINT CAMERA (levW*5.4)/2, 0, (levH*5.4)/2
Page = 1
QPage = 1
DO
`CONTROL CAMERA USING ARROWKEYS 0, 1, 1
POSITION OBJECT 100, PPosX#, 2, PPosZ#
POSITION OBJECT 101, PPosX#, 2, PPosZ#
YROTATE OBJECT 100, PAng#
ROTATE OBJECT 101, 0, 0, 0
YROTATE OBJECT 101, PAng#
MOVE OBJECT 101, 2.5
XROTATE OBJECT 101, 90
TEXT 5, 5, "Available Moves"
Count = 0
FOR i = ((Page-1)*26)+1 TO ((Page-1)*26)+26
INC Count
TEXT 5, Count*11+10, CHR$(96+Count)+": "+Moves(levelMoves(i))
IF i = numMoves THEN i = ((Page-1)*26)+27
NEXT i
TEXT 5, 26*11+30, "Page "+STR$(Page)+" of "+STR$(TPages)
TEXT scrW-140, 5, "Queued UP Moves"
IF QPage <= TPages
Count = 0
FOR i = ((QPage-1)*26)+1 TO ((QPage-1)*26)+26
INC Count
IF i = (CurMove-1) THEN INK RGB(255, 255, 0), RGB(0, 0, 0)
TEXT scrW-140, Count*11+10, CHR$(64+Count)+": "+Moves(qMoves(i))
INK RGB(255, 255, 255), RGB(0, 0, 0)
IF i = numMoves THEN i = ((QPage-1)*26)+27
NEXT i
TEXT scrW-140, 26*11+30, "Page "+STR$(QPage)+" of "+STR$(TPages)
ENDIF
POSITION CAMERA camx, CamHeight#, camz
POINT CAMERA (levW*5.4)/2, 0, (levH*5.4)/2
IF KEYSTATE(203) = 1 AND leftDown = 0
PAng# = WRAPVALUE(PAng#-90)
leftDown = 1
ENDIF
IF KEYSTATE(203) = 0 AND leftDown = 1 THEN leftDown = 0
IF KEYSTATE(205) = 1 AND rightDown = 0
PAng# = WRAPVALUE(PAng#+90)
rightDown = 1
ENDIF
IF KEYSTATE(205) = 0 AND rightDown = 1 THEN rightDown = 0
IF KEYSTATE(200) = 1 AND CamHeight# > 5 THEN DEC CamHeight#, 0.5
IF KEYSTATE(208) = 1 AND CamHeight# < 95 THEN INC CamHeight#, 0.5
`ConvAng# = WRAPVALUE(PAng#)
`GOSUB GetCurSquare
`GOSUB GetNextSquare
`GOSUB GetPrevSquare
CENTER TEXT scrW/2, 5, "DiNGo DaNGo!!"
CENTER TEXT scrW/2, 21, "LEVEL: "+STR$(CurLevel)+" - '"+MapName$+"'"
IF Running = 1
IF OnRotator = 1 THEN OAng# = WRAPVALUE(OAng#+2.0)
IF OnConvey = 1 THEN OAng# = WRAPVALUE(OAng#+(90.0/54.0))
FOR i = 1 TO levH
FOR j = 1 TO levW
obj = level(i, j)
IF OnRotator = 1 OR OnConvey = 1
IF obj = 5 THEN YROTATE OBJECT levelObj(i, j), OAng#
IF obj = 11 THEN YROTATE OBJECT levelObj(i, j), OAng#*-1
IF obj = 7 THEN XROTATE OBJECT levelObj(i, j), OAng#
IF obj = 8 THEN XROTATE OBJECT levelObj(i, j), OAng#*-1
IF obj = 9 THEN ZROTATE OBJECT levelObj(i, j), OAng#
IF obj = 10 THEN ZROTATE OBJECT levelObj(i, j), OAng#*-1
ELSE
OAng# = 0
IF obj = 5 THEN YROTATE OBJECT levelObj(i, j), 0
IF obj = 11 THEN YROTATE OBJECT levelObj(i, j), 0
IF obj = 7 THEN XROTATE OBJECT levelObj(i, j), 0
IF obj = 8 THEN XROTATE OBJECT levelObj(i, j), 0
IF obj = 9 THEN ZROTATE OBJECT levelObj(i, j), 0
IF obj = 10 THEN ZROTATE OBJECT levelObj(i, j), 0
ENDIF
NEXT j
NEXT i
QPage = (CurMove/27)+1
IF Stopped = 1
ConvAng# = WRAPVALUE(PAng#)
GOSUB GetCurSquare
GOSUB GetNextSquare
GOSUB GetPrevSquare
tSquare = curSquare
IF Action = 0
IF OnConvey = 1 THEN OnConvey = 0 : curSquare = 0
IF curSquare > 6 AND curSquare < 11
IF curSquare = 7 THEN ConvAng# = 0
IF curSquare = 8 THEN ConvAng# = 180
IF curSquare = 9 THEN ConvAng# = 270
IF curSquare = 10 THEN ConvAng# = 90
GOSUB GetNextSquare
GOSUB GetPrevSquare
Action = 1
OnConvey = 1
ENDIF
IF OnRotator = 1 THEN OnRotator = 0 : curSquare = 0
IF curSquare = 5 THEN OnRotator = 1 : Action = 5
IF curSquare = 11 THEN OnRotator = 1 : Action = 4
ENDIF
IF Action = 0 AND curMove > numQMoves AND OnConvey = 0
IF tSquare = 3
GOSUB UnloadLevel
GOSUB NEWLEVEL
ELSE
GOSUB GameOver
ENDIF
ENDIF
IF Action = 0 AND curMove <= numQMoves THEN Action = qMoves(curMove) : INC curMove
Stopped = 0
Movement# = 0.0
ELSE
IF Action < 4 OR Action = 7
IF Action > 0
Tread# = 0.0
IF Action <> 7 AND nextSquare <> 6 THEN YROTATE OBJECT 100, ConvAng# : MOVE OBJECT 100, 0.1 : YROTATE OBJECT 100, PAng# : Tread# = -0.01
IF Action <> 7 AND nextSquare = 6 AND OnConvey = 0 THEN Action = 1 : Movement# = 5.4
IF Action = 7 AND prevSquare <> 6 THEN YROTATE OBJECT 100, ConvAng# : MOVE OBJECT 100, -0.1 : YROTATE OBJECT 100, PAng# : Tread# = 0.01
IF Action = 7 AND prevSquare = 6 AND OnConvey = 0 THEN Movement# = 5.4
INC Movement#, 0.1
IF OnConvey = 0
SCROLL LIMB TEXTURE 100, 4, Tread#, 0
SCROLL LIMB TEXTURE 100, 5, Tread#, 0
ENDIF
IF Movement# >= 5.3
Stopped = 1
DEC Action
ConvAng# = 0
IF Action = 6 THEN Action = 0
GOSUB GetCurSquare
GOSUB GetNextSquare
GOSUB GetPrevSquare
IF curSquare = 0 OR curSquare = 4
REMSTART
REPEAT
pizzle# = (OBJECT POSITION Z(100)) / 5.3
TEXT 5, 200, STR$(nextSquare)+":"+STR$(curSquare)+":"+STR$(prevSquare)
TEXT 5, 211, STR$(pNextI)+","+STR$(pNextJ)
TEXT 5, 222, STR$(pI)+","+STR$(pJ)
TEXT 5, 233, STR$(pPrevI)+","+STR$(pPrevJ)
TEXT 5, 244, STR$(pizzle#)
TEXT 5, 255, STR$(OBJECT POSITION Z(100))
TEXT 5, 266, STR$(Action)
TEXT 5, 277, STR$(Movement#)
TEXT 5, 288, STR$(curMove)
TEXT 5, 299, STR$(numQMoves)
SYNC
UNTIL KEYSTATE(30) = 1
REMEND
GOSUB GameOver
ENDIF
ENDIF
ENDIF
ENDIF
IF Action = 4 OR Action = 5
IF Action = 4
PAng# = OBJECT ANGLE Y(100)-2
IF OnRotator = 0
SCROLL LIMB TEXTURE 100, 4, -0.01, 0
SCROLL LIMB TEXTURE 100, 5, 0.01, 0
ENDIF
ENDIF
IF Action = 5
PAng# = OBJECT ANGLE Y(100)+2
IF OnRotator = 0
SCROLL LIMB TEXTURE 100, 4, 0.01, 0
SCROLL LIMB TEXTURE 100, 5, -0.01, 0
ENDIF
ENDIF
YROTATE OBJECT 100, PAng#
INC Movement#, 2.0
IF Movement# >= 90.0
Stopped = 1
Action = 0
ENDIF
ENDIF
IF Action = 6
PAng# = OBJECT ANGLE Y(100)+2
YROTATE OBJECT 100, PAng#
SCROLL LIMB TEXTURE 100, 4, 0.01, 0
SCROLL LIMB TEXTURE 100, 5, -0.01, 0
INC Movement#, 2.0
IF Movement# >= 180.0
Stopped = 1
Action = 0
ENDIF
ENDIF
PPosX# = OBJECT POSITION X(100)
PPosZ# = OBJECT POSITION Z(100)
ENDIF
ELSE
OAng# = WRAPVALUE(OAng#+2.0)
FOR i = 1 TO levH
FOR j = 1 TO levW
obj = level(i, j)
IF obj = 5 THEN YROTATE OBJECT levelObj(i, j), OAng#
IF obj = 11 THEN YROTATE OBJECT levelObj(i, j), OAng#*-1
IF obj = 7 THEN XROTATE OBJECT levelObj(i, j), OAng#
IF obj = 8 THEN XROTATE OBJECT levelObj(i, j), OAng#*-1
IF obj = 9 THEN ZROTATE OBJECT levelObj(i, j), OAng#
IF obj = 10 THEN ZROTATE OBJECT levelObj(i, j), OAng#*-1
NEXT j
NEXT i
CENTER TEXT scrW/2, 40, "HOLD TAB TO VIEW INSTRUCTIONS"
IF KEYSTATE(15) = 1
INK RGB(0, 0, 0), RGB(0, 0, 0)
BOX 97, 103, 545, 370
INK RGB(255, 255, 255), RGB(0, 0, 0)
CENTER TEXT scrW/2, 110, "GRAY SQUARES ARE PLATFORMS - OK FOR DINGO"
INK RGB(255, 0, 0), RGB(0, 0, 0)
CENTER TEXT scrW/2, 121, "RED SQUARES TURN YOU 90 DEG. IN THE DIR. THEY SPIN"
INK RGB(255, 0, 255), RGB(0, 0, 0)
CENTER TEXT scrW/2, 132, "PURPLE SQUARES PUSH YOU 1 SPACE IN THE DIR. THEY SPIN"
INK RGB(255, 255, 0), RGB(0, 0, 0)
CENTER TEXT scrW/2, 143, "YELLOW SQUARES SCARE DINGO, HE WILL NOT MOVE ONTO THEM"
INK RGB(115, 115, 115), RGB(0, 0, 0)
CENTER TEXT scrW/2, 154, "BLACK SQUARES ARE PITS OF DEATH. GAME OVER."
INK RGB(255, 255, 255), RGB(0, 0, 0)
CENTER TEXT scrW/2, 170, "OBJECT: GO FROM BLUE SQUARE TO GREEN SQUARE WITH THE"
CENTER TEXT scrW/2, 181, "GIVEN MOVES. YOU MAY NEED ALL, YOU MAY NOT"
CENTER TEXT scrW/2, 210, "USE LEFT-RIGHT ARROW KEYS TO CHOOSE STARTING DIRECTION"
CENTER TEXT scrW/2, 221, "UP-DOWN ARROW KEYS MOVE THE CAMERA IN AND OUT"
CENTER TEXT scrW/2, 240, "QUEUE UP YOUR DESIRED MOVES WITH THE CORRESPONDING"
CENTER TEXT scrW/2, 251, "LETTER ON THE KEYBOARD."
CENTER TEXT scrW/2, 270, "TO DELETE FROM THE QUEUE, HOLD SHIFT AND USE TEH"
CENTER TEXT scrW/2, 281, "CAPITALS."
CENTER TEXT scrW/2, 300, "USE , AND . TO FLIP THROUGH PAGES OF MOVES. HOLD SHIFT"
CENTER TEXT scrW/2, 311, "TO FLIP THROUGH THE QUEUE'S PAGES."
CENTER TEXT scrW/2, 330, "USE SHIFT+BACKSPACE TO CLEAR THE QUEUE."
CENTER TEXT scrW/2, 350, "PRESS SPACE WHEN YOU ARE READY TO DIE."
ENDIF
Key = KeyToInt(INKEY$())
IF Key <> 0 AND KeyDown = 0
IF Key < 101 AND Key <= numMoves
IF levelMoves(((Page-1)*26)+Key) <> 0
INC numQMoves
qMoves(numQMoves) = levelMoves(((Page-1)*26)+Key)
qMoveKeys(numQMoves) = ((Page-1)*26)+Key
levelMoves(((Page-1)*26)+Key) = 0
ENDIF
ENDIF
IF Key > 100
Key = Key - 100
IF Key <= numQMoves
GOSUB DeleteFromQ
ENDIF
ENDIF
KeyDown = 1
ENDIF
IF Key = 0 AND KeyDown = 1 THEN KeyDown = 0
IF KEYSTATE(51) = 1 AND CommaDown = 0
IF KEYSTATE(54) = 0 AND KEYSTATE(42) = 0
IF Page > 1 THEN DEC Page
ELSE
IF QPage > 1 THEN DEC QPage
ENDIF
CommaDown = 1
ENDIF
IF KEYSTATE(51) = 0 AND CommaDown = 1 THEN CommaDown = 0
IF KEYSTATE(52) = 1 AND PeriodDown = 0
IF KEYSTATE(54) = 0 AND KEYSTATE(42) = 0
IF Page < TPages THEN INC Page
ELSE
IF QPage < TPages THEN INC QPage
ENDIF
PeriodDown = 1
ENDIF
IF KEYSTATE(52) = 0 AND PeriodDown = 1 THEN PeriodDown = 0
IF KEYSTATE(14) = 1 AND BSDown = 0
IF KEYSTATE(54) = 1 OR KEYSTATE(42) = 1
tqPage = QPage
QPage = 1
tnumq = numQMoves
Key = 1
FOR qi = 1 to tnumq
GOSUB DeleteFromQ
NEXT qi
QPage = tqPage
ENDIF
BSDown = 1
ENDIF
IF KEYSTATE(14) = 0 AND BSDown = 1 THEN BSDown = 0
IF KEYSTATE(57) = 1 AND SpaceDown = 0
Running = 1
curMove = 1
Stopped = 1
SpaceDown = 1
ENDIF
IF KEYSTATE(57) = 0 AND SpaceDown = 1 THEN SpaceDown = 0
ENDIF
REMSTART
pizzle# = (OBJECT POSITION Z(100)) / 5.3
TEXT 5, 200, STR$(nextSquare)+":"+STR$(curSquare)+":"+STR$(prevSquare)
TEXT 5, 211, STR$(pNextI)+","+STR$(pNextJ)
TEXT 5, 222, STR$(pI)+","+STR$(pJ)
TEXT 5, 233, STR$(pPrevI)+","+STR$(pPrevJ)
TEXT 5, 244, STR$(pizzle#)
TEXT 5, 255, STR$(OBJECT POSITION Z(100))
REMEND
`TEXT 5, 400, STR$(SCANCODE())
SYNC
LOOP
DeleteFromQ:
IF qMoves(((QPage-1)*26)+Key) <> 0
DEC numQMoves
levelMoves(qMoveKeys(((QPage-1)*26)+Key)) = qMoves(((QPage-1)*26)+Key)
qMoves(((QPage-1)*26)+Key) = 0
qMoveKeys(((QPage-1)*26)+Key) = 0
FOR i = (((QPage-1)*26)+Key) TO numQMoves+1
qMoves(i) = qMoves(i+1)
qMoveKeys(i) = qMoveKeys(i+1)
NEXT i
ENDIF
RETURN
UnloadLevel:
Running = 0
FOR i = 1 TO levH
FOR j = 1 to levW
DELETE OBJECT levelObj(i, j)
NEXT j
NEXT i
UNDIM level(levW, levH)
UNDIM levelObj(levW, levH)
UNDIM levelMoves(numMoves)
RETURN
LoadNextLevel:
READ MapName$
READ levW
READ levH
DIM level(levW, levH)
DIM levelObj(levW, levH)
INC CurLevel
FOR i = 1 TO levH
FOR j = 1 to levW
READ level(i, j)
IF level(i, j) = 2
blueI = i
blueJ = j
ENDIF
levelObj(i, j) = FreeObject()
IF level(i, j) > 6 AND level(i, j) < 11
CLONE OBJECT levelObj(i, j), 7
ELSE
IF level(i, j) = 11
CLONE OBJECT levelObj(i, j), 5
ELSE
CLONE OBJECT levelObj(i, j), level(i, j)
ENDIF
ENDIF
POSITION OBJECT levelObj(i, j), j*5.4, -2.5, i*5.4
NEXT j
NEXT i
READ numMoves
TPages = (numMoves/27) + 1
DIM levelMoves(numMoves)
DIM qMoves(numMoves+1)
DIM qMoveKeys(numMoves+1)
numQMoves = 0
FOR i = 1 to numMoves
READ levelMoves(i)
NEXT i
RETURN
GetNextSquare:
YROTATE OBJECT 100, ConvAng#
remstart Space# = 5.4
MOVE OBJECT 100, 5.42
oZ# = OBJECT POSITION Z(100)
oX# = OBJECT POSITION X(100)
pNextI = oZ# / Space#
TEXT 5, 250, STR$(OBJECT POSITION Z(100))
TEXT 5, 261, STR$(OBJECT POSITION X(100))
TEXT 5, 272, STR$(OBJECT ANGLE Y(100))
pNextJ = oX# / Space#
MOVE OBJECT 100, -5.42
remend
pNextI = pI
pNextJ = pJ
IF ConvAng# = 0 THEN pNextI = pI + 1
IF ConvAng# = 90 THEN pNextJ = pJ + 1
IF ConvAng# = 180 THEN pNextI = pI - 1
IF ConvAng# = 270 THEN pNextJ = pJ - 1
YROTATE OBJECT 100, PAng#
IF pNextI > levW OR pNextJ > levH OR pNextI < 1 OR pNextJ < 1
nextSquare = 0
RETURN
ENDIF
nextSquare = level(pNextI, pNextJ)
RETURN
GetCurSquare:
pI = (OBJECT POSITION Z(100)) / 5.3
pJ = (OBJECT POSITION X(100)) / 5.3
IF pI > levW OR pJ > levH OR pI < 1 OR pJ < 1
curSquare = 0
RETURN
ENDIF
curSquare = level(pI, pJ)
RETURN
GetPrevSquare:
YROTATE OBJECT 100, ConvAng#
REMSTART
MOVE OBJECT 100, -5.41
pPrevI = OBJECT POSITION Z(100) / 5.40000
pPrevJ = OBJECT POSITION X(100) / 5.40000
MOVE OBJECT 100, 5.41
REMEND
pPrevI = pI
pPrevJ = pJ
IF ConvAng# = 0 THEN pPrevI = pI - 1
IF ConvAng# = 90 THEN pPrevJ = pJ - 1
IF ConvAng# = 180 THEN pPrevI = pI + 1
IF ConvAng# = 270 THEN pPrevJ = pJ + 1
YROTATE OBJECT 100, PAng#
IF pPrevI > levW OR pPrevJ > levH OR pPrevI < 1 OR pPrevJ < 1
prevSquare = 0
RETURN
ENDIF
prevSquare = level(pPrevI, pPrevJ)
RETURN
GameOver:
SpaceDown = 1
Running = 0
Action = 0
Stopped = 0
Movement# = 0.0
FOR Key = 1 TO numQMoves
IF Key <= numQMoves AND qMoves(Key) <> 0
levelMoves(qMoveKeys(Key)) = qMoves(Key)
qMoves(Key) = 0
qMoveKeys(Key) = 0
ENDIF
NEXT Key
numQMoves = 0
DO
CENTER TEXT scrW/2, 25, "YOU FAILED. PRESS SPACE TO TRY AGAIN OR ESC TO QUIT."
REMSTART
pizzle# = (OBJECT POSITION Z(100)) / 5.3
TEXT 5, 200, STR$(nextSquare)+":"+STR$(curSquare)+":"+STR$(prevSquare)
TEXT 5, 211, STR$(pNextI)+","+STR$(pNextJ)
TEXT 5, 222, STR$(pI)+","+STR$(pJ)
TEXT 5, 233, STR$(pPrevI)+","+STR$(pPrevJ)
TEXT 5, 244, STR$(pizzle#)
TEXT 5, 255, STR$(OBJECT POSITION Z(100))
TEXT 5, 266, STR$(Action)
TEXT 5, 277, STR$(Movement#)
TEXT 5, 288, STR$(curMove)
TEXT 5, 299, STR$(numQMoves)
REMEND
IF KEYSTATE(57) = 1 AND SpaceDown = 0
SpaceDown = 1 : GOSUB RESTART
ENDIF
IF KEYSTATE(57) = 0 AND SpaceDown = 1 THEN SpaceDown = 0
SYNC
LOOP
RETURN
FUNCTION FreeObject()
FOR i = 1 TO 65535
IF OBJECT EXIST(i) = 0 THEN EXITFUNCTION i
NEXT i
ENDFUNCTION -1
FUNCTION KeyToInt(K as String)
iKey = ASC(K)
IF iKey > 96 AND iKey < 123
EXITFUNCTION iKey - 96
ENDIF
IF iKey > 64 AND iKey < 97
EXITFUNCTION iKey + 36
ENDIF
ENDFUNCTION 0
Function Make_Robot(ObjectID)
If Object Exist (ObjectID) Then Delete Object ObjectID
Make Object Cube ObjectID,5
If Object Exist(2) Then Delete Object 2
If Mesh Exist(2) Then Delete Mesh 2
Make Object Sphere 2,5
Make Mesh From Object 2,2
Add Limb ObjectID,1,2
Offset Limb ObjectID,1,0,4,0
Delete Mesh 2
Delete Object 2
Make Object Cylinder 2,4
Scale Object 2,30,100,30
Offset Limb 2,0,0,2,0
Roll Object Right 2,100
Fix Object Pivot 2
Make Mesh From Object 2,2
Add Limb ObjectID,2,2
Add Limb ObjectID,3,2
Offset Limb ObjectID,2,0,1,-3
Offset Limb ObjectID,3,0,1,3
Color Limb ObjectID,2,RGB(128,128,128)
Color Limb ObjectID,3,RGB(128,128,128)
Delete Mesh 2
Delete Object 2
Make Object Cylinder 2,10
Scale Object 2,100,20,20
Pitch Object Down 2,90
Fix Object Pivot 2
Make Mesh From Object 2,2
Add Limb ObjectID,4,2
Add Limb ObjectID,5,2
Offset Limb ObjectID,4,0,-3,-3
Offset Limb ObjectID,5,0,-3,3
Delete Object 2
Delete Mesh 2
Make Object Sphere 2,10
Scale Object 2,100,20,1
Make Mesh from Object 2,2
Add Limb ObjectID,6,2
Add Limb ObjectID,7,2
Offset Limb ObjectID,6,0,-3,-3.9
Offset Limb ObjectID,7,0,-3,3.9
Delete Object 2
Delete Mesh 2
Set Object Cull ObjectID,0
Turn Object Left ObjectID,90
Fix Object Pivot ObjectID
Color Object ObjectID, RGB(255, 255, 0) `Robot.Color
If Bitmap Exist(1) Then Delete Bitmap 1
Create Bitmap 1,100,20
Set Current Bitmap 1
Ink RGB(210,210,210),0
Box 0,0,99,19
Ink Rgb(40,40,40),0
For i = 0 to 90 step 10
Box i,0,i+1,19
Next i
Get Image 1,0,0,99,19
Delete Bitmap 1
Texture Limb ObjectID,4,1
Texture Limb ObjectID,5,1
Set Object Collision Off ObjectID
Set Object Collision to Boxes ObjectID
EndFunction R
REMSTART
DATA "R2D2! YOU'RE MY ONLY HOPE"
Data 5,5
Data 2, 1, 1,10, 1
Data 6, 8, 8,10, 1
Data 1, 1, 3,10, 1
Data 1, 9, 7, 7, 7
Data 1, 9, 1, 1, 1
Data 10
Data 3,3,3,3,1,1,4,4,4,4
DATA "Easy looker"
DATA 5, 5
DATA 2, 1, 5, 1, 1
DATA 1, 6, 1, 6, 1
DATA 1, 6, 3, 6, 1
DATA 1, 1, 6, 1, 1
DATA 1, 1, 1, 1, 1
DATA 6
DATA 1, 1, 4, 5, 6, 2
DATA "Skills"
DATA 5, 5
DATA 1, 1, 1, 1, 1
DATA 1, 6, 1, 6, 5
DATA 1, 6, 2, 6, 11
DATA 1, 6, 6, 6, 5
DATA 1, 1, 1, 1, 3
DATA 9
DATA 2, 4, 2, 4, 2, 6, 1, 6, 1
REMEND
` Objects:
` 1 = Grey square
` 2 = Blue square (start)
` 3 = Green square (end)
` 4 = Black square
` 5 = Red square (Rotates RIGHT)
` 6 = Yellow square (WALL)
` 7 = Purple (Rotates to the upper left) DOWN in data statements
` 8 = Purple (Rotates to the lower right) UP in data statements
` 9 = Purple (rotates lower left) LEFT in data statements
` 10 = Purple (Rotates upper right) RIGHT in data statements
` 11 = Red Square (Rotates LEFT)
` Moves:
` 1 = "Forward 1"
` 2 = "Forward 2"
` 3 = "Forward 3"
` 4 = "Rotate Left"
` 5 = "Rotate Right"
` 6 = "Rotate 180"
` 7 = "Backward 1"
Data "The MAMMOTH" `Name of map
Data 15, 15 `DIMENSIONS OF LEVEL: Can be any amount. The first is Width and the Second... HEIGHT.
Data 2, 1, 7, 4, 5, 1,11, 4, 3, 3, 6, 5, 1, 1, 10 `The next 15 (HEIGHT) lines contain the objects of the level
Data 4, 4, 7, 1, 8, 6, 7, 6, 3, 3, 4, 8, 4, 1, 10 `The levels are reversed vertically when it renders. I am lazy therefore.
Data 4, 4, 4, 4, 7, 6, 7, 4, 3, 3, 4, 9, 6, 1, 10
Data 1, 1, 1, 1, 4, 6, 7, 6, 3, 3, 4, 8, 4,10, 10
Data 1, 1, 1, 1, 1, 6, 7,11, 6, 4, 4, 8, 6, 1, 9
Data 1, 5, 5, 1, 1, 6, 4, 1, 6, 1, 5, 5, 4, 1, 10
Data 1, 1, 6, 1, 1, 1, 9, 9, 6, 1,11, 1, 6, 1, 10
Data 6, 7, 6, 6, 6, 4, 4, 4, 4, 1, 4, 6, 4, 10,10
Data 4, 7, 1, 1, 6, 5, 1, 1, 4, 7, 9, 1, 6, 8, 10
Data 4, 7, 4, 1, 6, 1, 6, 1, 6, 7, 4, 1, 4, 5, 10
Data 4, 7, 1, 1, 6, 1, 6, 1, 6, 4, 1, 1, 6, 1, 10
Data 4,10, 4,11, 1, 7, 6, 9, 4, 4, 1, 4, 4, 9, 10
Data 4, 4, 4, 4, 6, 1, 6, 1, 6, 4, 1, 8, 6,10, 10
Data 4, 4, 4, 4, 6, 4, 1, 5, 1, 5, 6, 8, 4,10, 10
Data 4, 4, 4, 4, 6, 6, 6, 6, 6, 1, 1, 8, 6, 3, 9
DATA 60 `TOTAL Number of possible moves
DATA 2,5,1,2,5,2,3,5,4,2,3,1,5,2,2,4,2,4,1,2,4,2,1,4,2,5 `Then the list of moves.
DATA 7,4,1,5,2,5,4,2,7,4,2,1,7,5,3,1,2,2,3,2,3,4,3,1,4,2,7,5,2,2,2,7,3,1
DATA "The MAMMOTH II"
DATA 2, 2
DATA 2, 1
DATA 1, 3
DATA 10
DATA 1, 6, 1, 6, 7, 6, 7, 6, 7, 1