This wiki is out of date, use the continuation of this wiki instead

Process

From FenixWiki

(Difference between revisions)
Jump to: navigation, search
Revision as of 13:57, 23 March 2007 (edit)
Sandman (Talk | contribs)

← Previous diff
Revision as of 23:35, 24 March 2007 (edit) (undo)
86.136.103.186 (Talk)

Next diff →
Line 1: Line 1:
A process is a [[subroutine]] to which one or more of the following apply:<br /> A process is a [[subroutine]] to which one or more of the following apply:<br />
-- it received [[parameters]]<br />+*it received [[parameters]]<br />
-- it acts on the [[parameters]]<br />+*it acts on the [[parameters]]<br />
-- it processes [[data]] located elsewhere<br />+*it processes [[data]] located elsewhere<br />
-- it [[returns]] a value<br />+*it [[returns]] a value<br />
-In addition to these possibilities, a process ''always'' has a frame; statement. The difference between a [[function]] and a process is a process is treated as a seperate thread. This means one can't let a process return a value, as the father process continues its code as well. When a process comes to its first frame; statement, the process 'returns' its [[ProcessID]] and continues the code (in the next frame).+In addition to these possibilities, a process ''always'' has a [[frame]]; statement. The difference between a [[function]] and a process is a process is treated as a seperate thread. This means one can't let a process return a value, as the [[father]] process continues its code as well. When a process comes to its first frame; statement, the process 'returns' its [[ProcessID]] and continues the code (in the next frame).
In earlier [[Fenix]] versions (2005 and earlier) there is no difference in [[syntax]], however, a process is treated like a [[function]] when there is no [[frame]]; statement in the [[code]]. In earlier [[Fenix]] versions (2005 and earlier) there is no difference in [[syntax]], however, a process is treated like a [[function]] when there is no [[frame]]; statement in the [[code]].
 +
 +When the [[frame]]; statement is reached in the code, a number of other local variables are defined or updated not only of the new process, but also of related processes. These are:
 +*The [[father]] variable of the new process.
 +*The [[son]] variable of the [[father]] process (updated).
 +*The [[bigbro]] variable of the new process.
 +*The [[smallbro]] variable of the processes called by the [[father]] immediately before the new process was called (updated).
 +*The [[son]] and [[smallbro]] variables are also defined of the new process, but do not yet carry values.
== Example == == Example ==

Revision as of 23:35, 24 March 2007

A process is a subroutine to which one or more of the following apply:

In addition to these possibilities, a process always has a frame; statement. The difference between a function and a process is a process is treated as a seperate thread. This means one can't let a process return a value, as the father process continues its code as well. When a process comes to its first frame; statement, the process 'returns' its ProcessID and continues the code (in the next frame).

In earlier Fenix versions (2005 and earlier) there is no difference in syntax, however, a process is treated like a function when there is no frame; statement in the code.

When the frame; statement is reached in the code, a number of other local variables are defined or updated not only of the new process, but also of related processes. These are:

  • The father variable of the new process.
  • The son variable of the father process (updated).
  • The bigbro variable of the new process.
  • The smallbro variable of the processes called by the father immediately before the new process was called (updated).
  • The son and smallbro variables are also defined of the new process, but do not yet carry values.

Example

Process SpaceShip( int file , int graph , int x , int y , int angle , int maxspeed , int maxturnspeed )
Private
    int speed;
Begin
    Loop
        speed+=key(_up)*(speed<maxspeed)-key(_down)*(speed>-maxspeed);
        angle+=(key(_left)-key(_right))*maxturnspeed;
        advance(speed);
        frame;
    End
End

Now one can call this process for example by doing the following.

Private
    int map;
Begin
    map = new_map(20,20,8);
    map_clear(0,map,rgb(0,255,255));
    SpaceShip(0,map,100,100,0,20,5000);
End

This will make a SpaceShip with a cyan coloured block, able to move around the screen.



--Sandman 14:56, 23 March 2007 (CET)

Personal tools