Posts: 699
Threads: 107
Joined: Apr 2022
Reputation:
27
Riddle me this, Batmen... easy for most, hard for me! When I run this bit of code, I expect Score to be 10,20,30...
If I then delay beyond the 5 seconds allowed and enter N$ again, I expect the score to be 39 (which it is)
But if I then enter N$ again (within the 5 seconds allowed), I get 50, instead of the 49 I expect. What am I doing wrong?
Code: (Select All) Pick = 0
GetInput:
T1 = Timer: ' start timer
Input N$
Pick = Pick + 1
T2 = Timer ' read timer again
TimePenalty = Int((T2 - T1) / 5) ' penalty 5 points per second since last input
Score = Pick * 10 - TimePenalty ' calculate score as Pick * 10 - TimePenalty
Print "Pick:"; Str$(Pick); " t1:"; Str$(T1); " t2:"; T2; " Timepenalty:"; TimePenalty; " Score:"; Score
GoTo GetInput
Of all the places on Earth, and all the planets in the Universe, I'd rather live here (Perth, Western Australia.) 
Please visit my Website at: http://oldendayskids.blogspot.com/
Posts: 277
Threads: 3
Joined: Apr 2022
Reputation:
52
The issue is that `score` isn't cumulative, instead it's set equal to `Pick * 10 - TimePenalty` on each loop. `TimePenalty` is only the penalty for the current loop, it doesn't include any penalties for previous loops - even though there was a 1 point penalty on the previous loop to get 39 that penalty is lost when you do the next loop and `TimePenalty` is set to 0 (because you're within the 5 second window).
A simple solution is to do `TimePenalty = TimePenalty + Int((T2 - T1) / 5)`, that way `TimePenalty` will include any penalties from previous loops.
Alternatively you could stop using `Pick` and do `Score = Score + 10 - TimePenalty`, so that way score retains the penalties.
Of course, don't do both of the options or you'll double-count the penalties
Posts: 699
Threads: 107
Joined: Apr 2022
Reputation:
27
(03-19-2025, 06:05 AM)DSMan195276 Wrote: The issue is that `score` isn't cumulative, instead it's set equal to `Pick * 10 - TimePenalty` on each loop. `TimePenalty` is only the penalty for the current loop, it doesn't include any penalties for previous loops - even though there was a 1 point penalty on the previous loop to get 39 that penalty is lost when you do the next loop and `TimePenalty` is set to 0 (because you're within the 5 second window).
A simple solution is to do `TimePenalty = TimePenalty + Int((T2 - T1) / 5)`, that way `TimePenalty` will include any penalties from previous loops.
Alternatively you could stop using `Pick` and do `Score = Score + 10 - TimePenalty`, so that way score retains the penalties.
Of course, don't do both of the options or you'll double-count the penalties 
Ahh, thanks DSMan.
Another silly oversight on my part! Now I can continue with my new game.
Of all the places on Earth, and all the planets in the Universe, I'd rather live here (Perth, Western Australia.) 
Please visit my Website at: http://oldendayskids.blogspot.com/
Posts: 4,132
Threads: 190
Joined: Apr 2022
Reputation:
262
03-19-2025, 10:53 AM
(This post was last modified: 03-19-2025, 10:53 AM by bplus.)
Quote:' penalty 5 points per second since last input
Don't you want to multiply by 5, not divide by 5 for 5 point penalty for every second (delay of input)
b = b + ...
Posts: 699
Threads: 107
Joined: Apr 2022
Reputation:
27
(03-19-2025, 10:53 AM)bplus Wrote: Quote:' penalty 5 points per second since last input
Don't you want to multiply by 5, not divide by 5 for 5 point penalty for every second (delay of input)
Hi bplus.
No, I didn't want 5 points penalty per second, I wanted 1 point per 5 seconds.
Of all the places on Earth, and all the planets in the Universe, I'd rather live here (Perth, Western Australia.) 
Please visit my Website at: http://oldendayskids.blogspot.com/
Posts: 4,132
Threads: 190
Joined: Apr 2022
Reputation:
262
LOL how could I have read this wrong!
Quote:' penalty 5 points per second since last input
b = b + ...
Posts: 699
Threads: 107
Joined: Apr 2022
Reputation:
27
03-20-2025, 12:24 AM
(This post was last modified: 03-20-2025, 12:26 AM by PhilOfPerth.)
(03-19-2025, 11:24 PM)bplus Wrote: LOL how could I have read this wrong!
Quote:' penalty 5 points per second since last input
Oops, my bad (again)! Sorry!
Of all the places on Earth, and all the planets in the Universe, I'd rather live here (Perth, Western Australia.) 
Please visit my Website at: http://oldendayskids.blogspot.com/
Posts: 2,571
Threads: 264
Joined: Apr 2022
Reputation:
140
Okay, subtracting 5pts from Phil's rep as we speak... This will only take a second!
Pete
Posts: 3,008
Threads: 357
Joined: Apr 2022
Reputation:
282
Gosh, haven't you guys learned after all these years of coding: Comments can *say* anything. That doesn't mean the code actually *does* that, or is even supposed to do what the comments say.
Posts: 699
Threads: 107
Joined: Apr 2022
Reputation:
27
Of all the places on Earth, and all the planets in the Universe, I'd rather live here (Perth, Western Australia.) 
Please visit my Website at: http://oldendayskids.blogspot.com/
|