mirror of
https://github.com/sam-astro/Z-Sharp.git
synced 2025-12-13 09:02:10 +00:00
102 lines
2.5 KiB
Plaintext
102 lines
2.5 KiB
Plaintext
int g_screenw = 900
|
|
int g_screenh = 600
|
|
|
|
float g_playerWalkSpeed = 400
|
|
float g_playerRunSpeed = 700
|
|
float g_jumpHeight = 20
|
|
float g_currPlayerSpeed = 400
|
|
|
|
bool g_running = false
|
|
|
|
float g_gravitySpeed = -86
|
|
|
|
include "./extra-include.zs"
|
|
|
|
func Main()
|
|
{
|
|
// Immediately creates the window, then Start(), then the game loop. The game loop calls Update() every frame
|
|
ZS.Graphics.Init("Platformer game", g_screenw, g_screenh)
|
|
}
|
|
|
|
func Start()
|
|
{
|
|
float centerX = g_screenw / 2
|
|
float centerY = g_screenh / 2
|
|
global Vec2 g_screencenter = NVec2(centerX, centerY)
|
|
|
|
Vec2 playerPos = g_screencenter
|
|
Vec2 playerScale = NVec2(40, 40)
|
|
global Sprite g_playerSprite = ZS.Graphics.Sprite("./square.png", playerPos, playerScale, 0)
|
|
|
|
Vec2 groundPos = NVec2(g_screencenter.x, 500)
|
|
Vec2 groundScale = NVec2(256, 16)
|
|
global Sprite g_groundSprite = ZS.Graphics.Sprite("./square.png", groundPos, groundScale, 0)
|
|
|
|
Vec2 instructionsPos = NVec2(centerOfScreen.x, g_screenh - 60)
|
|
global Text g_instructionsText = ZS.Graphics.Text("Use Arrow Keys or WASD to Move, and Spacebar to Jump", "./arial.ttf", instructionsPos, 20, 0, 255, 255, 255)
|
|
|
|
global Vec2 g_playerTargetPosition = playerPos
|
|
|
|
int i = 0
|
|
while i < 10 {
|
|
i += 1
|
|
print "while iter : " + i
|
|
}
|
|
}
|
|
|
|
func Update(deltaTime) {
|
|
float fps = 1 / deltaTime
|
|
print "FPS: " + fps
|
|
TestInclude()
|
|
|
|
//// Test automatic conversion from bool to int
|
|
//int c = GetKey("A")
|
|
//print "Test: " + c
|
|
|
|
// Shift key lets you sprint
|
|
g_running = GetKey("SHIFT_L")
|
|
|
|
if g_running == true{
|
|
g_currPlayerSpeed = g_playerRunSpeed
|
|
}
|
|
if g_running == false
|
|
{
|
|
g_currPlayerSpeed = g_playerWalkSpeed
|
|
}
|
|
|
|
// Move Left And Right
|
|
if GetKey("A") == true
|
|
{
|
|
float newY = g_playerSprite.position.y
|
|
|
|
float newX = g_playerTargetPosition.x - g_currPlayerSpeed * deltaTime
|
|
g_playerTargetPosition = NVec2(newX, newY)
|
|
}
|
|
if GetKey("D") == true
|
|
{
|
|
float newY = g_playerSprite.position.y
|
|
|
|
float newX = g_playerTargetPosition.x + g_currPlayerSpeed * deltaTime
|
|
g_playerTargetPosition = NVec2(newX, newY)
|
|
}
|
|
// Lerps from old position to destination smoothly
|
|
float oldX = g_playerSprite.position.x
|
|
float newX = g_playerTargetPosition.x
|
|
float stopSpeed = deltaTime * 7
|
|
float lerpedX = Lerp(oldX, newX, stopSpeed)
|
|
g_playerSprite.position = NVec2(lerpedX, newY)
|
|
|
|
|
|
// Finally draws all of the sprites
|
|
ZS.Graphics.Draw(g_playerSprite)
|
|
ZS.Graphics.Draw(g_groundSprite)
|
|
|
|
ZS.Graphics.DrawText(g_instructionsText)
|
|
}
|
|
|
|
func Colliding(a, b)
|
|
{
|
|
bool b = ZS.Physics.AxisAlignedCollision(a, b)
|
|
return b
|
|
}
|