Error Codes

BlitzPlus Forums/BlitzPlus Beginners Area/Error Codes

Soselo(Posted 2012) [#1]
I am still receiving the "Expecting Identifier" error message after many attempts of rewriting my parameters. It brings my cursor to the GoTo command at the beginning of my program. Any help would be much appreciated. I am still a beginner, testing out some starter codes so any explanations or pointers are a major help.


Soselo(Posted 2012) [#2]
In addition, when I copy + paste codes from the website, I get the reoccurring "Invalid Image Handler" and so far haven't been able to find any help.


GfK(Posted 2012) [#3]
You need to post some code so we can see what you're doing wrong.


Floyd(Posted 2012) [#4]
Some of the code you find on this site uses images or sounds or other resources on the programmer's computer. That code will fail when those resources cannot be found on your computer.


Soselo(Posted 2012) [#5]
This is obviously from the code examples list, but when I copy + paste it, I get "Invalid Image Handler."

This problem could be what Floyd was saying

;2D platformer example
;by WolRon

Graphics 640, 480 ;2D graphics at a resolution of 640x480
SetBuffer BackBuffer() ;Do all drawing to the back drawing buffer

Global tileImages ;Stores handle to image of background tiles
Global imgPlayer ;Stores handle to players image

;Load in all graphics, sounds, etc. ;Only loading graphics in this example
Global maxTile = 6 ;Define highest used tile for error catching
tileImages = LoadAnimImage("bgtiles.png", 40, 40, 0, 8)
imgPlayer = LoadImage("jumpman.png")

Dim Level(0, 0) ;Declare grid that will store the level data (defined later)
Dim LevelExit(0, 0) ;Declare array to store exit locations in the level (defined later)

Global LevelWidth ;Stores current levels width (in tiles)
Global LevelHeight ;Stores current levels height (in tiles)
Global NumExits ;Stores the number of exits in the level
Global ScreenX ;Stores the screens current x position
Global ScreenY ;Stores the screens current y position
Global MaxScreenX ;Stores the screens maximum x position
Global MaxScreenY ;Stores the screens maximum y position
Global PlayerX# ;Stores the players current x position on the screen
Global PlayerY# ;Stores the players current y posiiton on the screen
Global CurLevel = 1 ;Stores the current level the player is on
Global GameOver = False ;Stores state of the game (0=playing, 1=lost, 2=win)
Global XVel# = 0 ;Players horizontal velocity
Global YVel# = 0 ;Players vertical velocity

LoadLevel(CurLevel, 1, 8) ;Load in the first level; Set players starting position

Gametimer = CreateTimer(60) ;Set and start the game timer (60 fps)

;Start game loop
Repeat ;Start of the main loop
WaitTimer Gametimer ;Wait for the timer to tick

;Collect user input
;UpKey = KeyDown(200) ;Up arrow ;It's a good practice to collect these inputs only once
;DownKey = KeyDown(208) ;Down arrow ; per game loop. This will prevent odd behaviors from happening,
LeftKey = KeyDown(203) ;Left arrow ; for instance if the state of a key changes between multiple
RightKey = KeyDown(205) ;Right arrow ; checks of that key while still in the same loop.
JumpKey = KeyDown(57) ;Spacebar
FastKey = KeyDown(42) ;Left Shift key

;Apply input forces to players position
YVel = YVel + .1 ;Add slight downward y movement (a positive number simulates gravity)
If YVel > 19 Then YVel = 19
If RightKey ;Check if the right key is being pressed
If FastKey ;Check if the fast key is also being pressed
If XVel < 7 Then XVel = XVel + .1 ; if so, then increase velocity up to 7 pixels/frame
Else
If XVel < 4 Then XVel = XVel + .1 ; if not, then only increase up to 4 pixels/frame
If XVel > 4 Then XVel = XVel - .1 ;If FastKey isn't held down, then slow down if necessary
EndIf
Else
If XVel > 0 Then XVel = XVel * .8 ;If right isn't held, then gradually slow down
EndIf
If LeftKey ;Check if the left key is being pressed
If FastKey ;Check if the fast key is also being pressed
If XVel > -7 Then XVel = XVel - .1 ; if so, then increase velocity up to -7 pixels/frame
Else
If XVel > -4 Then XVel = XVel - .1 ; if not, then only increase up to -4 pixels/frame
If XVel < -4 Then XVel = XVel + .1 ;If FastKey isn't held down, then slow down if necessary
EndIf
Else
If XVel < 0 Then XVel = XVel * .8 ;If left isn't held then gradually slow down
EndIf
If JumpKey And JumpKeyDown = False ;Check if jump key pressed (but only if it's been released)
If AbleToJump = True ;If player is able to jump (i.e. on a platform)
AbleToJump = False ;Set AbleToJump to false because player is now jumping
YVel = YVel - 19 ;Set vertical velocity to -19 to cause the player to move up
JumpKeyDown = True ;Set true so player can't jump again until JumpKey is released
EndIf
ElseIf (Not JumpKey) And (AbleToJump = True);If JumpKey isn't pressed and player is on a platform
JumpKeyDown = False ; then set JumpKeyDown to false so that player can jump again
EndIf
If AbleToJump = False ;If not on a platform...
If YVel < 19 Then YVel = YVel + .9 ;then apply gravity but not more than maximum velocity
If Not JumpKey And YVel<19 Then YVel=YVel+1;If player let go of JumpKey early then
EndIf ; increase downward velocity to make player not jump as high
;Now attempt to move the player by the amounts determined above
;Attempt to move the player in Y
MoveSuccessful = False ;Reset MoveSuccessful to false
TileX = Floor((ScreenX+PlayerX-18+4*(YVel<0))/40) ;Figure out tile that player is on (+/- 4 if moving up in Y)
TileXR = Floor((ScreenX+PlayerX+18-4*(YVel<0))/40) ;Figure out tile to right of player as well
Repeat ;Attempt to move the player in Y as far as possible
If YVel < 0 ;If attempted move is up then
TileY = Floor((ScreenY+PlayerY+YVel+5)/40)-2 ; set the tile above as tile to check against
ElseIf YVel > 0 ;Else if attempted move is down then
If (ScreenY+PlayerY) Mod 40 < 0.5 And (ScreenY+PlayerY) Mod 40 > -0.5 ;Even with tile?
TileY = Floor((ScreenY+PlayerY+YVel)/40); set the tile below as tile to check against
Else
TileY = Floor((ScreenY+PlayerY+YVel-.5)/40) ; set the tile below as tile to check against
EndIf
Else ;If YVel = 0 (not moving up/down) then
MoveSuccessful = True ; exit loop because player isn't moving in Y
TileY = Floor((ScreenY+PlayerY+YVel)/40) ;Still need to set TileY though
EndIf
If TileY=>LevelHeight Then GameOver=True;If player falls out of level then end the game
If TileY > -1 And TileY < LevelHeight ;Verify that TileY won't be out of range in the following comparisons
If Level(TileX,TileY)<4 And ((Level(TileXR,TileY)<4) Or (((ScreenX+PlayerX+20) Mod 40)=0));Check tile below < 4
PlayerY = PlayerY + YVel ;If TileY is an empty tile (< 4 in this example) then allow player to move
If YVel > 0 Then AbleToJump = False ;Player is falling so don't allow jumping
MoveSuccessful = True ;Exit the loop, successfully moved player
EndIf
EndIf
If MoveSuccessful = False ;If attempted move failed, try again with smaller movement
If YVel > 0 ;If attempted move is down then
YVel = YVel - .5 ; make vertical velocity less (closer to zero)
If YVel < 0 Then YVel = 0 ; but don't overdo it!
AbleToJump = True ;Set AbleToJump to True because player will be landing
PlayerY = Floor(PlayerY) ;Remove any decimal amount so player will be level with the surface
Else ;Else if attempted move is up then
YVel = YVel + .5 ; make vertical velocity less (closer to zero)
If YVel > 0 Then YVel = 0 ; but don't overdo it!
EndIf
EndIf
Until MoveSuccessful = True ;Try, try again, until succeed at moving player (even if only 0)
;Attempt to move the player in X
MoveSuccessful = False ;Reset MoveSuccessful to false
TileY = ScreenY + PlayerY ;Figure out in advance for convenience
Repeat ;Attempt to move the player in X as far as possible
If XVel > 0 ;If attempted move is to the right then
TileX = Floor((ScreenX+PlayerX+XVel-21)/40)+1; set the tile to the right as tile to check against
ElseIf XVel < 0 ;Else if attempted move is to the left then
TileX = Floor((ScreenX+PlayerX+XVel-20)/40) ; set the tile to the left as tile to check against
Else ;If XVel = 0 (not moving in either direction) then
MoveSuccessful = True ; exit loop because player isn't moving in X
EndIf
If TileX>-1 And TileX<LevelWidth And GameOver=False;Verify TileX/TileY wont be out of range in following comparisons
If Level(TileX,Floor((TileY+35)/40)-2)<4 And Level(TileX,Floor(TileY/40)-1)<4;Check if both side tiles are empty (<4)
If ((Level(TileX, Floor(TileY/40)) < 4) Or ((TileY Mod 40 < .4) And (TileY Mod 40 > -.4)));Check if tile below is empty too (unless
PlayerX = PlayerX + XVel ; the player is perfectly aligned with the tiles); If so, then move the player over
If PlayerX < 0 Then PlayerX = 0 ;Player can't move offscreen!
MoveSuccessful = True ;Exit the loop, successfully moved player
EndIf
EndIf
EndIf
If MoveSuccessful = False ;If attempted move failed, try again with smaller movement
If XVel > 0 ;If attempted move is to the right then
XVel = XVel - .5 ; make horizontal velocity less (closer to zero)
If XVel < 0 Then XVel = 0 ; but don't overdo it!
Else ;Else if attempted move is to the left then
XVel = XVel + .5 ; make horizontal velocity less (closer to zero)
If XVel > 0 Then XVel = 0 ; but don't overdo it!
EndIf
EndIf
Until MoveSuccessful ;Try, try again, until succeed at moving player (even if only 0)

;Update screen position
If PlayerX > 400 ;If player is moving too close to the right side of the screen
ScreenX = ScreenX + (PlayerX - 400) ; then move the screen over the same amount as the player moved
If ScreenX > MaxScreenX ;However, if the screen is past the rightmost limit then
ScreenX = MaxScreenX ; just set it to the rightmost limit
Else ;But if the screen CAN move right then
PlayerX = 400 ; set the players X position back to 400
EndIf
EndIf
If PlayerX < 200 ;If player is moving too close to the left side of the screen
ScreenX = ScreenX - (200 - PlayerX) ; then move the screen over the same amount as the player moved
If ScreenX < 0 ;However, if the screen is past the leftmost limit then
ScreenX = 0 ; just set it to the leftmost limit
Else ;But if the screen CAN move left then
PlayerX = 200 ; set the players X position back to 200
EndIf
EndIf
If PlayerY > 400 ;If player is moving too close to the bottom of the screen
ScreenY = ScreenY + (PlayerY - 400) ; then move the screen down the same amount as the player moved
If ScreenY > MaxScreenY ;However, if the screen is past the bottommost limit then
ScreenY = MaxScreenY ; just set it to the bottommost limit
Else ;But if the screen CAN move down then
PlayerY = 400 ; set the players Y position back to 400
EndIf
EndIf
If PlayerY < 160 ;If player is moving too close to the top of the screen
ScreenY = ScreenY - (160 - PlayerY) ; then move the screen up the same amount as the player moved
If ScreenY < 0 ;However, if the screen is past the topmost limit then
ScreenY = 0 ; just set it to the topmost limit
Else ;But if the screen CAN move up then
PlayerY = 160 ; set the players Y position back to 160
EndIf
EndIf

;Update badguy AI
;...not implemented in this example...

;Update badguys positions
;...not implemented in this example...

;Draw the level
TileX = ScreenX/40 ;Figure out the starting tile to draw
XOffset = ScreenX Mod 40 ;Figure out how much to offset each tile
TileY = ScreenY/40 ;Figure out the starting tile to draw
YOffset = ScreenY Mod 40 ;Figure out how much to offset each tile
For yIter = TileY To TileY+12 ;Loop from top to bottom
For xIter = TileX To TileX+16 ;Loop from left to right
If xIter > -1 And xIter < LevelWidth And yIter > -1 And yIter < LevelHeight
Tile = Level(xIter, yIter) ;Get tile from the Level array
DrawImage tileImages, (xIter-TileX)*40-XOffset, (yIter-TileY)*40-YOffset, Tile
EndIf
Next
Next

;Draw badguys
;...not implemented in this example...

;Draw the player ;Normally this would include animation
DrawImage imgPlayer, PlayerX-20, PlayerY-80 ; but we're keeping it simple in this example

;Draw stats
For iter = 0 To 1
Color 50+150*iter, 50+150*iter, 50
Text 1-iter, 1-iter, "PlayerX:" + PlayerX ;Show some stats just for your reference
Text 1-iter, 10-iter, "PlayerY:" + PlayerY ; so you can see how the numbers change
Text 1-iter, 20-iter, "ScreenX:" + ScreenX ;Typically this could be where you draw a
Text 1-iter, 30-iter, "ScreenY:" + ScreenY ; score or timer on the screen...
Text 1-iter, 40-iter, "TileX:" + Floor((PlayerX + ScreenX)/40)
Text 1-iter, 50-iter, "TileY:" + (Ceil((PlayerY + ScreenY)/40)-1)
Text 1-iter, 60-iter, "offsetX:" + (((PlayerX + ScreenX) Mod 40)-20)
Text 1-iter, 70-iter, "offsetY:" + ((PlayerY + ScreenY) Mod 40)
Next

;Flip the screen
Flip ;Flip backbuffer to the front
Cls ;Clear the screen (backbuffer) (with ClsColor)

;Check if player is standing at a level exit
TileX = PlayerX+ScreenX
TileY = PlayerY+ScreenY
For iter = 1 To NumExits
If Int(TileX/40) = LevelExit(iter, 0) ;Check if players x pos. = the exits x pos.
If Abs(20-(TileX Mod 40)) < 5 ;Check if player is covering up most of the exit (within 5 pixels)
If Int(TileY/40-1) = LevelExit(iter, 1) ;Check if players y pos. = the exits y pos.
CurLevel = LevelExit(iter,2);Change current level to new level
If CurLevel = 0 ;Reached end of game?
GameOver = 2 ; if so, then quit
Else ; if not, then load next level
LoadLevel(CurLevel, LevelExit(iter, 3), LevelExit(iter, 4));level, x, y
EndIf
Exit ;A level exit was found, no need to check for others
EndIf
EndIf
EndIf
Next

;Check if game is over
If GameOver ;The following code is just used here in this example
Color 150, 20, 20
Rect 270, 220, 100, 60 ;Draw a red rectangle in the middle of the screen
Color 250, 250, 250
If GameOver = 2
Text 320, 250, "You Win!", True, True ;Draw You Win! into the rectangle
Else
Text 320, 250, "Game Over", True, True ;Draw Game Over into the rectangle
EndIf
Flip
Repeat ;Repeats until the user
Until KeyHit(1) ; presses the Esc key
End ; and ends the program
EndIf

Until KeyHit(1) ;Repeats main loop until the user presses the Esc key
End ;Ends the program



;;;;;;;;;;;;;;;;;;;;;;;;;;; FUNCTIONS ;;;;;;;;;;;;;;;;;;;;;;;;;;

Function LoadLevel(lvl, startX, startY)
Select lvl
Case 1
Restore Data_Level1 ;Set data pointer to level 1
Case 2
Restore Data_Level2 ;Set data pointer to level 2
Case 3
Restore Data_Level3 ;Set data pointer to level 3
Default
RuntimeError("Error: Level " + lvl + " doesn't exist!")
End Select
;Read in the level width and height
Read LevelWidth ;Width of level in tiles
Read LevelHeight ;Height of level in tiles
If LevelWidth > 999 Or LevelWidth < 1 Then RuntimeError("Error: Level " + lvl + " data is corrupt!")
If LevelHeight > 999 Or LevelHeight < 1 Then RuntimeError("Error: Level " + lvl + " data is corrupt!")
Dim Level(LevelWidth-1, LevelHeight-1) ;Dimension grid that describes the game level at this time
;Verify the players starting tile
If startX >= LevelWidth Or startX < 0 Then RuntimeError("Error: Level " + lvl + " data is corrupt!")
If startY >= LevelHeight Or startY < 1 Then RuntimeError("Error: Level " + lvl + " data is corrupt!")
;Compute initial starting positions
If startX < 5 ;If player is near left edge of level then
ScreenX = 0 ; set the screen all the way left and
PlayerX = startX * 40 + 20 ; set players x starting pos
ElseIf startX > LevelWidth - 12 ;If player is near right edge of level then
ScreenX = LevelWidth * 40 - 640 ; set the screen all the way right, minus screen width and
PlayerX = startX * 40 - ScreenX + 20 ; set players x starting pos minus screen pos
Else ;If player isn't near left/right edges of level then
ScreenX = startX * 40 - 200 ; set the screen 5 tiles to the left of player and
PlayerX = 220 ; set the players x starting position at 220
EndIf
If startY < 4 ;If player is near top edge of the level then
ScreenY = 0 ; set the screen at the top and
PlayerY = (startY + 1) * 40 ; set players y starting pos
ElseIf startY > LevelHeight - 9 ;If player is near the bottom edge of the level then
ScreenY = LevelHeight * 40 - 480 ; set the screen all the way down, minus screen height and
PlayerY = (startY + 1) * 40 - ScreenY ; set players y starting position minus screen pos
Else ;If player isn't near top/bottom edges of level then
ScreenY = (startY + 1) * 40 - 160 ; set the screen 4 tiles above the player and
PlayerY = 160 ; set the players y starting position at 160
EndIf
MaxScreenX = 40 * LevelWidth - 640 - 1 ;Set the screens maximum x position
MaxScreenY = 40 * LevelHeight - 480 ;Set the screens maximum y position
;Read in the screen clearing color
Read clscol
If clscol = 1
ClsColor 100, 110, 200 ;Set cls color to sky color
Else
ClsColor 0, 0, 0 ;Set cls color to black
EndIf
;Read in exit data
Read NumExits ;Read in number of exits in the level
If NumExits > 10 Or NumExits < 1 Then RuntimeError("Error: Level " + lvl + " data is corrupt!")
Dim LevelExit(NumExits, 4) ;Dimension LevelExit array at this time
For iter = 1 To NumExits ;Iterate through the exits
Read LevelExit(iter, 0) ;Read the exits x position
Read LevelExit(iter, 1) ;Read the exits y position
Read LevelExit(iter, 2) ;Read which level the exit links to
Read LevelExit(iter, 3) ;Read new x pos on new level
Read LevelExit(iter, 4) ;Read new y pos on new level
Next
;Read in level data
For yIter = 0 To LevelHeight-1 ;Loop from top to bottom
For xIter = 0 To LevelWidth-1 ;Loop from left to right
Read Level(xIter, yIter) ;Read in tile data for each xIter, yIter location
If Level(xIter, yIter) > maxTile Or Level(xIter, yIter) < 0 Then RuntimeError("Error: Level " + lvl + " data is corrupt!")
Next
Next
;Reset some game variables
XVel = 0 ;Reset players velocitys or he'll keep on moving
YVel = 0 ; when entering into the next level
End Function



;;;;;;;;;;;;;;;;;;;;;;;;;;;; DATA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Tile descriptions
;0 blank ;passable tile
;1 sky ;passable tile
;2 cloud ;passable tile
;3 background object ;passable tile
;4 solid block ;nonpassable tile
;5 soft block ;nonpassable tile
;6 grass ;nonpassable tile

.Data_Level1
;Level 1 description
Data 80, 12 ;Level width, height
Data 1 ;cls color = sky
Data 2 ;number of exits in this level
Data 76, 10, 2, 56, 8 ;exit location x, y; level number; start location x, y
Data 36, 9, 3, 1, 2 ;exit location x, y; level number; start location x, y
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data 1,3,1,1,1,3,1,3,3,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1
Data 1,3,1,1,1,3,1,3,1,3,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1
Data 1,3,1,3,1,3,1,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data 1,3,3,3,3,3,1,3,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,5,5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data 1,1,3,1,3,1,1,3,1,3,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,1,5,5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,1,1
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,5,1,1,5,1,1,1,4,1,1,1,1,1,1,1,1,5,2,5,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,1
Data 1,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,5,2,5,1,1,1,1,5,4,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,1,1,3,3,1,3,3,1
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,5,5,5,1,1,1,4,5,4,5,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,1,1,1,1,1,1,1,1,1,3,3,1,3,3,1
Data 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,1,1,1,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6

.Data_Level2
;Level 2 description
Data 60, 18 ;Level width, height
Data 1 ;cls color = sky
Data 3 ;number of exits in this level
Data 55, 8, 1, 75, 10 ;exit location x, y; level number; start location x, y
Data 27, 7, 0, 0, 0 ;exit location x, y; ends game; start locations irrelevant
Data 22, 14, 3, 17, 12 ;exit location x, y; level number; start location x, y
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1
Data 1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,1,1,1
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,1
Data 4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,3,1,1,1,1,1,3,1
Data 4,5,5,5,5,5,5,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,3,1,1,1,1,1,3,1
Data 4,5,5,5,5,5,5,5,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,3,1,1,4,1,1,1,1,5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,3,3,3,3,3,3,3,1
Data 4,5,5,5,5,5,5,5,5,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,3,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,3,3,3,1,3,3,3,1
Data 4,5,5,5,5,5,5,5,5,5,4,1,1,1,1,1,5,1,5,5,5,1,5,1,1,1,4,4,4,4,4,1,1,1,1,1,1,1,1,4,3,2,4,1,4,2,3,4,1,1,1,5,3,3,3,1,3,3,3,1
Data 4,5,5,5,5,5,5,5,5,5,5,4,1,1,1,1,3,1,1,3,1,1,3,1,1,1,3,1,1,1,3,1,1,1,1,1,1,1,1,1,1,2,4,1,4,2,1,1,1,1,1,5,3,3,4,4,4,3,3,1
Data 4,5,5,5,5,5,5,5,5,5,5,5,4,1,1,1,3,1,1,3,1,1,3,1,1,1,3,1,1,1,3,1,1,1,1,1,1,1,1,1,1,4,4,1,4,4,1,1,1,1,1,5,3,3,3,3,3,3,3,1
Data 4,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,1,4,6,6,6,6,6,6,6,3,3,3,3,3,3,3,1
Data 4,5,5,5,5,5,5,5,5,5,5,5,5,1,1,1,1,1,1,1,1,4,4,1,1,1,3,4,3,4,3,1,1,1,1,1,1,1,1,4,3,1,4,1,4,1,3,4,1,1,1,1,3,3,3,3,3,3,3,1
Data 4,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,1,1,1,1,1,4,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,4,4,4,3,3,1
Data 4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,5,1,1,5,1,4,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,1
Data 4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,1,6,1,6,1,6,1,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
Data 4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,6,6,6,6,6,6
Data 4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,6,6,6,6,6

.Data_Level3
;Level 3 description
Data 19, 32 ;Level width, height
Data 0 ;cls color = black
Data 1 ;number of exits in this level
Data 17, 2, 1, 37, 7 ;exit location x, y; level number; start location x, y
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4
Data 4,0,0,4,4,4,4,4,0,0,0,0,0,4,5,5,5,5,4
Data 4,0,0,4,5,5,5,5,4,0,0,0,4,5,5,5,5,5,4
Data 4,0,0,4,5,5,5,5,5,4,0,0,0,0,0,0,5,5,4
Data 4,0,0,4,4,5,5,5,5,5,4,0,0,0,0,0,5,5,4
Data 4,0,0,0,0,4,4,4,4,4,4,4,4,4,0,0,4,4,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0
Data 4,3,4,4,4,0,0,4,0,0,0,0,0,0,5,5,5,0,0
Data 4,0,0,4,5,0,0,5,4,0,0,0,4,5,5,5,0,0,4
Data 4,0,0,4,5,5,0,0,5,4,0,4,5,5,5,5,0,0,4
Data 4,0,0,4,5,5,0,0,0,5,4,5,5,0,0,0,0,0,4
Data 4,0,0,4,5,5,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,4,4,5,5,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,4,4,4,4,4,4,4,4,4,0,0,4,4,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4
Data 4,3,4,4,4,4,4,4,4,4,0,0,0,0,4,4,4,4,4
Data 4,0,4,4,4,0,0,0,0,0,0,0,0,0,5,5,5,5,4
Data 4,0,0,4,5,0,0,0,0,0,0,0,4,5,5,5,5,5,4
Data 4,0,0,4,5,5,0,0,0,0,0,0,5,5,5,5,5,5,4
Data 4,0,0,4,0,0,0,0,0,5,4,5,5,0,0,0,0,0,4
Data 4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
Data 4,0,0,0,0,0,4,4,4,4,4,4,4,4,0,0,4,4,4
Data 4,4,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,4
Data 4,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4

;End of file


Floyd(Posted 2012) [#6]
This is an unusually huge entry in the Code Archives.

Pitfall II remake in Code Archives

As it says there you need to download all the media files. Astonishing, they still exist after more than eight years.

I tried this and it looks like the code will still need some (minor?) tweaks for BlitzPlus. For example, AppTitle has changed slightly.

As a practical matter, if you are a beginner then you shouldn't start with an example which has 2792 lines of code and depends on 69 external files.


mv333(Posted 2013) [#7]
2D platformer example

The code needs 2 files called "bgtiles.png" and "jumpman.png". Go to the bottom of the page that i linked to, where the 2 yellow folders are. Download the 2 files to a folder on your computer. Save the code in the same folder as those 2 files.