SuperStrict
Graphics 800 , 600
Global Tiles:TImage = LoadImage("tile.png")
Global Player:TImage = LoadImage("player1632.png")
Const MAPWIDTH:Int = 800/32
Const MAPHEIGHT:Int = 600/32
Global Map:Int[MAPWIDTH , MAPHEIGHT]
Global PlayerX:Float
Global PlayerY:Float
Global Player_Width:Int = 16
Global Player_Height:Int = 32
Global CheckPlayerPosition:Int = 0
Global Direction:Int = -1
Global Jump:Int = 0
Const Gravity:Float = 0.2
Global JumpHeight:Float = 5.3
Global CanJump:Int = 1
Global Falling:Int = 0
ReadLevelData() ' We Read the level data
While Not KeyHit(KEY_ESCAPE)
Cls
DrawMap()
CheckIfPlayerCollideWithTile()
DrawPlayer()
MovePLayer()
DoJump()
Flip
Wend
'######################################################
'#### Function DrawPLayer() #
'#### Draws Player to Screen and gets Player Position #
'######################################################
Function DrawPlayer()
If CheckPlayerPosition = 0
For Local x:Int = 0 Until MAPWIDTH
For Local y:Int = 0 Until MAPHEIGHT
Select Map[x, y]
Case 2
PlayerX = getX(x)
PlayerY = getY(y)
CheckPlayerPosition = 1
End Select
Next
Next
EndIf
DrawText "PlayerX = " +PlayerX , 0 , 20
DrawImage Player, PlayerX , PlayerY , 0
End Function
'#################################################
'### Function MovePLayer() #
'## Moves Player and checks outer boundaries #
'#################################################
Function MovePLayer()
If KeyDown(KEY_LEFT) And Not KeyDown(KEY_RIGHT)
Direction = 0
PlayerX:-2
ElseIf KeyDown(KEY_RIGHT) And Not KeyDown(KEY_LEFT)
Direction = 1
PlayerX:+2
End If
If PlayerX - 32 <= 0
PlayerX:+2
ElseIf PlayerX >= 800 - 32
PlayerX:-2
End If
End Function
'##########################################################
'### Function CheckIfPlayerCollideWithTile() #
'### Checks to see if the player has collided with a tile #
'### Checks also if the Player is falling #
'##########################################################
Function CheckIfPlayerCollideWithTile()
'#Region
Select Direction
Case 1
If Jump = 0
If Map[(PlayerX - Player_Width) / 32 + 1, PlayerY / 32]= 1
PlayerX:-2
EndIf
EndIf
If Jump = 1 and PlayerX >= 784 - 32
If Map[(PlayerX - Player_Width) / 32 + 1, PlayerY / 32]= 1
PlayerX:-2
EndIf
End If
Case 0
If Jump = 0
If Map[(PlayerX + Player_Width) / 32, PlayerY / 32]= 1
PlayerX:+2
End If
EndIf
End Select
'#End Region
If Falling = 1
PlayerY:+3.2
If Map[(PlayerX + Player_Width) / 32, PlayerY / 32 + 1]= 1 or Map[(PlayerX - Player_Width * 2) / 32 + 1, PlayerY / 32 + 1]= 1
If (PlayerY mod 32.0) <= 6.4
PlayerY = PlayerY - (PlayerY mod 32)
Jump = 0
Falling = 0
CanJump = 1
JumpHeight = 5.5
EndIf
EndIf
End If
If not Map[(PlayerX + Player_Width) / 32, PlayerY / 32 + 1]and not Map[(PlayerX - Player_Width * 2) / 32 + 1, PlayerY / 32 + 1]
If Jump = 0
Falling = 1
End If
End If
End Function
'##############################################
'### Function DoJump() #
'### Makes our player jump #
'##############################################
Function DoJump()
If KeyHit(KEY_SPACE) and CanJump = 1
Jump = 1
CanJump = 0
End If
If Jump = 1
PlayerY:-JumpHeight
JumpHeight:-Gravity
If JumpHeight <= - 1.0 or PlayerY < 32
Falling = 1
EndIf
End If
End Function
'########################################
'### Function DrawMap() #
'### We Draw the Map to screen #
'########################################
Function DrawMap()
For Local x:Int = 0 Until MAPWIDTH
For Local y:Int = 0 Until MAPHEIGHT
Select Map[x, y]
Case 1
DrawImage Tiles, x * 32, y * 32, 0
End Select
Next
Next
End Function
'#######################################################
'### Function ReadLevelData() #
'### We read the data stored in the defdata statements #
'#######################################################
Function ReadLevelData()
For Local y:Int = 0 Until MAPHEIGHT
For Local x:Int = 0 Until MAPWIDTH
Local Data:Int
ReadData Data
Map[x, y]= Data
Next
Next
End Function
Function getX:Int(x:Int)
Return 32 * x '+ offsetX
End Function
Function getY:Int(y:Int)
Return 32 * y '+ offsetX
End Function
DefData 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
DefData 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
DefData 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1
DefData 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
DefData 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1
DefData 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
DefData 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1
DefData 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
DefData 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
DefData 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
DefData 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1
DefData 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
DefData 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1
DefData 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
DefData 1, 0, 0, 0, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1
DefData 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
DefData 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
DefData 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
Hope this helps! to make it work you need to have a 16x32 image for the player and a 32x32 image for the tile.
|