- This wiki is out of date, use the continuation of this wiki instead
Frame
From FenixWiki
Revision as of 20:54, 25 June 2007 (edit) 87.177.23.239 (Talk) ← Previous diff |
Current revision (21:02, 19 August 2007) (edit) (undo) Sandman (Talk | contribs) m (→Example) |
||
(8 intermediate revisions not shown.) | |||
Line 1: | Line 1: | ||
- | + | [[Category:language]] | |
- | The '''frame;''' command tells the interpreter when a process is done for one game cycle. | + | |
+ | == 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. | When the '''frame;''' is reached, the screen is updated. | ||
- | If there are several | + | If there are several [[process]]es running, the screen is updated once every [[process]] has reached its '''frame;''' statement. |
- | '''frame;''' statement. | + | |
- | It is commonly used in | + | It is commonly used in [[loop]]s of [[process]]es that should do something like moving around by a certain amount of pixels per game cycle (or per frame). |
- | 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. | |
+ | |||
+ | == Example == | ||
<pre> | <pre> | ||
- | + | 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 | |
- | + | ||
- | + | ||
</pre> | </pre> | ||
- | 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 | + | 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.