- This wiki is out of date, use the continuation of this wiki instead
Frame
From FenixWiki
Revision as of 21:00, 19 August 2007 (edit) Sandman (Talk | contribs) ← Previous diff |
Current revision (21:02, 19 August 2007) (edit) (undo) Sandman (Talk | contribs) m (→Example) |
||
(2 intermediate revisions not shown.) | |||
Line 13: | Line 13: | ||
<pre> | <pre> | ||
Begin | Begin | ||
+ | |||
square(); | square(); | ||
- | | + | |
+ | Repeat | ||
frame; | frame; | ||
- | | + | Until(key(_ESC)) |
+ | |||
+ | exit(); | ||
+ | |||
End | End | ||
Line 35: | Line 40: | ||
This example [[process]] would give you a square you can move around the screen by 2 pixel before it | This example [[process]] would give you a square you can move around the screen by 2 pixel before it | ||
gets showed again, before the game cycle is over, before the '''frame;''' happens. | gets showed again, before the game cycle is over, before the '''frame;''' happens. | ||
- | If there would be no '''frame;''' in the [[loop]], it would just run forever and the interpreter would wait forever | + | If there would be no '''frame;''' in the [[loop]], it would just run forever and the interpreter would wait forever for the '''frame;''', which would result in freezing. |
Current revision
[edit] Definition
The frame; command tells the interpreter when a process is done for one game cycle. When the frame; is reached, the screen is updated. If there are several processes running, the screen is updated once every process has reached its frame; statement.
It is commonly used in loops of processes that should do something like moving around by a certain amount of pixels per game cycle (or per frame).
A possibility is to adjust the amount of cycles to wait. frame(100); would wait one cycle (100%), same as frame;. However frame(200); will wait two cycles (200% means the frame statement provides for 200% frame). So frame(50); will wait a half cycle or otherwise said, it will make a loop run twice per frame.
[edit] Example
Begin square(); Repeat frame; Until(key(_ESC)) exit(); End Process square() Begin graph = new_map(5,5,16); map_clear(0,graph,rgb(255,255,255)); Loop x += 2 * (key(_right)-key(_left)); frame; //<-vital part End End
This example process would give you a square you can move around the screen by 2 pixel before it gets showed again, before the game cycle is over, before the frame; happens. If there would be no frame; in the loop, it would just run forever and the interpreter would wait forever for the frame;, which would result in freezing.