>if sleeping for 1000 milliseconds is a second, it seems to me
>that the Windows one is wrong
1000 msecs=1 second
But that works and it really sleeps for about a second - even on windows. So... most likely your code is to blame.
Well, in general that approach is flawed. Different machines have different speed. Each frame takes more or less time... so you actually need to determine how many time elapsed and adjust the wait time span accordingly.
If you're using 1.5, it's easy, because you can use nanoTime().
Like so:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| private long timeNow, timeThen, timeLate = 0, timeDelta, desiredFrameRate=75; [...] g.dispose(); sync(1000000000L/desiredFrameRate); strategy.show(); [...] private void sync(long frameFraction) { long gapTo = frameFraction + timeThen; do { Thread.yield(); timeNow = System.nanoTime(); }while(gapTo > timeNow+timeLate);
if(gapTo<timeNow) timeLate = timeNow-gapTo; else timeLate = 0; timeDelta = timeNow - timeThen; timeThen = timeNow; } |
You can ignore (remove) the timeDelta bit if you want to use tick based animation.
>I'm not trying to make a living out of it
There is no reason to point that out, because it doesn't make a difference

>Is there any useful online introduction to the basics of
>games writing, especially in Java?
There are tons of information out there. gamasutra.com and nehe.gamedev.net for example.
Check out kev's tuts:
http://www.cokeandcode.com/index.php?page=resources