Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- OPTION _EXPLICIT
- OPTION BASE 0
- DIM windowDisplay&
- windowDisplay& = _NEWIMAGE(800, 600, 32) 'Set up the window screen
- SCREEN windowDisplay& 'Apply the window screen
- _TITLE "Platformer" 'Set the window title
- DIM stp% 'Global timer
- DIM level%(64, 64) 'Tile IDs within the level
- DIM tiles&(128) 'Tile graphics
- DIM scrollX% 'Camera X position
- DIM scrollY% 'Camera Y position
- DIM px% 'Character X position
- DIM py% 'Character Y position
- DIM gravityForce% 'Amount of gravitational force
- DIM tx% 'Tile X(for collision)
- DIM ty% 'Tile Y(for collision)
- DIM tnd% 'Tile ID(for floor collision)
- DIM tempFile$ 'Used for the tile loading routine
- DIM index% 'Used for the tile loading routine
- DIM ttime%
- DIM lastTime%
- DIM fps%
- DIM fps2%
- DIM imgData&
- _PRINTMODE _KEEPBACKGROUND
- CHDIR "Platformer/Backgrounds"
- DIM bg&
- bg& = _LOADIMAGE("blueGradient.png")
- CHDIR "../Character"
- DIM character&
- character& = _LOADIMAGE("character.png")
- CHDIR "../Fonts"
- DIM font&
- font& = _LOADIMAGE("Font1.png")
- index% = -1 'This is set to -1 because the routine changes it to 0 when it begins
- DIM x%
- DIM y%
- DIM level%
- DIM ex AS DOUBLE
- RESTORE LevelData
- WHILE 1
- FOR x% = 0 TO 7
- FOR y% = 0 TO 7
- READ level%
- IF level% = 255 THEN
- GOTO endLoad
- END IF
- NEXT
- NEXT
- WEND
- endLoad:
- CHDIR "../Tiles"
- RESTORE tilePaths
- DO 'Load all of the tile graphics
- READ tempFile$
- IF tempFile$ <> "0" THEN
- index% = index% + 1
- tiles&(index%) = _LOADIMAGE(tempFile$)
- ELSE
- GOTO Done
- END IF
- LOOP
- Done:
- CHDIR "../BGM"
- DIM bgMusic&
- bgMusic& = _SNDOPEN("NormalTheme.wav") 'Load a music file into the long variable called "bgMusic&"
- RESTORE LevelData
- DIM i%
- FOR i% = 0 TO 7
- READ level%(0, i%), level%(1, i%), level%(2, i%), level%(3, i%), level%(4, i%), level%(5, i%), level%(6, i%), level%(7, i%)
- NEXT
- _SNDLOOP bgMusic& 'Loop the music
- px% = 135
- py% = 50
- gravityForce% = 3
- WHILE 1 'Main game loop
- CLS
- stp% = stp% + 1
- 'py% = py% + gravityForce%
- scrollX% = 25 * SIN(25 * stp%)
- scrollY% = 25 * COS(25 * stp%)
- px% = stp% MOD 300
- GOSUB drawBG
- GOSUB drawLevel
- GOSUB collide
- GOSUB drawCharacter
- ttime% = VAL(MID$(TIME$, 7, 2))
- IF ttime% - lastTime% >= 1 THEN
- fps% = fps2%
- fps2% = 0
- lastTime% = ttime%
- ELSE
- fps2% = fps2% + 1
- END IF
- PRINT "FPS: "; fps%
- PRINT "scrollX%: "; scrollX%
- PRINT "scrollY%: "; scrollY%
- imgData& = _COPYIMAGE(0)
- 'CLS
- FOR i% = 0 TO _HEIGHT(imgData&)
- ex = 8 * SIN((stp% + i%) * 0.05)
- _PUTIMAGE (ex, i%), imgData&, 0, (0, i%)-(_WIDTH(imgData&), i%)
- NEXT
- _FREEIMAGE (imgData&)
- _DISPLAY 'Update the graphics
- _LIMIT 60 'Limit to 60 FPS
- WEND
- drawBG:
- _PUTIMAGE (0, 0), bg&
- RETURN
- drawLevel:
- FOR x% = 0 TO 63
- FOR y% = 0 TO 63
- _PUTIMAGE ((x% * 32) + scrollX%, (y% * 32) + scrollY%)-(((x% * 32) + scrollX%) + 31, ((y% * 32) + scrollY%) + 31), tiles&(level%(x%, y%))
- NEXT
- NEXT
- RETURN
- collide:
- tx% = (px% / 32) MOD 64
- ty% = (py% / 32) MOD 64
- tnd% = level%(tx%, ty% + 1)
- IF tnd% = 2 THEN
- IF py% > (ty% * 32) THEN
- py% = (ty% * 32)
- END IF
- END IF
- RETURN
- drawCharacter:
- _PUTIMAGE (px% + scrollX%, py% + scrollY%)-((px% + 32) + scrollX%, (py% + 32) + scrollY%), character&
- RETURN
- tilePaths: 'The paths for the tile graphics
- DATA "air.png"
- DATA "Grass/grassFloorLeftLedge.png"
- DATA "Grass/grassFloor.png"
- DATA "Grass/grassFloorRightLedge.png"
- DATA "Grass/grassLeftLedge.png"
- DATA "Grass/grassInside.png"
- DATA "Grass/grassRightLedge.png"
- DATA "Grass/grassCeilLeftLedge.png"
- DATA "Grass/grassCeil.png"
- DATA "Grass/grassCeilRightLedge.png"
- DATA "Grass/grassCornerTL.png"
- DATA "Grass/grassCornerTR.png"
- DATA "Grass/grassCornerBL.png"
- DATA "Grass/grassCornerBR.png"
- DATA "Grass/grassRampUpLeft.png"
- DATA "Stone/stoneFloor.png"
- DATA "0"
- LevelData: 'Test level data
- DATA 0,0,0,0,0,0,0,0
- DATA 0,0,0,0,0,0,0,14
- DATA 0,0,0,0,0,0,14,10
- DATA 0,0,0,1,2,2,10,0
- DATA 0,0,0,4,0,0,0,0
- DATA 0,0,0,4,0,0,0,0
- DATA 0,0,0,4,0,0,0,0
- DATA 2,2,2,10,0,0,0,0
- DATA 255
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement