I've been trying to get this thing running and so far haven't had any luck with it. My initial feedback for the game:
1) In all those menu routines, change the SELECT CASE so that they work will upcase values as well as lower case, like so:
SELECT CASE INKEY$
CASE "s", "S" 'MOVE POINTER DOWN
My caps lock was on, and the game was simply unresponsive, with no indication that something was wrong with it.
2) Add a _LIMIT into each of those menu routines. As they currently exist, they run CPU usage up to incredible levels and make the fans in my PC sound like an airplane engine as they try to keep the system cool. Something low is more than enough in this case, as people don't type at 1000 characters per second, and the program is only actually looking for a few keypresses here to progress. I'd go with a _LIMIT 30 or so, as that's all you really seem to need.
DO
_LIMIT 30
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
_DISPLAY 'REDUCE FLICKERING
Edit:
Like bplus, I also think that a _LIMIT of some sort should be set inside the loop, rather than trying to base movement upon elapsed time.
However, I think that the limit should be a set amount, with the ability to modify the movement as needed via the playerSpeed variable, rather than messing with the limit as his code would.
'DEFINE LOCAL VARS
playerSpeed = 500
health = 100
pX
= _WIDTH / 2 - (playerScale
* 2.5)
playerSpeed = playerSpeed + 50 'adjustable speed for testing with the player
IF playerSpeed
> 1000 THEN playerSpeed
= 1000 _DELAY .1 ' small pause to register/release the key playerSpeed = playerSpeed - 50
IF playerSpeed
< 100 THEN playerSpeed
= 100 pX = pX + playerSpeed / 100
pX = pX - playerSpeed / 100
LINE (pX
- (playerScale
* 5) - 1, pY
- (playerScale
* 5) - 1)-(pX
+ ((playerScale
* 5) * 2), pY
+ (playerScale
* 5) + 1), _RGB(0, 0, 0), BF
deltaTime = eTime - sTime
SaveGame
DrawMenu
Like this, you can set the speed of the program so that it'll have a maximum movement with _LIMIT on very fast computers, and you can increase the playerSpeed as necessary to keep game flow steady if it's ever ran on very old/slow computers. (Just add a condition to check for your FPS, which should always be within 1 of your limit, and then you can adjust the player and opponent speed to skip a few frames if the values get too low, to keep the game moving at the same rate, which is what I think you were wanting to do with deltatime as you implemented it.)