'+-------------------+
' SLAY
' ZEPPELIN GAMES 2019
'+-------------------+
'DECLARE VARIABLES
'SAVE DATA VARS
'PLAYER VARS
playerScale = 15
'PLAYER STATS
'SCREEN AND FORMATTING VARS
'GET THE SCREEN DIMSENSIONS
'FONT DATA
'SET THE COLOR
col
= _RGBA(255, 255, 255, 255)
'START GAME
LoadData
'LOAD SAVE DATA
'LOAD PLAYER SPRITE
LoadSprite player%(), playerScale
LoadSprite sword%(), playerScale / 1.2
filecount = filecount + 1 'COUNT AMOUNT OF LINES
saveData$(filecount) = file$
'PLAYER
'DECRYPT NAME
'DECRYPT STATS
'HEALTH
health$ = ""
health$
= health$
+ CHR$(ASC(MID$(saveData$
(2), n
, 1)) - 4)
player.basehealth
= VAL(health$
) 'LOAD BASE HEALTH player.health = player.basehealth 'SET PLAYER HEALTH
'SAVE DATA
save.
point = VAL(saveData$
(3)) 'LOAD SAVE POINT 'STATS
stats.enemyskilled
= VAL(saveData$
(4)) 'ENEMYS KILLED stats.totaldeaths
= VAL(saveData$
(5)) 'TOTAL DEATHS CreateNewSave
CreateNewSave
'START GAME
DrawLogo
'CREATE NEW SAVE FILE
scaledText w
/ 2 - 65, h
/ 2 + 8, 16, _RGBA(255, 255, 255, 255), "Enter your name: " _PRINTSTRING (w
/ 2 - 150, h
/ 2), "Name length should be less than 16 characters" LoadData
'SET VARS
player.health = 100
stats.enemyskilled = 0
stats.totaldeaths = 0
'ENCRYPT SAVE DATA
'NAME
tempName$
= tempName$
+ CHR$(ASC(nameArray$
(n
)) + 4) tempName$
= tempName$
+ CHR$(INT(RND * 100) + 100)
'ENCRYPT STATS
'HEALTH
healthArray$
(n
) = MID$(STR$(player.health
), n
, 1)
tempHealth$
= tempHealth$
+ CHR$(ASC(healthArray$
(n
)) + 4) tempHealth$
= tempHealth$
+ CHR$(INT(RND * 100) + 100)
'SAVE VARS TO TXT
'PLAYER
'SAVE DATA
'STATS
PRINT #1, stats.enemyskilled
PRINT #1, stats.totaldeaths
'FADE LOGO IN
'LIMIT FPS
LINE (w
/ 10 * 2, h
/ 10 * 7)-(w
/ 10 * 8, h
/ 10 * 8), _RGB(0, 0, 0), BF
scaledText w
/ 2, h
/ 2, 500, _RGBA32(255, 255, 255, n
), "Z" scaledText w
/ 2, h
/ 6 * 4.5, 50, _RGBA(255, 255, 255, n
), "ZEPPELIN GAMES"
scaledText w
/ 2, h
/ 2, 500, _RGBA32(255, 255, 255, 255), "Z" scaledText w
/ 2, h
/ 6 * 4.5, 50, _RGBA32(255, 255, 255, 255), "ZEPPELIN GAMES"
'FADE THE LOGO AND TEXT OUT
'LIMIT FPS
LINE (w
/ 10 * 2, h
/ 10 * 7)-(w
/ 10 * 8, h
/ 10 * 8), _RGB(0, 0, 0), BF
scaledText w
/ 2, h
/ 2, 500, _RGBA32(255, 255, 255, 255 - n
), "Z" scaledText w
/ 2, h
/ 6 * 4.5, 50, _RGBA(255, 255, 255, 255 - n
), "ZEPPELIN GAMES" DrawMenu
'FADE IN MENU SCREEN
col
= _RGBA(255, 255, 255, 255) 'S
LINE (w
/ 10 * 2.75, h
/ 10 * 1.5)-(w
/ 10 * 3.5, h
/ 10 * 1.75), col
, BF
'1ST ACROSS LINE (w
/ 10 * 2.75, h
/ 10 * 1.5)-(w
/ 10 * 3, h
/ 10 * 2.5), col
, BF
'1ST DOWN LINE (w
/ 10 * 2.75, h
/ 10 * 2.5)-(w
/ 10 * 3.45, h
/ 10 * 2.75), col
, BF
'2ND ACROSS LINE (w
/ 10 * 3.2, h
/ 10 * 2.75)-(w
/ 10 * 3.45, h
/ 10 * 2.9), col
, BF
'2ND DOWN LINE (w
/ 10 * 3.2, h
/ 10 * 3.35)-(w
/ 10 * 3.45, h
/ 10 * 3.75), col
, BF
'EXTENDED 2ND DOWN LINE (w
/ 10 * 2.65, h
/ 10 * 3.75)-(w
/ 10 * 3.45, h
/ 10 * 4.1), col
, BF
'3RD ACROSS
'L
LINE (w
/ 10 * 3.8, h
/ 10 * 1.5)-(w
/ 10 * 4.05, h
/ 10 * 2.65), col
, BF
'1ST DOWN LINE (w
/ 10 * 3.8, h
/ 10 * 3.6)-(w
/ 10 * 4.05, h
/ 10 * 3.75), col
, BF
'EXTENDED 1ST DOWN LINE (w
/ 10 * 3.8, h
/ 10 * 3.75)-(w
/ 10 * 4.6, h
/ 10 * 4.1), col
, BF
'1ST ACROSS
'A
LINE (w
/ 10 * 4.85, h
/ 10 * 1.5)-(w
/ 10 * 5.1, h
/ 10 * 2.7), col
, BF
'LEFT DOWN LINE (w
/ 10 * 4.85, h
/ 10 * 1.5)-(w
/ 10 * 5.75, h
/ 10 * 1.8), col
, BF
'TOP LINE LINE (w
/ 10 * 5.5, h
/ 10 * 1.5)-(w
/ 10 * 5.75, h
/ 10 * 2.7), col
, BF
'RIGHT DOWN LINE (w
/ 10 * 5.55, h
/ 10 * 1.5)-(w
/ 10 * 5.75, h
/ 10 * 2.9), col
, BF
'RIGHT DOWN EDGE LINE (w
/ 10 * 4.85, h
/ 10 * 2.4)-(w
/ 10 * 5.75, h
/ 10 * 2.65), col
, BF
'MIDDLE LINE LINE (w
/ 10 * 4.85, h
/ 10 * 3.5)-(w
/ 10 * 5.1, h
/ 10 * 4.1), col
, BF
'EXTENDED LEFT DOWN LINE (w
/ 10 * 5.5, h
/ 10 * 3.5)-(w
/ 10 * 5.75, h
/ 10 * 4.1), col
, BF
'EXTENDED RIGHT DOWN LINE (w
/ 10 * 5.55, h
/ 10 * 3.35)-(w
/ 10 * 5.75, h
/ 10 * 4.1), col
, BF
'EXTENDED RIGHT DOWN EDGE
'Y
LINE (w
/ 10 * 6, h
/ 10 * 1.5)-(w
/ 10 * 6.25, h
/ 10 * 2.75), col
, BF
'LEFT DOWN LINE (w
/ 10 * 6.75, h
/ 10 * 1.5)-(w
/ 10 * 7, h
/ 10 * 3), col
, BF
'RIGHT DOWN LINE (w
/ 10 * 6, h
/ 10 * 2.5)-(w
/ 10 * 7, h
/ 10 * 2.85), col
, BF
'1ST ACROSS LINE (w
/ 10 * 6.75, h
/ 10 * 3.25)-(w
/ 10 * 7, h
/ 10 * 4.1), col
, BF
'EXTENDED RIGHT DOWN LINE (w
/ 10 * 6, h
/ 10 * 3.8)-(w
/ 10 * 7, h
/ 10 * 4.1), col
, BF
'BOTTOM LINE
'SWORD
LINE (w
/ 10 * 3, h
/ 10 * 3)-(w
/ 10 * 6.5, h
/ 10 * 3.25), col
, BF
'HILT LINE (w
/ 10 * 3.5, h
/ 10 * 2.5)-(w
/ 10 * 3.75, h
/ 10 * 3.75), col
, BF
'Hand Guard LINE (w
/ 10 * 3.75, h
/ 10 * 2.75)-(w
/ 10 * 4.75, h
/ 10 * 3.50), col
, BF
'Blade First Layer LINE (w
/ 10 * 4.75, h
/ 10 * 2.85)-(w
/ 10 * 5.5, h
/ 10 * 3.4), col
, BF
'Blade 2nd Layer LINE (w
/ 10 * 5.5, h
/ 10 * 3.10)-(w
/ 10 * 7, h
/ 10 * 3.15), col
, BF
'Tip of Blade
col
= _RGBA(0, 0, 0, 255) LINE (w
/ 10, h
/ 10 * 4.5)-(w
, h
/ 10 * 7), col
, BF
'CLEAR OPTIONS
'SHOW ACCOUNT
'PRINT MENU OPTIONS
scaledText w
/ 2, h
/ 10 * 4.75, 25, _RGBA(255, 255, 255, 255), "SINGLE-PLAYER" scaledText w
/ 2, h
/ 10 * 5.25, 25, _RGBA(255, 255, 255, 255), "MULTI-PLAYER" scaledText w
/ 2, h
/ 10 * 5.75, 25, _RGBA(255, 255, 255, 255), "OPTIONS" scaledText w
/ 2, h
/ 10 * 6.25, 25, _RGBA(255, 255, 255, 255), "QUIT" scaledText w
/ 2, h
/ 10 * 9.5, 14, _RGBA(255, 255, 255, 255), "TIP: USE 'w' AND 's' TO NAVIGATE. PRESS 'ENTER' TO SELCT"
'PICK MENU OPTION
opt = 0
col
= _RGBA(0, 0, 0, 255) LINE (w
/ 2 - 90, h
/ 10 * 4.5)-(w
/ 2 - 110, h
/ 10 * 7), col
, BF
'CLEAR PAST POINTERS _PRINTSTRING (w
/ 2 - 100, h
/ 10 * (4.6 + (0.52 * opt
))), ">" 'DISPLAY POINTER
CASE "s", "S" 'MOVE POINTER DOWN opt = 0
opt = opt + 1
CASE "w", "W" 'MOVE POINTER UP opt = 3
opt = opt - 1
'SINGLE-PLAYER SELECTED
SinglePlayerMenu
'MULTI-PLAYER SELECTED
MultiplayerGameMenu
'OPTIONS SELETED
OptionsMenu
'QUIT SELECTED
LINE (w
/ 10, h
/ 10 * 4.5)-(w
, h
/ 10 * 7), col
, BF
'CLEAR OPTIONS scaledText w
/ 2, h
/ 10 * 4.75, 25, _RGBA(255, 255, 255, 255), "INFO" scaledText w
/ 2, h
/ 10 * 5.25, 25, _RGBA(255, 255, 255, 255), "RESET GAME" scaledText w
/ 2, h
/ 10 * 5.75, 25, _RGBA(255, 255, 255, 255), "BACK" scaledText w
/ 2, h
/ 10 * 9.5, 14, _RGBA(255, 255, 255, 255), "TIP: USE 'w' AND 's' TO NAVIGATE. PRESS 'ENTER' TO SELCT"
opt = 0
LINE (w
/ 2 - 90, h
/ 10 * 4.5)-(w
/ 2 - 110, h
/ 10 * 7), col
, BF
'CLEAR PAST POINTERS _PRINTSTRING (w
/ 2 - 100, h
/ 10 * (4.6 + (0.52 * opt
))), ">" 'DISPLAY POINTER
CASE "s", "S" 'MOVE POINTER DOWN opt = 0
opt = opt + 1
CASE "w", "W" 'MOVE POINTER UP opt = 2
opt = opt - 1
LINE (0, h
/ 10 * 4.7)-(w
, h
), col
, BF
'CLEAR OPTIONS scaledText w
/ 2, h
/ 10 * 4.75, 25, _RGBA(255, 255, 255, 255), "ZEPPELIN GAMES 2018" scaledText w
/ 2, h
/ 10 * 5.25, 25, _RGBA(255, 255, 255, 255), "SLAY V4" scaledText w
/ 2, h
/ 10 * 6.25, 25, _RGBA(255, 255, 255, 255), "ENEMIES KILLED: " + STR$(stats.enemyskilled
) scaledText w
/ 2, h
/ 10 * 6.75, 25, _RGBA(255, 255, 255, 255), "TOTAL DEATHS: " + STR$(stats.totaldeaths
) scaledText w
/ 2, h
/ 10 * 9.25, 14, _RGBA(255, 255, 255, 255), "PRESS ANY KEY TO CONTINUE"
LINE (0, h
/ 10 * 4.7)-(w
, h
), col
, BF
'CLEAR OPTIONS OptionsMenu
DrawMenu
col
= _RGBA(0, 0, 0, 255) LINE (w
/ 10, h
/ 10 * 4.5)-(w
, h
/ 10 * 7), col
, BF
'CLEAR OPTIONS scaledText w
/ 2, h
/ 10 * 4.75, 25, _RGBA(255, 255, 255, 255), "CAMPAIGN" scaledText w
/ 2, h
/ 10 * 5.25, 25, _RGBA(255, 255, 255, 255), "INFINITE" scaledText w
/ 2, h
/ 10 * 5.75, 25, _RGBA(255, 255, 255, 255), "BACK" scaledText w
/ 2, h
/ 10 * 9.5, 14, _RGBA(255, 255, 255, 255), "TIP: USE 'w' AND 's' TO NAVIGATE. PRESS 'ENTER' TO SELCT"
opt = 0
LINE (w
/ 2 - 90, h
/ 10 * 4.5)-(w
/ 2 - 110, h
/ 10 * 7), col
, BF
'CLEAR PAST POINTERS _PRINTSTRING (w
/ 2 - 100, h
/ 10 * (4.6 + (0.52 * opt
))), ">" 'DISPLAY POINTER
CASE "s", "S" 'MOVE POINTER DOWN opt = 0
opt = opt + 1
CASE "w", "W" 'MOVE POINTER UP opt = 2
opt = opt - 1
Campaign
Infinite
DrawMenu
'CAMPAIGN - STORY
'PRACTICE - GAMEMODE
'DEFINE LOCAL VARS
playerSpeed = 500
jumpHeight = 150
health = 100
jump = 0
pX
= _WIDTH / 2 - (playerScale
* 2.5)
swordX = pX
swordY = pY + (playerScale * 5)
pX = pX + playerSpeed / 100
pX = pX - playerSpeed / 100
IF pX
< (playerScale
* 12) THEN pX
= (playerScale
* 12) jump = 1
pY = pY - playerSpeed / 100
'Spin Sword
swing = 1
swordX
= pX
+ ((playerScale
* 6) * COS(_D2R(angle
))) swordY
= pY
+ ((playerScale
* 6) * SIN(_D2R(angle
)))
jump = 2
pY = pY + playerSpeed / 100
'Spin Sword
swing = 1
swordX
= pX
+ ((playerScale
* 6) * COS(_D2R(angle
))) swordY
= pY
+ ((playerScale
* 6) * SIN(_D2R(angle
)))
jump = 0
swing = 0
angle = angle + (jumpHeight / 100)
LINE (pX
- (playerScale
* 10) - 10, pY
- (playerScale
* 12) - 10)-(pX
+ ((playerScale
* 10) * 2) + 10, pY
+ (playerScale
* 10) + 10), _RGB(0, 0, 0), BF
PUT (swordX
, swordY
), sword%
()
deltaTime = eTime - sTime
SaveGame
DrawMenu
'MULTIPLAYER GAME MENU
LINE (w
/ 10, h
/ 10 * 4.7)-(w
, h
/ 10 * 7), col
, BF
'CLEAR OPTIONS
opt = 0
LINE (w
/ 2 - 58, h
/ 10 * 4.7)-(w
/ 2 - 70, h
/ 10 * 7), col
, BF
'CLEAR PAST POINTERS _PRINTSTRING (w
/ 2 - 65, h
/ 10 * (4.75 + (0.5 * opt
))), ">" 'DISPLAY POINTER
CASE "s" 'MOVE POINTER DOWN opt = 0
opt = opt + 1
CASE "w" 'MOVE POINTER UP opt = 2
opt = opt - 1
LocalMultiplayer
LANMultiplayer
DrawMenu
'MULTIPLAYER ON SAME DEVICE
'MULTIPLAYER OVER WIFI CONNECTION
'SAVE VARS TO TXT
'PLAYER
'SAVE DATA
'STATS
PRINT #1, stats.enemyskilled
PRINT #1, stats.totaldeaths
SUB LoadSprite
(sp%
(), scale
) READ sprite
(x
, y
) 'Read the data
FOR y
= 0 TO 4 * scale
STEP scale
'Factor in the scale spriteCol = sprite(x / scale, y / scale)
LINE (x
, y
)-(x
+ scale
, y
+ scale
), _RGB(spriteCol
* 255, spriteCol
* 255, spriteCol
* 255), BF
'Draw each pixel
GET (0, 0)-(scale
* 5, scale
* 5), sp%
()
'Player Data
'Sword Data
'screen snapshot
mult = textHeight / 16
xlen
= LEN(txt$
) * 8 * mult
_PUTIMAGE (x
- .5 * xlen
, y
- .5 * textHeight
)-STEP(xlen
, textHeight
), I&
, cur&