msgid "When controlling the robot through programming, the only way to turn the gun left or right is to turn the whole robot with the instruction <code><a cbot|turn>turn</a></code>."
msgstr "Pour diriger le canon vers la gauche ou vers la droite, le seul moyen est d'orienter le robot avec l'instuction <code><a cbot|turn>turn</a></code>."
msgid "Angle in degrees of the gun relative to the robot. A positive value orients the gun upward. For shooters and orga shooters, the angle must range from <code>-20</code> to <code>+20</code> degrees. For phazer shooters, the angle must range from <code>-20</code> to <code>45</code> degrees."
msgstr "Angle en degrés du canon. Un angle positif oriente le canon vers le haut. Pour les robots shooter, la valeur doit être comprise entre <code>-10</code> et <code>+20</code> degrés. Pour les robots orgaShooter, la valeur doit être comprise entre <code>-20</code> et <code>+20</code> degrés. Le robot phazer accepte des valeurs comprises entre <code>-20</code> et <code>45</code> degrés."
msgid "An array is basically a collection of variables of the same type or class. You can use N dimensionnal arrays in the CBOT language. Each dimension is limited to 9999 elements. You must use square brackets <code>[]</code> after the type name or the variable name to declare an array."
msgstr "CBOT gère des tableaux de N dimensions, mais limités volontairement à un maximum de 9999 éléments par dimension. Les tableaux peuvent être de chaque type de base et même avec des éléments d'une classe quelconque. Pour déclarer un tableau, il faut mettre des crochets <code>[]</code> après le type, ou/et après le nom de la variable déclarée."
msgid "Actually when the CBOT interpreter encounters an array declaration, it just creates a <code><a cbot|null>null</a></code> <a cbot|pointer>reference</a>:"
msgstr "En vérité, lors de la déclaration d'un tableau, CBOT attribue juste une <a cbot|pointer>référence</a> nulle initialement:"
msgid "After this operation, <code>a</code> contains a reference to the elements of the array. Elements <code>[0]</code> and <code>[1]</code> are created but not initialized because an array cannot contain empty elements. The <code><a cbot|sizeof>sizeof</a></code> instruction allows you to obtain the number of elements contained in an array."
"Après cette opération, <code>a</code> contient une référence vers les éléments du tableau. Les éléments <code>[0]</code> et <code>[1]</code> sont créés (non initialisés) car un tableau ne peut pas avoir d'éléments vides.\n"
"L'instruction <code><a cbot|sizeof>sizeof</a></code> permet de connaître le nombre d'éléments d'un tableau."
msgid "When an array is declared with a maximum size, the program will stop as soon as there is an access beyond the maximum array size. No error is signalled during compilation even if the error is obvious:"
msgstr "Lorsqu'un tableau est déclaré avec une taille maximale, le programme donne une erreur lors de l'exécution si on essaie de mettre un élément de trop. Aucune erreur n'est signalée lors de la compilation même si l'erreur paraît évidente:"
msgid "If you pass an array as parameter to a <a cbot|function>function</a>, the function only receives a <a cbot|pointer>reference</a> to the array. That means if you modify an array element in the function, the element of the array that has been passed the function will be actuallay modified."
msgstr "Lorsqu'on donne un tableau comme paramètre d'une <a cbot|function>fonction</a>, c'est toujours une <a cbot|pointer>référence</a> qui est passée."
"If the <a cbot|cond>condition</a> is true, instructions 1, 2 and 3 are performed. If the condition is false, only instruction 1 is ignored, instructions 2 and 3 are performed. The fact that instruction 2 is lined up with instruction 1 does not matter. \n"
"If you want to perform instructions 1 and 2 only if the condition is true, you have to bracket them together in a block: "
"Si la <a cbot|cond>condition</a> est vraie, les instructions 1, 2 et 3 sont exécutées. En revanche, si la condition est fausse, seule l'instruction 1 est sautée (on exécute donc les instructions 2 et 3). Le fait que l'instruction 2 soit alignée avec la 1 n'y change rien.\n"
"Pour n'exécuter les instructions 1 et 2 que si la condition est vraie, il faut les grouper dans un bloc:"
"Blocks may be needed with instructions <code><a cbot|if>if</a></code>, <code><a cbot|while>while</a></code> and <code><a cbot|for>for</a></code>, in order to group several instructions that should be performed only if a condition is true, or repeated several times. \n"
"You can fit blocks into other blocks, on as many levels as you need. Here is an example of imbrication on two levels :"
"Les blocs sont très utilisés avec les instructions <code><a cbot|if>if</a></code>, <code><a cbot|while>while</a></code> et <code><a cbot|for>for</a></code>, pour grouper plusieurs instructions à exécuter ou à répéter.\n"
"On imbrique très souvent des blocs dans d'autres blocs, et ceci à autant de niveaux que nécessaire. Voici un exemple d'imbrication à deux niveaux:"
msgid "You had better line up the open brace <code>{</code> with the closing brace <code>}</code> in order to improve readability, but it is not compulsory. The following example takes less space, is equivalent to the previous example, but it is not advisable to write your programs in the following style : "
msgstr "En général, pour des questions de lisibilité, on aligne verticalement l'accolade ouvrante <code>{</code> avec sa partenaire fermante <code>}</code>. Mais cela n'est pas obligatoire. L'exemple suivant, beaucoup plus compact mais déconseillé, est strictement équivalent à l'exemple précédent:"
msgid "Categories represent the names of objects in the CBOT language. Everything in COLOBOT is an object: robots, buildings, raw materials, etc., even yourself."
msgstr "La catégorie détermine la nature d'un objet. Dans COLOBOT, tout est objet: les robots, les bâtiments, les matières premières, les éléments du décor, etc."
msgid "In a program, categories are always displayed on a <format const>red background</format>. If a category isn't highlighted in red, it is misspelled. Caps and lower cases should be kept as is."
msgstr "Dans un programme, un nom de catégorie est toujours <format const>colorié en rouge</format>. Si une catégorie n'est pas coloriée, c'est que son nom est mal orthographié. Il faut par exemple respecter les majuscules et les minuscules."
msgid "Classes can only be <a cbot|public>public</a>, that is they can be used from all bots in a mission. Class members are also public, that is they are accessible from outside the class. Class members can be fields or functions (also called methods), for example the followin class <code>MyClass</code> contains 4 fields (a, b, x and s) and one method (MyFunction)."
msgstr "La classe est d'office <a cbot|public>publique</a> (disponible partout). Les membres de la classe sont également publiques (disponible à tous). Les déclarations peuvent être des déclarations de champs ou des déclarations de méthodes (avec le <a cbot|bloc>bloc</a> d'exécution). Une classe peut contenir des <a cbot|var>variables</a> et des <a cbot|function>fonctions</a>. Mais dans la terminologie des langages orientés objets, on les appelle \"champs\" et \"méthodes\". Le terme \"membre\" désigne un champ ou une méthode."
msgid "As shown in this exemple the class members can be initialized (<code>x=3.33</code>). You can also define a constructor which is a special method having the same name as the class name. This method will be called automatically at creation time of a class instance. You can also declare more than one method with the same name but different parameters."
"Comme le montre cet exemple, il est possible d'initialiser la valeur des champs par défaut (<code>x=3.33</code>), ce qui rend le constructeur inutile. Toutefois, il est possible de définir un constructeur, en créant une méthode (de type <code>void</code>) ayant le même nom que la classe.\n"
"Il est également possible de définir plusieurs méthodes ayant le même nom, mais avec des paramètres différents (ce qui est aussi valable pour les <a cbot|function>fonctions</a>)."
msgid "In this example two constructors are declared for <code>MyClass</code>, one without parameters and the other one with two parameters. As the names of the parameters of the second constructor are the same as the names of the two members <code>a</code> et <code>b</code> we must use the <code><a cbot|this>this</a>.a</code> and <code><a cbot|this>this</a>.b</code> to avoid confusion with the parameters. Another more simpler solution would be to give different names to the parameters."
"Cet exemple déclare deux constructeurs pour <code>MaClasse</code>, l'un sans paramètre, l'autre avec deux paramètres. Comme les paramètres ont été nommés avec le même nom que les éléments <code>a</code> et <code>b</code>, il est nécessaire d'utiliser <code><a cbot|this>this</a>.a</code> et <code><a cbot|this>this</a>.b</code> pour accéder aux éléments de l'instance (une solution plus simple consiste à donner des noms différents pour les paramètres).\n"
"Les constructeurs sont appelés automatiquement à la définition d'une instance de la classe."
msgid "You can also define a destructor. This must be a <code>void</code> fonction without parameters that has the same name as the class name but prefixed by the ~ character. The destructor is called automatically as soon as the class instance is no more referenced by anyone."
msgstr "Un destructeur peut être également défini. C'est une méthode <code>void</code> sans paramètre ayant le nom de la classe précédé du caractère \"tilde\" ~. Le destructeur est appelé dès qu'il n'y a plus aucune <a cbot|pointer>référence</a> vers une instance donnée."
msgid "If you pass a class instance as parameter to a <a cbot|function>function</a>, the function only receives a <a cbot|pointer>reference</a> to the instance. That means if you modify the instance in the function, the instance that has been passed to the function will be actuallay modified."
msgstr "Lorsqu'on donne l'instance d'une classe comme paramètre d'une <a cbot|function>fonction</a>, c'est toujours la <a cbot|pointer>référence</a> qui est passée."
msgid "Close a file opened previously with <code><a cbot|open>open</a></code>. This is a method of the <code><a cbot|file>file</a></code> class; therefore you cannot write <code>close()</code> but only <code>handle.close()</code>¦:"
msgstr "L'instruction <c/>close();<n/> ferme un fichier de texte dans le dossier files/. Cette instruction est une méthode de la classe <code><a cbot|file>file</a></code>. C'est la raison pour laquelle on n'écrit jamais <code>close()</code> tout seul, mais <code>handle.close()</code>:"
"A condition is a special <a cbot|expr>expression</a> that returns a <a cbot|bool>boolean</a> value, that can only be either <code><a cbot|true>true</a></code> or <code><a cbot|false>false</a></code>. With a condition, you can choose f. ex. if the instructions in a <code><a cbot|while>while</a></code> loop must be repeated again, or if the instruction in a <code><a cbot|if>if</a></code> bloc must be executed.\n"
"Here are some operators that you can use in conditions to compare two values :"
"Une condition est une <a cbot|expr>expression</a> particulière, qui prend une valeur <a cbot|bool>booléenne</a>, c'est-à-dire pouvant être vraie ou fausse (<code><a cbot|true>true</a></code> ou <code><a cbot|false>false</a></code>). Une condition détermine par exemple s'il faut continuer ou non une boucle <code><a cbot|while>while</a></code>.\n"
msgid "Be careful not to confuse the equality comparison <code>==</code> with the assignment of a <a cbot|var>variable</a> <code>=</code>."
msgstr "Il faut faire très attention à ne pas confondre la comparaison d'égalité <code>==</code> avec l'affectation d'une <a cbot|var>variable</a> <code>=</code>."
msgid "With this instruction, you can jump over the rest of instructions in the <code><a cbot|bloc>bloc</a></code> of a <code><a cbot|while>while</a></code> or <code><a cbot|for>for</a></code> loop: The execution will resume at the beginning of the bloc, the next time the loop is repeated."
msgstr "Cette instruction permet de passer prématurément au tour de boucle suivant. On peut l'utiliser dans un bloc après une instruction <code><a cbot|while>while</a></code> ou <code><a cbot|for>for</a></code>."
msgid "Files can only be deleted in the files/ folder which is located in the folder where Colobot has been installed. You cannot not delete files that are located elsewhere than in the files/ folder."
msgid "Power of the transmitter, which corresponds to the maximal distance between the sender and the exchange post. If the distance is longer, the information won't be deleted. Default value is 10 metres."
msgstr "Puissance de l'émetteur, qui correspond à la distance maximale jusqu'où peut être la borne. La valeur par défaut est de 10 mètres."
msgid "If you write <code>position</code> alone, this gives you the position of the bot that executes the program. If you write the name of a variable followed by <code>.position</code>, this gives you the position of the object described in the variable."
msgstr "Si vous écrivez <code>position</code> tout seul, cela donne la position du robot qui exécute le programme. Si vous écrivez le nom d'une variable suivie de <code>.position</code>, cela donne la position de l'objet décrit par la variable."
"This instruction allows you to perform several times the instructions inside the <a cbot|bloc>block</a>. The instructions are executed at least once, because the condition is tested only afterwards.\n"
"Be careful not to confuse the instruction <c/>do { } while ( );<n/> with the instruction <code><a cbot|while>while</a> ( ) { }</code>; the latter tests the condition before the instructions in the block are executed. "
"Cette structure de boucle permet d'exécuter plusieurs fois les instructions comprises dans le <a cbot|bloc>bloc</a>. Ces instructions sont toujours exécutées au moins une fois, puisque la condition n'est examinée qu'après exécution de ces instructions.\n"
"Attention à ne pas confondre <c/>do { } while( );<n/> avec <code><a cbot|while>while</a>( ) { }</code>, qui effectue le test avant le premier tour de boucle."
msgid "The instructions <code><a cbot|break>break</a></code> and <code><a cbot|continue>continue</a></code> can be useful inside a block following the instruction <code>do { }</code>."
msgstr "Les instructions <code><a cbot|break>break</a></code> et <code><a cbot|continue>continue</a></code> sont utiles à l'intérieur d'un bloc <code>while { }</code>."
msgid "The instruction <c/>drop();<n/> instructs the bot to drop whatever the operating arm is carrying on the ground, on the platform of a building or on the power cell location of a bot."
msgstr "L'instruction <code>drop()</code> permet de poser au sol, sur l'emplacement arrière d'un robot ou sur le socle d'un bâtiment, l'objet que le robot tient dans la pince de son bras manipulateur."
msgid "The instruction <c/>drop();<n/> written in this form drops the object in front of the bot. Here is a short program that grabs an object in front of the bot and drops it 5 meters further:"
msgstr "L'instruction <c/>drop();<n/> écrite sous cette forme pose devant le robot l'objet que le robot tient. Voici par exemple comment saisir ce qui se trouve devant le robot pour le poser 5m plus loin:"
"Position à atteindre avec la bras manipulateur. Si cette indication n'est pas fournie, on suppose qu'il s'agit du cas le plus fréquent où l'objet est pris ou déposé devant le robot.\n"
"Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <c/>drop();<n/>.\n"
"Normalement, une erreur stoppe l'exécution du programme. Si l'instruction <code>drop</code> est précédée de <c/><a cbot|errmode>errmode</a>(0);<n/>, une valeur nulle est retournée si tout est ok, ou valeur non nulle si une erreur est intervenue.\n"
msgid "Test the end of file condition of an open file. This is a method of the <code><a cbot|file>file</a></code> class; therefore you cannot write <code>eof()</code> but only <code>handle.eof()</code>¦:"
msgstr "L'instruction <c/>eof();<n/> teste s'il existe encore une ou plusieurs lignes à lire dans le fichier de texte ouvert dans le dossier files/. Cette instruction est une méthode de la classe <code><a cbot|file>file</a></code>. C'est la raison pour laquelle on n'écrit jamais <code>eof()</code> tout seul, mais <code>handle.eof()</code>:"
msgid "The <c/>errmode();<n/> instruction allows you to chose if the program should stop when an error occurs in one of the following instructions: <code><a cbot|goto>goto</a></code>, <code><a cbot|move>move</a></code>, <code><a cbot|grab>grab</a></code>, <code><a cbot|drop>drop</a></code>, etc."
msgstr "L'instruction <c/>errmode();<n/> détermine la réaction du programme lorsqu'une erreur est rencontrée dans une instruction du type <code><a cbot|goto>goto</a></code>, <code><a cbot|move>move</a></code>, <code><a cbot|grab>grab</a></code>, <code><a cbot|drop>drop</a></code>, etc."
msgid "Normally the program is stopped when an error occurs. If you use the instruction <c/>errmode(0);<n/> at the beginning of the program, the instructions listed above return a value different from zero if the instruction could not be performed."
msgstr "Normalement, un programme s'arrête dès qu'une erreur est rencontrée. En ajoutant <c/>errmode(0);<n/> au début du programme, une instruction <code>goto</code> qui n'arrive pas à destination retourne une valeur non nulle."
msgid "Multiplications and divisions are performed before additions and subtractions. In order to be sure that the operations are performed in the right order, use brackets: "
msgstr "Les multiplications et les divisions sont effectuées avant les additions et les soustractions. En cas de doute, mieux vaut utiliser des parenthèses."
msgid "The compound-assignment operators combine the <code>=</code> assignment operator with another binary operator such as <code>+</code> or <code>-</code>. Compound-assignment operators perform the operation specified by the additional operator and then assign the result to the left operand. For example, a compound-assignment expression such as "
msgid "The operators <code>++</code> and <code>--</code> allow you to increment (++) or to decrement (--) a variable in very compact and efficient manner."
msgid "The value of the expression <code>a++</code> is the value of the variable <code>a</code> before the increment. If you use the prefix operator <code>++a</code> the value of the expression is the value of the variable <code>a</code> after the increment. The same holds for the <code>--</code> decrement operator."
msgid "The <code>extern</code> instruction determines the <a cbot|function>function</a> that acts as main program of a robot. The name of the function declared with <code>extern</code> will apear in the program list in the lower left corner of the screen."
msgstr "L'instruction <code>extern</code> détermine quelle est la <a cbot|function>fonction</a> qui fait office de programme principal. La fonction déclarée <code>extern</code> aura son nom dans la liste des programmes, en bas à gauche de la fenêtre."
msgid "Use the syntax above for declaring a file handle. You must use () to create an instance of the <code>file</code> class. Without the () the handle would have the value <code><a cbot|null>null</a></code>."
msgstr "Notez la présence des parenthèses, indispensables pour créer une instance de la classe <code>file</code>. Sans les parenthèses, <code>handle</code> aurait la valeur <code>null</code>."
msgid "Files can only be created and opened in the files/ folder which is located in the folder where Colobot has been installed. You cannot not create or open files elsewhere than in the files/ folder."
msgid "<code>file</code> is actually not a simple type but a class. <code>open</code>, <code>close</code>, <code>writeln</code> etc. are methods of the <code>file</code> class. This is the reason why we always write <code>handle.method()</code>¦:"
msgstr "En réalité, <code>file</code> n'est pas un type, mais une classe. <code>open</code>, <code>close</code>, <code>writeln</code> etc. sont des méthodes de la classe <code>file</code>. C'est la raison pour laquelle on écrit <code>classe.méthode()</code>:"
msgid "Fires the gun, with a burst that lasts a certain time. The longer the burst, the more energy it needs. This instruction can be used with the following bot types: "
msgstr "Tire avec le canon, pendant un certain temps. Plus le tir est long, et plus l'énergie consommée est grande. Cette instruction peut être utilisée avec les robots suivants:"
msgid "Duration of the burst. Generally, the value given is 1. Shorter bursts can also be performed in order to spare time and energy."
msgstr "Durée du tir, en secondes. Il s'agit généralement de valeurs relativement courtes. <c/>fire(1);<n/> tire une rafale identique à celle tirée lors la prise de commande du robot. Dans le cas où on survole une concentration importante de fourmis, on peut tirer des rafales plus longues, par exemple <c/>fire(4);<n/>. Pour économiser l'énergie, on peut tirer des rafales très courtes avec par exemple <c/>fire(0.1);<n/>."
msgid "Use this type for most variables that contains numbers. Variables of this type can contain positive and negative numbers, whole or real numbers, for example: "
msgstr "Ce type permet de représenter, de manière approchée, des nombres réels positifs ou négatifs. Par exemple:"
msgid "This <a cbot|cond>condition</a> determines if another instance of the loop must be executed. It is tested before every instance of the loop. "
msgstr "Cette <a cbot|cond>condition</a> détermine s'il faut continuer la boucle. Elle est examinée avant chaque tour de boucle, y compris le dernier."
msgid "The instructions <code><a cbot|break>break</a></code> and <code><a cbot|continue>continue</a></code> can be useful inside a block following the instruction <code>for </code>."
msgstr "Les instructions <code><a cbot|break>break</a></code> et <code><a cbot|continue>continue</a></code> sont utiles à l'intérieur d'un bloc <code>for { }</code>."
msgid "The most current use consists in moving the bot to an object located with the instruction <c/><a cbot|radar>radar</a>();<n/>. If the information returned by the <c/><a cbot|radar>radar</a>();<n/> has been stored in a certain variable, write the name of the variable followed by <code>.position</code> in order to get the position of the object. Here is an example of a program that looks for a <a object|titan>titanium cube</a>, goes to the position and grabs it:"
msgstr "En général on déplace le robot vers un objet qu'on a détecté avec l'instruction <c/><a cbot|radar>radar</a>();<n/>. Si on a mis les informations rendues par <c/><a cbot|radar>radar</a>();<n/> dans une certaine variable, il faut écrire le nom de la variable suivi de <code>.position</code> pour obtenir la position de l'objet. Voici par exemple comment chercher un cube de titanium, aller vers la position du cube et le saisir:"
msgid "Flight altitude for <a object|botgj>winged bots</a>. The altitude is useful only for <a object|botgj>winged bots</a>. From the initial altitude, the bot climbs higher until it reaches the specified hight. When arriving close to destination, it goes down to touch the ground at the given position. If no value is given, an altitude of 10 meters is the default value. On very short moves, even winged bot stay on the ground. For all bot except winged bots, this parameter is ignored. "
msgstr "Altitude moyenne pendant le déplacement, pour les <a object|botgj>robots volants</a>. Si ce paramètre est omis, une altitude de 12.5 mètres est automatiquement utilisée comme consigne. Lorsque le déplacement mesure moins de 20 mètres à vol d'oiseau, le robot reste au sol."
"Normalement, une erreur stoppe l'exécution du programme. Si l'instruction <code>goto</code> est précédée de <c/><a cbot|errmode>errmode</a>(0);<n/>, une valeur nulle est retournée si tout est ok, ou valeur non nulle si une erreur est intervenue.\n"
"Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <code>goto()</code>.\n"
msgid "The instruction <c/>grab();<n/> instructs the bot to use the operating arm to grab an object located on the ground, on the platform of a building or on the power cell location of a bot."
msgstr "L'instruction <c/>grab();<n/> permet de saisir avec la pince du bras manipulateur un objet qui se trouve au sol, sur l'emplacement arrière d'un robot ou sur le socle d'un bâtiment."
msgid "The instruction <c/>grab();<n/> written in this form grabs the object located in front of the bot. Here is a short program that grabs an object in front of the bot and drops it 5 meters further:"
msgstr "L'instruction <c/>grab();<n/> écrite sous cette forme permet de saisir l'objet qui se trouve devant le robot. Voici par exemple comment saisir ce qui se trouve devant le robot et le poser 5m plus loin:"
"Position à atteindre avec la bras manipulateur. Si cette indication n'est pas fournie, on suppose qu'il s'agit du cas le plus fréquent où l'objet est pris ou déposé devant le robot.\n"
"Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <c/>grab();<n/>.\n"
"Normalement, une erreur stoppe l'exécution du programme. Si l'instruction <code>grab</code> est précédée de <c/><a cbot|errmode>errmode</a>(0);<n/>, une valeur nulle est retournée si tout est ok, ou valeur non nulle si une erreur est intervenue.\n"
msgid "With the instruction <code>if() {}</code> you can execute a set of instructions only if a certain condition is true. Write the condition in brackets <code>()</code>, and the instructions in braces <code>{}</code>."
msgstr "L'instruction <code>if() {}</code> permet d'exécuter des instructions seulement à une certaine condition. La condition est donnée entre parenthèses <code>()</code>, les instructions entre accolades <code>{}</code>."
msgid "You can also test if an object exists at all. If the instruction <c/><a cbot|radar>radar</a>();<n/> does not find the requested object, it returns the value <code>null</code>. So you can test if an object does not exists with the condition <code>(item == null)</code>, or test if it exists with <code>(item != null)</code>. Two equal signs <code>==</code> test equality, an exclamation mark followed by an equal sign <code>!=</code> test inequality. Here is a test that will go to rechage the <a object|power>power cell</a> only if there is a <a object|station>power station</a>:"
msgstr "Si l'instruction <c/><a cbot|radar>radar</a>();<n/> ne trouve pas l'objet cherché, elle rend la valeur <code>null</code>. Ainsi il est possible de tester si un objet n'existe pas avec <code>(chose == null)</code>, ou de tester si l'objet existe avec <code>(chose!= null)</code>. Deux signes égal <code>==</code> testent l'égalité, un point d'exclamation suivi d'un signe égal <code>!=</code> teste l'inégalité. Voici comment aller se recharger seulement s'il y a une station de recharge:"
"With this conditional structure you can execute a <a cbot|bloc>bloc</a> A or a <a cbot|bloc>bloc</a> B depending on a <a cbot|cond>condition</a>. If the condition is true, bloc A is executed. If the condition is false, bloc B is executed. \n"
"Cette structure de choix permet d'exécuter le <a cbot|bloc>bloc</a> A ou le <a cbot|bloc>bloc</a> B en fonction d'une <a cbot|cond>condition</a>. Si la condition est vraie, le bloc A est exécuté. Si elle est fausse, c'est le bloc B qui est exécuté.\n"
msgid "Direct control of the jet of a <a object|botgj>winged bot</a>. The jet is what makes the bot fly. Use this instruction in order to take off, climb, descend or land."
msgid "Power of the jet, ranges between <code>-1</code> and <code>+1</code>. <c/>jet(1);<n/> instructs the bot to climb as fast as possible, <c/>jet(-1);<n/> descends as fast as possible, <c/>jet(0);<n/> stabilizes the altitude. In order to get slower altitude changes, use intermediate values, for example <c/>jet(0.3);<n/>."
msgstr "Puissance du réacteur, comprise entre <code>-1</code> et <code>1</code>. <c/>jet(1);<n/> fait monter le robot à la vitesse maximale, <c/>jet(-1);<n/> le fait descendre à la vitesse maximale, <c/>jet(0);<n/> lui fait garder son altitude actuelle. Pour obtenir des changements d'altitude plus doux, employez des valeurs intermédiaires, par exemple <c/>jet(0.3);<n/>."
msgid "The speed given to the motors will remain constant during the execution of the following instructions. Thanks to this characteristic it is possible to perform a rotation during the instruction <c/><a cbot|fire>fire</a>();<n/>. This will sweep a whole zone with only one burst. Here is an example that will sweep the zone in front of the bot:"
msgstr "<c/>motor( , );<n/> conserve la vitesse du moteur pendant l'exécution des instructions suivantes. Ceci est utile pour faire tourner le robot pendant l'instruction <c/><a cbot|fire>fire</a>();<n/>. Ainsi, il est possible de balayer toute une zone avec la rafale. Voici par exemple comment balayer toute la zone qui se trouve devant le robot:"
msgid "With the left-hand motor turning half-speed forward and the right-hand motor turning half-speed backward, the bot will turn slowly on itself during the 2-second-burst."
msgstr "En faisant avancer le moteur gauche à demi-vitesse et en faisant reculer le moteur de droite à demi-vitesse, le robot tourne lentement sur lui-même pendant la rafale de 2 secondes."
msgid "Gives speed instructions to the right and left motors of the robot. The motors will keep this speed until a new motor instruction is performed, or until a <code><a cbot|move>move</a></code>, <code><a cbot|turn>turn</a></code> or <code><a cbot|goto>goto</a></code> instruction is performed."
msgstr "Donne une consigne de vitesse aux deux moteurs gauche et droite du robot. La vitesse restera constante, jusqu'à ce qu'une nouvelle consigne soit donnée, ou jusqu'à l'utilisation d'une instruction <code><a cbot|move>move</a></code>, <code><a cbot|turn>turn</a></code> ou <code><a cbot|goto>goto</a></code>."
msgid "The instruction <c/>move();<n/> instructs the bot to move forward or backward while keeping the same orientation. In brackets you must specify the length of the move in meters."
msgstr "L'instruction <c/>move();<n/> fait se déplacer le robot d'une longueur donnée en mètres."
msgid "If you want the bot to move forward 30 meters, write <c/>move(30);<n/>. In order to move the bot backward after it dropped a chunk of <a object|titanore>titanium ore</a> on the <a object|convert>converter</a>, write <c/>move(-2.5);<n/>."
msgstr "Pour faire avancer le robot de 30m, écrivez <c/>move(30);<n/>. Pour faire reculer le robot après avoir posé un <a object|titanore>minerai de titanium</a> sur le <a object|convert>convertisseur</a>, écrivez <c/>move(-2.5);<n/>."
"Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <code>move()</code>.\n"
"Normalement, une erreur stoppe l'exécution du programme. Si l'instruction <code>move</code> est précédée de <c/><a cbot|errmode>errmode</a>(0);<n/>, une valeur nulle est retournée si tout est ok, ou valeur non nulle si une erreur est intervenue.\n"
"This special value indicates that a <a cbot|var>variable</a> of type <code><a cbot|int>int</a></code> or <code><a cbot|float>float</a></code> contains no number, but \"nothing\". \n"
"For example, if the instruction <code><a cbot|receive>receive</a></code> can not get the requested information, it returns <code>nan</code> :"
"Cette valeur spéciale indique qu'une <a cbot|var>variable</a> de type <code><a cbot|int>int</a></code> ou <code><a cbot|float>float</a></code> ne contient pas un nombre, mais \"rien\".\n"
"Par exemple, lorsque l'instruction <code><a cbot|receive>receive</a></code> n'arrive pas à recevoir l'information demandée, elle retourne <code>nan</code>:"
msgid "Position of the object on the planet, in meters. The coordinates <code>x</code> and <code>y</code> correspond to the location on a map, the <code>z</code> coordinate corresponds to the altitude above (respectively below) sea level. "
msgstr "Position de l'objet sur la planète, en mètres. Les coordonnées <code>x</code> et <code>y</code> correspondent à la position à plat, alors que <code>z</code> correspond à l'élévation absolue par rapport au niveau de la mer."
msgid "Orientation of the object, in degrees. The orientation tells you what direction the object is facing. An orientation of <code>0</code> corresponds to an object facing eastwards, thus following the positive <code>x</code> axis. The orientation is measured counterclockwise. "
msgstr "Orientation de l'objet, en degrés. Une orientation de <code>0</code> correspond à un objet tourné vers l'est, donc vers l'axe <code>x</code> positif. Le sens de l'orientation est anti-horaire."
msgid "Forward/backward angle of the robot. A pitch of <code>0</code> means that the bot is standing on flat ground. A positive inclination means that it is facing upwards, a negative inclination means that it is facing downwards. "
msgstr "Inclinaison avant/arrière de l'objet, en degrés. Une valeur positive indique que le robot monte."
msgid "Left/right angle of the bot, in degrees. A positive value means that the bot is leaning to the left side, a negative value means that it is leaning to the right side. "
msgstr "Inclinaison latérale de l'objet, en degrés. Une valeur positive indique que le robot penche à gauche."
msgid "Energy level, between 0 and 1. A normal <a object|power>power cell</a> that is fully charged returns the value <code>1</code>. A <a object|atomic>nuclear power cell</a> never returns a value higher than 1, it just lasts longer. Attention: The energy level of a bot is always zero, because the energy is not contained in the bot, but in the power cell. To know the energy level of the power cell of a bot, you must write <code>energyCell.energyLevel</code>. "
"Niveau d'énergie. Une <a object|power>pile normale</a> entièrement pleine donne la valeur <code>1</code>. Une <a object|atomic>pile atomique</a> ne dépasse jamais le niveau <code>1</code>; elle dure simplement plus longtemps.\n"
"Notez que le niveau d'énergie d'un robot est toujours nul. En effet, l'énergie est contenue dans la pile qui est placée à l'arrière du robot, et non dans le robot lui-même. Il faut donc écrire <code>energyCell.energyLevel</code> pour connaître l'énergie à disposition."
"Shield level of a robot or building. A level <code>1</code> indicates that the shield is still perfect. Every time that the bot or building gets a bullet or collides with another object, the shield level decreases. When the level reaches <code>0</code>, the next bullet or collision will destroy the bot or building. \n"
"Bots can re-energize their shield on a <a object|repair>repair center</a>. The shield of a building is repaired if it lays inside the protection sphere of a <a object|botshld>shielder</a>."
"Niveau du bouclier du robot ou du bâtiment. Un niveau de <code>1</code> correspond à un bouclier en parfait état. Avec un niveau de <code>0</code>, le prochain choc ou tir ennemi sera fatal.\n"
"Les robots peuvent régénérer leurs boucliers sur le <a object|repair>centre de réparation</a>. Le bouclier d'un bâtiment est régénéré s'il se trouve dans la sphère protectrice du <a object|botshld>robot bouclier</a>."
msgid "Temperature of the jet of <a object|botgj>winged bots</a>. <code>0</code> corresponds to a cold jet. When used, the temperature increases progressively. When it reaches the value <code>1</code>, the jet is overheated and stops working, until it cooled down a little. "
msgstr "Température du réacteur pour les <a object|botgj>robots volants</a>. <code>0</code> correspond à un réacteur froid et <code>1</code> à un réacteur bouillant, provisoirement hors d'usage."
msgid "The <code>z</code> coordinate of the position indicates the altitude above sea level, whereas the <code>altitude</code> indicates the height above ground. This value is meaningful only for <a object|botgj>winged bots</a> and for <a object|wasp>wasps</a>. For all other objects, this value is zero. "
msgstr "Contrairement à la position <code>z</code> qui est absolue, l'altitude est relative au niveau du sol. L'altitude n'a de sens que pour les <a object|botgj>robots volants</a> et la <a object|wasp>guêpe</a>. Pour tous les autres robots ou pour les bâtiments, cette valeur est nulle."
"This information is special, because it returns the information about another object, in this case the power pack. This means that energyCell contains all the characteristics of a normal object, for example <code>category</code> (PowerCell or NuclearCell), <code>position</code> (the position of the cell), etc.\n"
"If you want to know the energy level of a robot, you must not check <code>energyLevel</code>, but <code>energyCell.energyLevel</code>.\n"
"If the bot has bot no power cell, <code>energyCell</code> returns <code>null</code>."
"Cette information est spéciale, dans la mesure où elle contient les caractéristiques d'un autre objet, la pile en l'occurrence. On y retrouve donc toutes les caractéristiques de l'objet de base, telles que <code>category</code>, <code>position</code>, etc.\n"
"Pour connaître le niveau d'énergie d'un robot, il ne faut pas accéder à <code>energyLevel</code>, mais à <code>energyCell.energyLevel</code>.\n"
msgid "This information also returns the description of a whole object: the description of the object carried by a <a object|botgr>grabber</a>. If it carries nothing, <code>load</code> returns <code>null</code>."
msgstr "Cette information est spéciale, comme la précédente. Elle contient les caractéristiques de l'objet transporté par le <a object|botgr>robot déménageur</a>. S'il ne transporte rien, <code>load</code> vaut <code>null</code>."
msgid "Open a text file in the files/ folder. This is a method of the <code><a cbot|file>file</a></code> class. This is the reason why we always write <code>handle.open()</code>¦:"
msgstr "L'instruction <c/>open();<n/> ouvre un fichier de texte dans le dossier files/. Cette instruction est une méthode de la classe <code><a cbot|file>file</a></code>. C'est la raison pour laquelle on n'écrit jamais <code>open()</code> tout seul, mais <code>handle.open()</code>:"
msgid "Files can only be created and opened in the files/ folder which is located in the folder where Colobot has been installed. You cannot not create or open files that are located elsewhere than in the files/ folder."
msgid "<c/>openfile();<n/> opens an text file in the files/ folder. This is not a method of the <code><a cbot|file>file</a></code> class but openfile returne a <a cbot|pointer>reference</a> to a new instance of the file class. You must supply two parameters, the filename and the opening mode."
msgstr "L'instruction <c/>openfile();<n/> ouvre un fichier de texte dans le dossier files/. Elle ne fait pas partie de la classe <code><a cbot|file>file</a></code> mais retourne une <a cbot|pointer>référence</a> à une instance de cette classe avec le fichier ouvert. Cette fonction demande deux paramètres: le nom du fichier et le mode d'ouverture."
"Variables of this type contain the coordinates of a point in space. This type is made of three values that represent the <code>x</code>, <code>y</code> and <code>z</code> coordinates.\n"
"<code>x</code> and <code>y</code> correspond to the place on the ground. The positive <code>x</code> axis faces towards east, the positive <code>y</code> axis faces towards north. \n"
"The <code>z</code> value corresponds to the altitude above sea level. "
"Ce type permet de représenter les coordonnées d'un point dans l'espace. Ce type contient en fait 3 nombres réels, pour les coordonnées <code>x</code>, <code>y</code> et <code>z</code>.\n"
"<code>x</code> et <code>y</code> correspondent à la position sur le sol, à plat. <code>x</code> positif va en direction de l'est et <code>y</code> positif va en direction du nord.\n"
msgid "CBOT uses references for <a cbot|class>classes</a> and <a cbot|array>arrays</a>. Any class variable actually contains a reference to the instance. The instance actually contains the class fields. Several references can reference the same instance. A <code><a cbot|null>null</a></code> reference references nothing. You can compare an instance to a suitcase and a reference to a carrier. Each time we need a new suitcase we create a new instance with a carrier. But a suitcase can be carried by more than one carrier. A carrier who carries no suitcase is a <code><a cbot|null>null</a></code> reference."
"CBOT travaille avec des références aux instances de <a cbot|class>classes</a> et aux <a cbot|array>tableaux</a>. Une instance est un élément physique contenant les informations liées à la classe. On peut comparer cela à une petite valise avec des conteneurs correspondants à la description de la classe. A chaque fois que l'on a besoin d'une nouvelle valise pour y mettre quelque chose, il faut créer une nouvelle instance. Les références, quant à elles, peuvent être considérées comme les porteurs de ces valises, à cela prêt qu'il y a souvent plusieurs porteurs pour la même valise. Une référence <code><a cbot|null>null</a></code> ne référence rien; c'est comparable à un porteur sans valise.\n"
"Le fait qu'une instance à une classe soit créée automatiquement (<code><a cbot|new>new</a></code> sous-entendu) ne change pas ce concept. On peut donc copier une référence dans une autre et avoir plusieurs références vers une même instance."
msgid "If you pass a <a cbot|class>class</a> instance as parameter to a function, the function only receives a reference to the instance. That means if you modify the instance in the function, the instance that has been specified by the caller will be actuallay modified."
msgstr "En passage de paramètre, c'est toujours la référence qui est donnée à la <a cbot|function>fonction</a>:"
msgid "The instance containing the field <code>a = 33</code> is referenced only by the newly created instance <code>item</code> inside the fucntion <code>Test</code>. At the end of <code>Test</code> this newly created instance referenced by <code>item</code> is automatically deleted."
msgstr "En effet, l'instance avec le résultat <code>33</code> n'était pointée que par <code>item</code> dans la fonction <code>Test</code>. A la sortie de <code>Test</code>, la référence <code>item</code> disparaît et l'instance qu'elle pointait n'a plus de raison d'être."
msgid "<a cbot|class>Class</a> members can be <a cbot|public>public</a> (by default) or private. A member can be declared private by putting <code>private</code> before the type declaration of the member. Private members are not accessible from outside the class definition."
msgstr "Les éléments déclarés dans une <a cbot|class>classe</a> peuvent être <a cbot|public>publics</a> (par défaut) ou privés. Un élément est privé en plaçant <code>private</code> devant le type de l'élément. Dès lors, ces éléments ne seront plus accessibles depuis l'extérieur de la définition de la classe elle-même."
msgid "If you put <code>public</code> before a <a cbot|function>function</a> definition, you can make the function available to programs in other bots in the same mission."
msgstr "La présence de ce mot rend la <a cbot|function>fonction</a> disponible partout dans la mission. Cette fonction peut alors être utilisée dans le programme d'un autre robot."
msgid "If you have declared a function <code>public</code>, you cannot define a function with the same name and arguments in another bot of the same mission."
msgstr "Il ne peut y avoir qu'une seule fonction ayant le même nom, parmi tous les programmes des robots de la mission en cours."
msgid "If a bot containing a <code>public</code> function is destroyed, the other bots that make use of this function will be stopped with an error."
msgstr "Si le robot qui contenait la fonction déclarée <code>public</code> est détruit, les autres robots qui utilisent cette fonction sont stoppés sur une erreur!"
msgid "<a cbot|class>Class</a> members can be public (by default) or <a cbot|private>privat</a>. A member can be declared private by putting <code>private</code> before the member type. Private members are not accessible from outside the class definition."
msgstr "Les éléments déclarés dans une <a cbot|class>classe</a> peuvent être publics (par défaut) ou <a cbot|private>privés</a>. Un élément est privé en plaçant <code>private</code> devant le type de l'élément. Dès lors, ces éléments ne seront plus accessibles depuis l'extérieur de la définition de la classe elle-même."
msgid "With the instruction <code>radar()</code>, you can look for objects like <a object|mother>enemies</a>, bots, buildings or raw materials."
msgstr "Avec l'instruction <code>radar()</code>, le robot peut chercher des objets comme des <a object|mother>ennemis</a>, des robots ou des bâtiments."
msgid "Write in brackets the <a cbot|category>name of the object</a> that you look for. Put the result in a variable of the <a cbot|type>type</a> <code>object</code>. Here is an example that looks for the closest ant:"
msgstr "Donnez entre parenthèses le <a cbot|category>nom de l'objet</a> que vous cherchez. Mettez le résultat dans une variable de <a cbot|type>type</a> <code>object</code>. Voici par exemple comment chercher la fourmi la plus proche:"
msgid "Determines which way the objects are detected. With value <code>1</code>, returns the closest object found in the specified zone. With value <code>-1</code>, the farthest object in the zone will be returned. "
msgstr "Sens dans lequel s'effectue la recherche. Avec la valeur <code>1</code>, on cherche de l'intérieur vers l'extérieur. Autrement dit, c'est l'objet le plus proche qui est trouvé. Avec <code>-1</code>, on cherche de l'extérieur vers l'intérieur. On trouvera donc l'objet le plus éloigné."
msgid "Returns the first object found that corresponds to the specified category in the specified zone. If no object was found, returns the value <code><a cbot|null>null</a></code>."
msgstr "Objet trouvé le plus proche. La valeur <code><a cbot|null>null</a></code> indique que rien n'a été trouvé."
"En fait, lorsque des paramètres manquent, ils prennent les valeurs par défaut indiquées plus haut. Le premier paramètre <code>catégorie</code> est obligatoire. Les cinq paramètres suivants sont facultatifs, et sont remplacés par <code>0</code>, <code>360</code>, <code>0</code>, <code>1000</code> et <code>1</code> s'ils manquent.\n"
"Ceci est très utile. En effet, <code>radar(XXX)</code> trouve l'objet le plus proche, où qu'il soit."
msgid "Read one line from an open file in the files/ folder. This is a method of the <code><a cbot|file>file</a></code> class. This is the reason why we always write <code>handle.readln()</code>¦:"
msgstr "L'instruction <c/>readln();<n/> lit une ligne de texte dans un fichier ouvert dans le dossier files/. Cette instruction est une méthode de la classe <code><a cbot|file>file</a></code>. C'est la raison pour laquelle on n'écrit jamais <code>readln()</code> tout seul, mais <code>handle.readln()</code>:"
msgid "The file must have been opened for reading (<code>\"r\"</code>) with the <code><a cbot|open>open</a></code> instruction. <code>readln</code> returns the string containing the whole line but without the end of line characters 0x0D (CR) and 0x0A (LF)."
msgstr "Le fichier doit être ouvert avec l'instruction <code><a cbot|open>open</a></code> et le mode <code>\"r\"</code> (lecture). L'instruction <code>readln</code> retourne une chaîne de caractères contenant la ligne lue, sans les deux caractères de fin de ligne 0x0D (CR) et 0x0A (LF)."
msgid "Power of the receiver, which corresponds to maximal distance between the receiver and the exchange post. If the distance is longer, no information is received. Default value is 10 metres."
msgstr "Puissance du récepteur, qui correspond à la distance maximale jusqu'où peut être la borne. La valeur par défaut est de 10 mètres."
msgid "Value of the retrieved information. If no exchange post is close enough, or if the name of the requested information does not exist in the exchange post, the value <code>nan</code> is returned."
msgstr "Valeur de l'information lue. Si aucune borne d'informations n'est à proximité, ou si le nom de l'information à lire n'existe pas dans la borne, la valeur <code>nan</code> est retournée."
msgid "Object corresponding to the number. The return value <code><a cbot|null>null</a></code> means that no object corresponds to this number, because the number was too high, and there are not so many objects in the scene. "
msgstr "Objet trouvé. La valeur <code><a cbot|null>null</a></code> indique que rien n'a été trouvé, par exemple lorsque le rang est trop grand."
msgid "Characteristics of the object that has been found. The value <code><a cbot|null>null</a></code> means that no object of this category has been found. "
msgstr "Objet trouvé. La valeur <code><a cbot|null>null</a></code> indique que rien n'a été trouvé."
"Name of the information to be sent to the exchange post. This name is a string: it must be written in quotation marks \"¦\".\n"
"If there is any information having this name, a new entry is created, as far as the total number of entries does not exceed 10. If there is already an information having this name, value is simply replaced by the new."
"Nom de l'information à écrire dans la borne. Ce nom est une chaîne de caractères; il doit donc être donné entre guillemets \"\".\n"
"S'il n'existe aucune information ayant ce nom, une nouvelle entrée est créée, pour autant que le nombre total d'entrées ne dépasse pas 10. S'il existe déjà une information ayant ce nom, la valeur est simplement remplacée par la nouvelle."
msgid "Activates or deactivates the shield of the <a object|botshld>ahielder</a>. You can of course move the shielder when the shield is active. It protects all objects that are inside the shielded sphere from enemy fire. The radius of the sphere can range between 10 and 25 meters."
msgstr "Déploie ou replie le bouclier du <a object|botshld>robot</a>. Lorsque le bouclier est déployé, il est possible d'avancer. Le bouclier protège de toutes les attaques <a object|mother>ennemies</a> dans un rayon compris entre 10 et 25 mètres."
"A normal <a object|power>power cell</a> fully charged can maintain the shield active during 20 seconds. When the cell is empty, the shield deactivates."
"Une <a object|power>pile normale</a> à pleine charge permet de maintenir le bouclier pendant 20 secondes avec le rayon maximal de 25 mètres. Lorsque la pile est plate, le bouclier se replie."
msgid "In this example we have 6 elements in the array after <code>a[5]=345</code>. The non initialized elements <code>[0]</code>, <code>[1]</code>, <code>[2]</code>, <code>[3]</code> and <code>[4]</code> will be counted."
msgstr "Dans cet exemple, il y a 6 éléments dans le tableau après avoir fait <code>a[5]=345</code>. Les éléments non initialisés <code>[0]</code>, <code>[1]</code>, <code>[2]</code>, <code>[3]</code> et <code>[4]</code> sont comptés avec l'élément <code>[5]</code>."
msgid "Sounds the underground in front of the <a object|botsr>sniffer</a>. According to what raw materials were detected, the following objects will be created: "
msgstr "Effectue un sondage du sous-sol devant le <a object|botsr>robot</a>. En fonction du sous-sol, les objets suivants sont créés:"
msgid "<a cbot|class>Class</a> members declared with <code>static</code> are shared between all instances of the class."
msgstr "Les éléments d'une <a cbot|class>classe</a> précédés du mot <code>static</code> sont partagés en commun avec toutes les instances de cette classe. C'est à dire qu'une valeur écrite par l'une des instances sera lisible par toutes les autres."
msgid "<code>Static</code> members can be declared <code><a cbot|private>private</a></code> so they will be only acessible from within class members (including constructors and destructors)."
msgstr "Les éléments <code>static</code> peuvent également être déclarés comme <code><a cbot|private>private</a></code>. Dans ce cas, ces éléments ne sont accessibles que dans les méthodes de la classe (constructeur et destructeur inclus)."
msgid "Convert a string to a number. Don't confuse the string <code>\"45\"</code> that contains actually the two characters <code>4</code> and <code>5</code> and the number <code>45</code>."
msgstr "Cette instruction convertit une chaîne représentant un nombre en un nombre. Il ne faut pas confondre la chaîne <code>\"45\"</code> qui contient les deux caractères <code>4</code> et <code>5</code> et le nombre <code>45</code>."
msgid "A <a cbot|class>class</a> method can be declared <code>synchronized</code>. This is to make sure that the method is never being executed by more than one bot at the same time."
msgstr "Les méthodes d'une <a cbot|class>classe</a> peuvent être déclarées <code>synchronized</code>. Dans ce cas, on assure que deux exécutions de ces méthodes ne peuvent pas être simultanées."
"What happens if two bots execute the <code>inc</code> method at the same time¦?\n"
"Both of them will execute <code>val=nb</code> and wait 2 seconds so both of them will have <code>val=33</code>. With <code>synchronized</code> the first bot starts execution with <code>val=33</code> and then waits 2 seconds and returns. Only once the first bot has returned from the <code>inc</code> method, the second bot will be allowed to enter the <code>inc</code> method and therefore the second bot will always have <code>val=34</code>."
"Que se passe-t-il, sans le mot <code>synchronized</code>, si deux robots exécutent la méthode <code>inc</code> à peu prêt en même temps?\n"
"Tous les deux vont faire <code>val=nb</code> avant d'attendre 2 secondes, donc les deux auront <code>val=33</code>.\n"
"Puis tous les deux vont incrémenter <code>nb</code>, qui va passer à <code>35</code>.\n"
"Avec <code>synchronized</code>, le premier des robots va commencer l'exécution avec <code>val=33</code>, et attendre les 2 secondes, alors que le second robot va attendre. Lorsque le premier robot va poursuivre, mettre <code>nb=34</code> et quitter en rendant la valeur <code>33</code>, alors seulement le second robot va pouvoir commencer la fonction avec <code>val=34</code>."
msgid "You can have more than one synchronized method in your <a cbot|class>class</a> in order to prevent simultaneous execution across more than one method. In other words: as long as a bot's program is inside a synchronized method, no other bot can enter any synchronized method of the same class."
msgid "Do not use a semicolon either immediately after the instructions <code><a cbot|while>while</a></code>, <code><a cbot|if>if</a></code> or <code><a cbot|for>for</a></code>:"
msgstr "Il ne doit jamais être utilisé après un <code><a cbot|while>while</a></code>, un <code><a cbot|if>if</a></code> ou un <code><a cbot|for>for</a></code>:"
msgid "An instruction is always ended by a semicolon, and not by the end of the line. So you can very well put several instructions on the same line: "
msgstr "Une instruction est terminée par le point-virgule, et non par la fin de la ligne. Vous pouvez donc très bien mettre plusieurs instructions sur la même ligne:"
msgid "Power of the transmitter, which corresponds to the maximal distance between the transmitter and the exchange post. If the distance is longer, the function returns <code>false</code>. Default value is 10 metres."
msgstr "Puissance de l'émetteur, qui correspond à la distance maximale jusqu'où peut être la borne. La valeur par défaut est de 10 mètres."
msgid "Return <code>true</code> if the information exists. Return and <code>false</code> if the information does not exist or if the receiver is too far away from the exchange post."
msgstr "Retourne <code>true</code> si l'information et <code>false</code> dans le cas contraire."
msgid "Occasionally, a <a cbot|class>class</a> method needs to know the reference to the instance it is acting upon. For example the instance might want to pass it's own reference to another function. An implicit reference name <code>this</code> is available to methods and <code>this</code> is a reference to the current instance."
msgstr "A l'intérieur d'une méthode d'une <a cbot|class>classe</a>, il est possible d'utiliser le mot <code>this</code> qui est une référence à l'instance courante. La plupart du temps, la référence <code>this</code> est utilisée lorsqu'on désire passer une référence à l'instance courante comme paramètre à une fonction."
msgid "You can also put <code>this</code> before a field name in a method but this is not necessary. In the example above in the method <code>MyFunction()</code> following two lines have strictly the same meaning:"
msgstr "Il est aussi possible d'écrire <code>this.</code> devant un nom de champ, ce qui est plus explicite mais pas nécessaire. Dans l'exemple ci-dessus, nous pouvons écrire dans la fonction <code>MyFunction()</code>:"
msgid "In a method of the <code><a cbot|object>object</a></code> class, you can also use <code>this.</code> before a fieldname."
msgstr "Dans une fonction de la classe <code><a cbot|object>object</a></code>, il est possible d'accéder à la position du robot, à son orientation, etc. En fait, on accède ainsi implicitement à l'instance du robot. Il est aussi possible d'écrire <code>this.</code> devant un nom de champ, ce qui est plus explicite:"
msgid "However if a field name is hidden by a parameter declaration or a variable declaration you must use <code>this</code>. In the following example the name <code>value</code> of the parameter is the same as the name of the field <code>value</code> of the <a cbot|class>class</a> <code>MyClass</code>, we must therefore write <code>this.value</code> in order to distinguish the field from the parameter."
msgstr "Il est cependant nécessaire d'utiliser <code>this</code> lorsque le nom d'un champ est caché par une déclaration de variable ou de paramètre. L'exemple suivant montre une <a cbot|class>classe</a> appelée <code>MaClasse</code> avec une méthode <code>Put</code>. Comme le nom <code>value</code> du paramètre est le même que le nom du champ de la classe, il est nécessaire d'utiliser <code>this.value</code> pour utiliser le champ de la classe:"
msgid "Activates the weapon system of the <a object|bottump>thumper</a>, that turns ants and spiders belly up and makes them completely harmless for a while."
msgid "Returns the altitude of the ground at a give position. The altitude zero corresponds to sea level. A negative value indicates that at this position ground is covered with water. "
msgstr "Retourne l'élévation d'un point quelconque du terrain. Le niveau zéro correspond toujours au niveau de la mer. Une valeur négative indique donc que le point en question se trouve sous l'eau."
msgid "90 degreed means a quarter turn, 180 degrees means a half turn. A positive angle will perform a counterclockwise rotation, a negative angle means a clockwise rotation. Here are some examples with <c/>turn();<n/>:"
msgstr "90 degrés signifie un quart de tour, 180 degrés signifie un demi-tour, 360 degrés signifie un tour complet. Voici quelques exemples avec <c/>turn();<n/>:"
msgid "In order to turn the bot towards an object found with the instruction <c/><a cbot|radar>radar</a>();<n/>, you must calculate the rotation angle with the instruction <code><a cbot|direct>direction</a>()</code>:"
msgstr "Pour se tourner vers un objet trouvé avec l'instruction <c/><a cbot|radar>radar</a>();<n/>, il faut calculer l'angle de la rotation avec l'instruction <code><a cbot|direct>direction</a>()</code>:"
msgid "Angle of the required rotation, in degrees. A positive value turns left, a negative value turns right. <code>turn(180)</code> turns round completely. "
msgstr "Angle de la rotation désirée, en degrés. Une valeur positive fait tourner à gauche et une valeur négative à droite. 180 signifie un demi-tour."
msgid "Once you defined a variable, you can use it to put information in it. However, the information that a variable can contain must always be of the correct type: a variable of type <a cbot|float>float</a> can not contain a string, etc."
msgid "In a program, the name of a type is always written on <format type>green background</format>. If the name of a type is not colored, this means that the name is misspelled. Type names are always written with lower case characters. Here is a list of the different types: "
msgstr "Dans un programme, un nom de type est toujours <format type>colorié en vert</format>. Si un type n'est pas colorié, c'est que son nom est mal orthographié. Il faut par exemple frapper tout le nom en minuscules. Voici les différents types possibles:"
msgid "For example, you can use a variable to count the number of titanium ore units that the grabber has collected and carried to the converter. First, you must find a name for it: the name should not be too long, but explain by itself what the variable is used for. Let's call it <code>countTit</code>. This variable must contain only whole numbers, so choose the type <code>int</code>. At the beginning of the program, you must declare the variable. Then you put the value <code>0</code> into the variable, and every time you grab a titanium ore, you increase the variable by <code>1</code>. At every moment, the variable contains the number of titanium ore units that the grabber collected."
msgstr "Par exemple, pour compter le nombre d'<a object|mother>ennemis</a> présents, vous pouvez déclarer une variable <code>compteur</code> et l'initialiser à zéro. Chaque fois que vous rencontrez un ennemi, vous ajoutez 1 à la variable <code>compteur</code>. Lorsque vous aurez fini de balayer une zone donnée, la variable contiendra le nombre d'ennemis présents dans cette zone."
"You have much freedom in the choice of the name for a variable, you can call them by any name, f. ex.: <code>dist</code>, <code>direct</code>, <code>p2</code>, <code>a</code>, <code>x</code>, <code>nothing_2_shoot_at</code>, etc.\n"
"A variable name must always begin with a letter. It can be followed by any combination of letters, digits or the underscore character <code>_</code>. You can of course not use the keywords of the CBOT language like <code><a cbot|for>for</a></code>, <code><a cbot|while>while</a></code>, <code><a cbot|break>break</a></code>, <code><a cbot|continue>continue</a></code>, <code>do</code>, etc.\n"
"You should be careful about the choice of the names that you give to variables; writing a program can become very difficult if you forget the names of variables or if you do not remember what they are used for. Elaborate your own system to find variable names, and do not use names like <code>Bmo45</code>, <code>a</code> or <code>tgBinX</code>."
msgstr ""
"Notez bien que le nom <code>compteur</code> n'est qu'un exemple. Vous avez pratiquement toute liberté pour inventer le nom qui vous convient le mieux. Par exemple: <code>dist</code>, <code>direct</code>, <code>p2</code>, <code>a</code>, <code>x</code>, <code>chute_2_pierre</code>, etc.\n"
"Le nom doit commencer par une lettre. Il peut contenir ensuite des lettres ou des chiffres, ainsi que le caractère souligné. De plus, vous ne pouvez pas utiliser les mots-clés réservés du langage, tels que <code><a cbot|for>for</a></code>, <code><a cbot|while>while</a></code>, <code><a cbot|break>break</a></code>, <code><a cbot|continue>continue</a></code>, <code>do</code>, etc.\n"
"On utilise parfois des noms anglais, parfois des noms français, parfois des abréviations, cela n'a pas d'importance. Ce qu'il faut, c'est que le nom exprime clairement à quoi sert la variable. <code>Bmo45</code>, <code>a</code>, <code>tgbin</code> ne sont pas des très bons exemples, mais c'est à vous de choisir!"
msgid "In the example above, the keyword <code>int</code> indicates that this variable can contain only whole numbers, which is adequate to counting objects. If you want to measure a distance, better use a variable that can contain also real numbers, with a fractional part (like 3.45 or 0.034): in this case, use the type <code>float</code>."
msgstr "In the example above, the keyword <code>int</code> indicates that this variable can contain only whole numbers, which is adequate to counting objects. If you want to measure a distance, better use a variable that can contain also real numbers, with a fractional part (like 3.45 or 0.034): in this case, use the type <code>float</code>."
"The <a cbot|type>type</a> determines what kind of information the variable can contain. According to the type, a variable can contain a whole number, a real number, a string, the coordinates of a point, information about an object, etc. \n"
"Le <a cbot|type>type</a> détermine ce que contient la variable. En effet, une variable peut contenir un nombre entier, un nombre réel, une chaîne de caractères, une coordonnée d'un point, etc.\n"
"When you assign a value to a variable with the equals sign <code>=</code>, the value on the right side is copied into the value on the left side. Consider the following example: \n"
"Notez que l'assignation <code>=</code> copie la valeur de l'<a cbot|expr>expression</a> de droite dans la variable de gauche. Soit l'exemple suivant:\n"
"If you want to exchange the values of two variables, you must use a third variable. Here is an example to exchange the content of two variables <code>a</code> and <code>b</code> :\n"
"Pour permuter les contenus de deux variables, il faut obligatoirement utiliser une troisième variable temporaire. Voici comment permuter <code>a</code> et <code>b</code>:\n"
msgid "In order to wait until the <a object|convert>converter</a> finished transforming some <a object|titanore>titanium ore</a> in a <a object|titan>titanium cube</a>, wait 15 seconds with <c/>wait(15);<n/>."
msgstr "Pour attendre que le <a object|convert>convertisseur</a> ait transformé du <a object|titanore>minerai d'uranium</a> en un <a object|titan>cube de titanium</a>, attendez 15 secondes avec <c/>wait(15);<n/>."
msgid "The most frequent use of <code>while</code> consists in repeating a set of instructions again and again. In order to achieve this, write <code>while (true) {}</code> and put the instructions to be repeated in braces <code>{}</code>. As an example, here is a program that repeats again and again the following actions:"
msgstr "L'utilisation la plus courante de <code>while</code> consiste à répéter des instructions encore et encore, à l'infini. Pour ce faire, on écrit <code>while (true) {}</code> et on met les instructions à répéter entre les accolades <code>{}</code>. As an example, here is a program that repeats again and again the following actions:"
msgid "Be careful not to confuse the instruction <code>while( ) { }</code> with the instruction <c/><a cbot|do>do</a> { } while( );<n/>; the latter tests the condition only after the instructions in the block have been performed a first time. "
msgstr "Attention de ne pas confondre <code>while( ) { }</code> avec <c/><a cbot|do>do</a> { } while( );<n/>, qui n'effectue le test qu'après le premier tour de boucle."
msgid "The instructions <code><a cbot|break>break</a></code> and <code><a cbot|continue>continue</a></code> can be useful inside a block following the instruction <code>while { }</code>."
msgstr "Les instructions <code><a cbot|break>break</a></code> et <code><a cbot|continue>continue</a></code> sont utiles à l'intérieur d'un bloc <code>while { }</code>."
msgid "Write one line of text to an open file in the files/ folder. This is a method of the <code><a cbot|file>file</a></code> class. This is the reason why we always write <code>handle.writeln()</code>¦:"
msgstr "L'instruction <c/>writeln();<n/> écrit une ligne de texte dans un fichier ouvert dans le dossier files/. Cette instruction est une méthode de la classe <code><a cbot|file>file</a></code>. C'est la raison pour laquelle on n'écrit jamais <code>writeln()</code> tout seul, mais <code>handle.writeln()</code>:"
msgid "The file must have been opened for writing (<code>\"w\"</code>) with the <code><a cbot|open>open</a></code> instruction. The line will automatically be terminated by the end of line characters 0x0D (CR) and 0x0A (LF)."
msgstr "Le fichier doit être ouvert avec l'instruction <code><a cbot|open>open</a></code> et le mode <code>\"w\"</code> (écriture). Dans le fichier, la ligne sera automatiquement terminée par les deux caractères de fin de ligne 0x0D (CR) et 0x0A (LF)."
"Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <code>build()</code>.\n"
"<code>== 0 </code>Successfully built\n"
"<code>!= 0 </code>Impossible to build (for example, the nearest titanium cube is too far away or the specified building is not available in the mission)"
msgid "Here is an example of a program that looks for the nearest <a object|titan>titanium cube</a>, goes to the position and builds a <a object|factory>bot factory</a>."
msgid "This command is mostly useful in an attempt to build a fully automatised base, where an <a object|human>astronaut</a> does not need to do anything except starting a program and watching bots working. What is more, it makes beating the game by using only programming a possible task (however, it is a challenge rather for experienced gamers, who beat the whole game at least once)."
msgid "When controlling the robot through programming, the gun can be also turned left or right by turning the whole robot with the instruction <code><a cbot|turn>turn</a></code>."
msgid "The instruction <c/>build();<n/> instructs the bot to build a building of the given <a cbot|category>category</a>. Currently works for <a object|botgc>Grabbers</a>, <a object|human>Me</a> and <a object|tech>Tech</a>."
msgstr ""
#. type: Plain text
#: ../E/buildingenabled.txt:5
#, no-wrap
msgid "It is similar to the <c/><a cbot|canbuild>canbuild();</a><n/> instruction. However, it does not check if a required research has been done."
msgstr ""
#. type: Plain text
#: ../E/canbuild.txt:2
#, no-wrap
msgid "The instruction <c/>canbuild();<n/> lets you know if <a object|botgc>Grabbers</a>, <a object|human>Me</a> or <a object|human>Tech</a> can build a building of the given <a cbot|category>category</a>. "
msgstr ""
#. type: Plain text
#: ../E/canbuild.txt:5
#, no-wrap
msgid "It helps to prevent errors in programs using the <c/><a cbot|build>build();</a><n/> instruction. Here is an example:"
msgid "Arcus tangent (in degrees) of <code>y/x</code>."
msgstr ""
#. type: Plain text
#: ../E/atan2.txt:5
#, no-wrap
msgid "The purpose of using two arguments instead of one is to gather information on the signs of the inputs in order to return the appropriate quadrant of the computed angle, which is not possible for the single-argument <c/><a cbot|atan>atan();</a><n/> function. For example, consider a point <code>(-1, -1)</code>: <c/>atan(-1/-1);<n/> is <code>45.00</code> degrees, whereas <c/>atan2(-1, -1);<n/> is <code>-135.00</code> degrees, which is obviously more correct in this case."
msgstr ""
#. type: \b; header
#: ../E/ceil.txt:1
#, no-wrap
msgid "Instruction <code>ceil</code>"
msgstr ""
#. type: Source code
#: ../E/ceil.txt:3
#, no-wrap
msgid "<c/>ceil ( value );<n/>"
msgstr ""
#. type: Plain text
#: ../E/floor.txt:4
#, no-wrap
msgid "Rounds down a number."
msgstr ""
#. type: Plain text
#: ../E/ceil.txt:10
#, no-wrap
msgid "Ceiling of the value, i.e. the smallest integer not less than <code>value</code>. For example, <code>ceil(2.1)</code> is <code>3.0</code>."
msgid "Truncation is a method of approximating a decimal number by dropping all decimal places past a certain point without rounding. For positive numbers, it works like the <c/><a cbot|floor>floor();</a><n/> function, and for negative numbers, it works like the <c/><a cbot|ceil>ceil();</a><n/> function. It can be said that it rounds towards zero."
msgstr ""
#. type: Plain text
#: ../E/aim.txt:16
#, no-wrap
msgid "Angle in degrees of the gun relative to the robot. A positive value orients the gun to the right. The angle must range from <code>-40</code> to <code>+40</code> degrees for all shooters."
msgid "Function, simply put, is an instruction created by you."
msgstr ""
#. type: \b; header
#: ../E/function.txt:4
#, no-wrap
msgid "Main function"
msgstr ""
#. type: Plain text
#: ../E/function.txt:5
#, no-wrap
msgid "You probably already know how to create a function. Every program in CBOT must have a main function, which looks like this:"
msgstr ""
#. type: Source code
#: ../E/function.txt:7
#, no-wrap
msgid ""
"extern void object::ProgramName()\n"
"{\n"
"\t\n"
"\t// instructions\n"
"\t\n"
"}"
msgstr ""
#. type: Plain text
#: ../E/function.txt:17
#, no-wrap
msgid "With functions you can divide your program into several parts. Each of them will execute a specific task. For example, see the following program:"
msgstr ""
#. type: Source code
#: ../E/function.txt:19
#, no-wrap
msgid ""
"extern void object::Remote()\n"
"{\n"
"\tsend(\"order\", 1, 100);\n"
"\twait(5);\n"
"\tsend(\"order\", 3, 100);\n"
"\twait(5);\n"
"\tsend(\"order\", 2, 100);\n"
"\twait(5);\n"
"\tsend(\"order\", 4, 100);\n"
"\twait(5);\n"
"}"
msgstr ""
#. type: Plain text
#: ../E/function.txt:31
#, no-wrap
msgid "<code><a cbot|send>send</a></code> and <code><a cbot|wait>wait</a></code> are repeated several times. So it would be a good thing if we created a function that executes these two instructions:"
msgstr ""
#. type: Source code
#: ../E/function.txt:33
#, no-wrap
msgid ""
"void SendToPost(float op)\n"
"{\n"
"\tsend(\"order\", op, 100);\n"
"\twait(5);\n"
"}\n"
"\n"
"extern void object::Remote()\n"
"{\n"
"\tSendToPost(1);\n"
"\tSendToPost(3);\n"
"\tSendToPost(2);\n"
"\tSendToPost(4);\n"
"}"
msgstr ""
#. type: \b; header
#: ../E/function.txt:49
#, no-wrap
msgid "Syntax"
msgstr ""
#. type: \t; header
#: ../E/function.txt:58
#, no-wrap
msgid "Parameters"
msgstr ""
#. type: Plain text
#: ../E/function.txt:59
#, no-wrap
msgid "A function can have parameters:"
msgstr ""
#. type: Plain text
#: ../E/function.txt:68
#, no-wrap
msgid "The <code>Example</code> function will receive an <a cbot|int>integer</a> <code>a</code>, a <a cbot|float>floating point number</a> <code>x</code> and a <a cbot|string>string</a> <code>s</code>. Parameters are \"passed by value\", that is the values of parameter variables in a function are copies of the values the caller specified as variables. If you pass an <code><a cbot|int>int</a></code> to a function, its parameter is a copy of whatever value was being passed as the argument, and the function can change its parameter value without affecting values in the code that invoked the function."
msgstr ""
#. type: Plain text
#: ../E/function.txt:70
#, no-wrap
msgid "If you pass a <a cbot|class>class</a> instance or an <a cbot|array>array</a> as parameter to a function, the function only receives a <a cbot|pointer>reference</a> to the instance or the array. That means if you modify the instance or the array in the function, the instance or the array that has been specified by the caller will be actually modified."
msgstr ""
#. type: \t; header
#: ../E/function.txt:72
#, no-wrap
msgid "Result"
msgstr ""
#. type: Plain text
#: ../E/function.txt:73
#, no-wrap
msgid "A function can also return a result with the <code><a cbot|return>return</a></code> instruction. Therefore the function must be declared no longer as <code><a cbot|void>void</a></code> but as an other <a cbot|type>type</a>:"
msgstr ""
#. type: Source code
#: ../E/function.txt:75
#, no-wrap
msgid ""
"float Average(float a, float b)\n"
"{\n"
"\treturn (a+b)/2;\n"
"}\n"
"\n"
"extern void object::Test( )\n"
"{\n"
"\tfloat value;\n"
"\tvalue = Average(2, 6);\n"
"\tmessage(value); // will display 4\n"
"}"
msgstr ""
#. type: Plain text
#: ../E/function.txt:87
#, no-wrap
msgid "Some other examples:"
msgstr ""
#. type: Source code
#: ../E/function.txt:89
#, no-wrap
msgid ""
"float Pi()\n"
"{\n"
"\treturn 3.1415;\n"
"}\n"
"\n"
"string Sign(float a)\n"
"{\n"
"\tif (a > 0) return \"positive\";\n"
"\tif (a < 0) return \"negative\";\n"
"\treturn \"null\";\n"
"}"
msgstr ""
#. type: \b; header
#: ../E/function.txt:102
#, no-wrap
msgid "Overloading"
msgstr ""
#. type: Plain text
#: ../E/function.txt:103
#, no-wrap
msgid "You can declare several functions with the same name but different parameters:"
msgstr ""
#. type: Source code
#: ../E/function.txt:105
#, no-wrap
msgid ""
"float Pythagoras(float a, float b)\n"
"{\n"
"\treturn sqrt((a*a)+(b*b));\n"
"}\n"
"\n"
"float Pythagoras(float a, float b, float c)\n"
"{\n"
"\treturn sqrt((a*a)+(b*b)+(c*c));\n"
"}"
msgstr ""
#. type: Plain text
#: ../E/function.txt:115
#, no-wrap
msgid "CBOT will call either the one or the other function depending on the parameters passed. They must be distinguishable, i.e. you can't declare two functions with the same name and parameter types in the exact same order, e.g. declaring <code>int Pythagoras(float b, float a)</code> will result in error. Note that result type does not matter."
msgstr ""
#. type: \b; header
#: ../E/function.txt:117
#, no-wrap
msgid "Public functions"
msgstr ""
#. type: \b; header
#: ../E/function.txt:120
#, no-wrap
msgid "object::"
msgstr ""
#. type: Plain text
#: ../E/function.txt:121
#, no-wrap
msgid "Declaring a function as a part of the <a cbot|object>object</a> namespace gives it access to <code><a cbot|this>this</a></code> <a cbot|pointer>pointer</a>, in other words, to all available properties of the robot which the program is run on."
msgstr ""
#. type: Plain text
#: ../E/function.txt:47
#, no-wrap
msgid "Now the program is much easier to read. It is a good practice to split the program into several functions with self-describing names."
msgid "Result <a cbot|type>type</a> should be <a cbot/void>void</a> if the function does not give any. Body is just a set of instructions. Function name must be created with the exact same rules applied to <a cbot|var>variables</a>."
msgid "<c/><a cbot|object>object</a>.factory ( cat, program );<n/>"
msgstr ""
#. type: Plain text
#: ../E/factory.txt:5
#, no-wrap
msgid "Starts a construction of a bot of the given <a cbot|category>category</a> and runs the specified program on it after the construction is finished."
msgid "Program that will be run on the bot after factory finishes the construction. This can be either a <a cbot|public>public</a> <a cbot|function>function</a>, a <a cbot|file>filename</a> or just a raw source code."
msgstr ""
#. type: Plain text
#: ../E/category.txt:6
#, no-wrap
msgid "Below are the different categories available:"
msgstr ""
#. type: Plain text
#: ../E/factory.txt:17
#, no-wrap
msgid ""
"Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <code>factory()</code>.\n"
"<code>== 0 </code>The construction successfully started\n"
"<code>!= 0 </code>The construction could not be started (e.g. no <a object|titan>Titanium</a> in the factory, the bot is not researched)"
msgid "Research names represent the types of available researches in the CBOT language. You can use them to control <a object|research>ResearchCenter</a> by passing them to appropriate instructions (e.g. <a cbot|research>research</a>, <a cbot|canresearch>canresearch</a>, <a cbot|researched>researched</a>)."
msgstr ""
#. type: Plain text
#: ../E/researches.txt:4
#, no-wrap
msgid "In a program, research names are always displayed on a <format const>red background</format>. If a research name is not highlighted in red, it is misspelled. Caps and lower cases should be kept as is."
msgid "Any building which can take some action (e.g. <a cbot|convert>Converter</a>)."
msgstr ""
#. type: Plain text
#: ../E/busy.txt:11
#, no-wrap
msgid ""
"<code><format const>true</format></code> if the object is doing something (e.g. converting)\n"
"<code><format const>false</format></code> if the object is not doing anything"
msgstr ""
#. type: Plain text
#: ../E/object.txt:2
#, no-wrap
msgid "Use this type for variables that contain the characteristics of an object, be it a bot, a building, some raw material, an enemy, etc. Here are all properties of an object: "
msgid "Also, some objects have additional methods (instructions). See them in <a cbot>the main list</a> in the <c/>\"Instructions specific for some objects\" section."
msgstr ""
#. type: Plain text
#: ../E/object.txt:22
#, no-wrap
msgid "The <n/><a cbot|category>category</a> of an object allows you to know what it is, f. ex. what kind of bot, building, enemy, etc."
msgstr ""
#. type: Plain text
#: ../E/research.txt:8
#, no-wrap
msgid "<a object|research>ResearchCenter</a> or <a object|labo>AutoLab</a>."
"Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <code>research()</code>.\n"
"<code>== 0 </code>The research successfully started\n"
"<code>!= 0 </code>The research could not be started (e.g. the research is disabled in the level, no power cell)"
"Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <code>takeoff()</code>.\n"
"<code>== 0 </code>Spaceship takes off\n"
"<code>!= 0 </code>Spaceship could not take off (e.g. mission is not finished yet)"
msgid "The bot's team. Used in <a battles>code battles</a>. If the object has no team assigned (e.g. in no team-based levels, the object being a resource), this is equal to <code>0</code>."
msgstr ""
#. type: \b; header
#: ../E/colors.txt:1
#, no-wrap
msgid "Value <code>Colors</code>"
msgstr ""
#. type: Plain text
#: ../E/colors.txt:2
#, no-wrap
msgid "Color names are used to define a specific color to use. They can be passed to functions like <a cbot|pendown>pendown</a> or <a cbot|pencolor>pencolor</a>."
msgstr ""
#. type: Plain text
#: ../E/colors.txt:4
#, no-wrap
msgid "In a program, colors are always displayed on a <format const>red background</format>. If a color isn't highlighted in red, it is misspelled. Caps and lower cases should be kept as is."
msgid "Width of the pen. The width cannot be higher than <code>1.0</code> and cannot be lower than <code>0.0</code>. Passing a higher value will result in the width being the highest possible and passing a lower value will result in the width being the lowest possible."
msgstr ""
#. type: Plain text
#: ../E/pendown.txt:13
#, no-wrap
msgid ""
"Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <c/>pendown();<n/>.\n"
msgid "The instruction <c/>pencolor();<n/> instructs the bot to change the color of the pencil."
msgstr ""
#. type: Plain text
#: ../E/pencolor.txt:10
#, no-wrap
msgid ""
"Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <c/>pencolor();<n/>.\n"
"<code>== 0 </code>The color was changed\n"
"<code>!= 0 </code>The instruction did not work"
msgstr ""
#. type: \b; header
#: ../E/penup.txt:1
#, no-wrap
msgid "Instruction <code>penup</code>"
msgstr ""
#. type: Source code
#: ../E/penup.txt:3
#, no-wrap
msgid "<c/>penup ( );<n/>"
msgstr ""
#. type: Plain text
#: ../E/penup.txt:7
#, no-wrap
msgid ""
"Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <c/>penup();<n/>.\n"
"<code>== 0 </code>The pen is now up\n"
"<code>!= 0 </code>The instruction did not work"
msgstr ""
#. type: \b; header
#: ../E/penwidth.txt:1
#, no-wrap
msgid "Instruction <code>penwidth</code>"
msgstr ""
#. type: Source code
#: ../E/penwidth.txt:3
#, no-wrap
msgid "<c/>penwidth ( color );<n/>"
msgstr ""
#. type: Plain text
#: ../E/penwidth.txt:4
#, no-wrap
msgid "The instruction <c/>penwidth();<n/> instructs the bot to change the width of the pencil."
"Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <c/>penwidth();<n/>.\n"
"<code>== 0 </code>The width was changed\n"
"<code>!= 0 </code>The instruction did not work"
msgstr ""
#. type: Plain text
#: ../E/pendown.txt:4
#, no-wrap
msgid "The instruction <c/>pendown();<n/> instructs the bot to have the pen down, so it starts drawing."
msgstr ""
#. type: Plain text
#: ../E/penup.txt:4
#, no-wrap
msgid "The instruction <c/>penup();<n/> instructs the bot to have the pen up, so it stops drawing. The pen is up by default, so it should be used only after using <code><a cbot|pendown>pendown</a></code>."
"<format const>true</format> if the research can be done (even if it is already done, to check that, use the <a cbot|researched>researched</a> instruction)\n"
"<format const>false</format> if the research cannot be done"
msgid "Minimum radius of flat ground around the desired position."
msgstr ""
#. type: Plain text
#: ../E/flatspace.txt:5
#, no-wrap
msgid "Determines the position of the nearest free space with at least <code>flatmin</code> of flat ground around a given position. Works similar to <c/><a cbot|space>space();</a><n/>. Useful for finding a place for a <a cbot|category>building</a>."
msgid "Nothing but a name can be changed in the main function. The keyword <code><a cbot|extern>extern</a></code> distinguish the main function from others."
msgid "<a cbot|array>Array</a> of categories of the objects that should be detected. For example, when you are looking only for grabbers:"
msgstr ""
#. type: Bullet: 'o'
#: ../E/radar.txt:23
#, no-wrap
msgid "<a cbot|category>Category</a> of the objects that should be detected. For example, when you are looking for an ant, write <code>radar(AlienAnt)</code>. "
msgid "Detects the object of the given category that is closest to the given position. Similar to <c/><a cbot|radar>radar();</a><n/>, but can search starting from the specific point instead of the actual bot's position."
msgstr ""
#. type: Bullet: 'o'
#: ../E/search.txt:8
#, no-wrap
msgid "<a cbot|category>Category</a> of the objects that should be detected. For example, when you are looking for an ant, write <code>search(AlienAnt)</code>. "
msgstr ""
#. type: Bullet: 'o'
#: ../E/search.txt:9
#, no-wrap
msgid "<a cbot|array>Array</a> of categories of the objects that should be detected. For example, when you are looking only for grabbers, starting from a certain point in the level:"
"Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <code>destroy()</code>.\n"
"<code>== 0 </code>The operation of destroying of an object was started\n"
"<code>!= 0 </code>The instruction could not be done (e.g. nothing to destroy)"
msgstr ""
#. type: Bullet: 'o'
#: ../E/search.txt:17
#, no-wrap
msgid "Keyword <format const>Any</format> if you are looking for any object (including even plants and so on)."
msgid "Keyword <format const>Any</format> if you are looking for any object (including even plants and so on). Filters may be useful to use with this keyword."
msgid "Determines which type of objects should be detected. Especially useful in use with an <a cbot|array>array</a> or <format const>Any</format>. The following filters are available:"
msgid "The last three are mainly useful in <a battles>code battles</a>. You can also pass a team ID to search only for objects from a specific team. Attention: you should use <format const>FilterNeutral</format> instead of <code>0</code> or else it will not work."
msgstr ""
#. type: Plain text
#: ../E/radar.txt:63
#, no-wrap
msgid "Filters and IDs can be mixed using bitwise OR operator <code>|</code>, for example <c/>radar(Any, 0, 360, 0, 1000, 1, 2 | FilterOnlyLanding);<n/> will only detect an object from team <code>2</code> that is on the ground. Attention: you can specify only one team ID at once, but you can specify several filters at once."
msgid "Note: the <a cbot|busy>busy</a> instruction might be much better to use in this scenario."
msgstr ""
#. type: Plain text
#: ../E/switch.txt:7
#, no-wrap
msgid "See the following <a cbot|function>function</a>: the bot will be <a cbot|wait>waiting</a> a proper amount of time for a certain task to be completed:"
msgstr ""
#. type: Plain text
#: ../E/switch.txt:44
#, no-wrap
msgid "<a object|convert>Converter</a> and <a object|factory>bot factory</a> have the same waiting time, so in order to not write the same instructions twice, we made multiple cases run the same code. In fact, all code after the highest case used will be executed if we do not <code><a cbot|break>break</a></code> it."
msgstr ""
#. type: Plain text
#: ../E/switch.txt:57
#, no-wrap
msgid "With this conditional structure you can execute <code>instructions1</code> or <code>instructions2</code> ... or <code>instructionsN</code> or <code>instructionsDefault</code> depending on the <code>value</code>."
msgstr ""
#. type: Plain text
#: ../E/switch.txt:59
#, no-wrap
msgid ""
"If the <code>value</code> is equal to <code>value1</code>, <code>instructions1</code> to <code>N</code> (including <code>instructionsDefault</code>) are executed.\n"
"If the <code>value</code> is equal to <code>value2</code>, <code>instructions2</code> to <code>N</code> (including <code>instructionsDefault</code>) are executed.\n"
"And so on.\n"
"If the <code>value</code> is equal to <code>valueN</code>, <code>instructionsN</code> and <code>instructionsDefault</code> are executed.\n"
"If the <code>value</code> is not equal to any value in the given cases, <code>instructionsDefault</code> are executed."
msgstr ""
#. type: Plain text
#: ../E/switch.txt:68
#, no-wrap
msgid "Do not put a <a cbot|term>semicolon</a> at the end of the <code>switch ( ) { }</code> instruction."
msgstr ""
#. type: Plain text
#: ../E/switch.txt:65
#, no-wrap
msgid "You can exit from the the <code>switch() {}</code> instruction using <code><a cbot|break>break</a></code>."
msgstr ""
#~ msgid "You can stop the the <code>switch() {}</code> instruction using <code><a cbot|break>break</a></code>."
#~ msgstr ""
#~ msgid "<a object|convert>Converter</a> and <a object|factory>bot factory</a> have the same waiting time, so in order to not write the same instructions twice, we made multiple cases run the same code. In fact, all code after the highest case used will be executed if we do not <a cbot|break>break</a> it."
#~ msgstr ""
#~ msgid ""
#~ "With this conditional structure you can execute <code>instructions1</code> or <code>instructions2</code> ... or <code>instructionsN</code> or <code>instructionsDefault</code> depending on the <code>value</code>.\n"
#~ "If the <code>value</code> is equal to <code>value1</code>, <code>instructions1</code> to <code>N</code> (including <code>instructionsDefault</code>) are executed.\n"
#~ "If the <code>value</code> is equal to <code>value2</code>, <code>instructions2</code> to <code>N</code> (including <code>instructionsDefault</code>) are executed.\n"
#~ "And so on.\n"
#~ "If the <code>value</code> is equal to <code>valueN</code>, <code>instructionsN</code> and <code>instructionsDefault</code> are executed.\n"
#~ "If the <code>value</code> is not equal to any value in the given cases, <code>instructionsDefault</code> are executed."
#~ msgstr ""
#~ msgid "You can stop the the <code>switch() {}</code> instruction using <a cbot|break>break</a>."
#~ msgstr ""
#~ msgid ""
#~ "Note: the <a cbot|busy>busy</a> instruction might be much better to use in this scenario.\n"
#~ "See the following <a cbot|function>function</a>: the bot will be <a cbot|wait>waiting</a> a proper amount of time for a certain task to be completed:"
#~ msgstr ""
#~ msgid "With this conditional structure you can execute instruction1 or instructions2 ... or instructionsN or instructionsDefault depending on the <code>value</code>. If the <code>value</code> is equal to <code>value1</code>, <code>instructions1</code> to <code>N</code> (including <code>instructionsDefault</code>) are executed. If the <code>value</code> is equal to <code>value2</code>, <code>instructions2</code> to <code>N</code> (including <code>instructionsDefault</code>) are executed. And so on. If the <code>value</code> is equal to <code>valueN</code>, <code>instructionsN</code> and <code>instructionsDefault</code> are executed. If the <code>value</code> is not equal to any value in the given cases, <code>instructionsDefault</code> are executed."
#~ msgid "The last three are mainly useful in <a battles>code battles</a>. You can also pass a team ID to search only for objects from a specific team."
#~ msgstr ""
#~ msgid "Filters and IDs can be mixed using bitwise OR operator, for example <c/>radar(Any, 0, 360, 0, 1000, 1, 2 | FilterOnlyLanding);<n/> will detect an object from team <code>2</code> that is on the ground. Attention: you can specify only one team ID at once, but you can specify several filters at once."
#~ msgstr ""
#~ msgid "The last three are mainly useful in <a battles>code battles</a>."
#~ "<code><format const>FilterOnlyLanding</format> </code>Detects only objects being on the ground\n"
#~ "<code><format const>FilterOnlyFlying</format> </code>Detects only objects not being on the ground\n"
#~ "<code><format const>FilterFriendly</format> </code>Detects only allies (objects in the same team).\n"
#~ "<code><format const>FilterEnemy</format> </code>Detects only enemies (objects in an other team except neutral).\n"
#~ "<code><format const>FilterNeutral</format> </code>Detects only neutral objects (e.g. resources)."
#~ msgstr ""
#~ msgid "Determines which type of objects should be detected. Especially useful in use with an <a cbot|array>array</a> or \\constAny<norm/>. The following filters are available:"
#~ "Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <code>destroy()</code>.\n"
#~ "<code>== 0 </code>The operation of destroying an object was started\n"
#~ "<code>!= 0 </code>The instruction could not be done (e.g. nothing to destroy)"
#~ "Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <code>destroy()</code>.\n"
#~ "<code>== 0 </code>The operation of destroying an object was started\n"
#~ "<code>!= 0 </code>The instruction could not be done (e.g. it was run on an object other than destroyer)"
#~ msgid "<a cbot|category>Category</a> of the objects that should be detected. For example, when you are looking for an ant, write <code>radar (AlienAnt)</code>. "
#~ msgstr "<a cbot|category>Catégorie</a> des objets cherchés. Par exemple, <code>WayPoint</code>."
#~ msgid "Determines the position of the nearest free space with at least <code>flatmin</code> of flat ground around a given position. Works similar <c/><a cbot|space>space();</a><n/>. Useful for finding a place for a <a cbot|category>building</a>."
#~ msgid "The instruction <c/>pendown();<n/> instructs the bot to have the pen down, so it begins drawing."
#~ msgstr ""
#~ msgid "The instruction <c/>penup();<n/> instructs the bot to have the pen up, so it ends drawing. The pen is up by default, so it should be used only after using <code><a cbot|pendown>pendown</a></code>."
#~ msgstr ""
#~ msgid "The instruction <c/>pendown();<n/> instructs the bot to change the color of the pencil."
#~ msgstr ""
#~ msgid ""
#~ "Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <c/>pendown();<n/>.\n"
#~ "<code>== 0 </code>The color was changed\n"
#~ "<code>!= 0 </code>The instruction did not work"
#~ msgstr ""
#~ msgid ""
#~ "<code><a cbot|int>int</a> object.category </code><a cbot|category>Category</a> of the object\n"
#~ "<code><a cbot|point>point</a> object.position </code>Position of the object (x,y,z)\n"
#~ "<code><a cbot|float>float</a> object.orientation </code>Orientation of the object (0..360)\n"
#~ "<code><a cbot|float>float</a> object.pitch </code>Forward/backward angle of the object\n"
#~ "<code><a cbot|float>float</a> object.roll </code>Right/left angle of the object \n"
#~ "Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <code>factory()</code>.\n"
#~ "<code>== 0 </code>The research successfully started\n"
#~ "<code>!= 0 </code>The research could not be started"
#~ msgstr ""
#~ msgid "Below are the different research names available:"
#~ "Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <code>takeoff()</code>.\n"
#~ "<code>== 0 </code>Spaceship takes off\n"
#~ "<code>!= 0 </code>Spaceship could not take off"
#~ msgstr ""
#~ msgid ""
#~ "<code><a cbot|int>int</a> object.category </code><a cbot|category>Category</a> of the object\n"
#~ "<code><a cbot|point>point</a> object.position </code>Position of the object (x,y,z)\n"
#~ "<code><a cbot|float>float</a> object.orientation </code>Orientation of the object (0..360)\n"
#~ "<code><a cbot|float>float</a> object.pitch </code>Forward/backward angle of the object\n"
#~ "<code><a cbot|float>float</a> object.roll </code>Right/left angle of the object \n"
#~ msgid "Also, some objects have additional methods (instructions). See them in <a cbot>the main list</a> in |c;Instructions specific for some <a cbot\\object>objects</a><n/> section."
#~ msgstr ""
#~ msgid ""
#~ "<code><a cbot|int>int</a> object.category </code><a cbot|category>Category</a> of the object\n"
#~ "<code><a cbot|point>point</a> object.position </code>Position of the object (x,y,z)\n"
#~ "<code><a cbot|float>float</a> object.orientation </code>Orientation of the object (0..360)\n"
#~ "<code><a cbot|float>float</a> object.pitch </code>Forward/backward angle of the object\n"
#~ "<code><a cbot|float>float</a> object.roll </code>Right/left angle of the object \n"
#~ "<code><a cbot|float>float</a> object.lifeTime </code>Lifetime of the object\n"
#~ "<code>object object.energyCell </code>Power cell on the bot\n"
#~ "<code>object object.load </code>Object carried by the bot\n"
#~ "<code><a cbot|string>string</a> object.team </code>The bot's team (see <a battles>code battles</a>)\n"
#~ "<code><a cbot|float>float</a> object.velocity </code>Velocity of the object"
#~ msgstr ""
#~ msgid "Use this type for variables that contain the characteristics of an object, be it a bot, a building, some raw material, an enemy, etc. "
#~ msgstr "Ce type permet de représenter les caractéristiques d'un objet, qu'il s'agisse d'un robot, d'un bâtiment, d'une matière première transportable, d'un ennemi, etc."
#~ msgid ""
#~ "<code><a cbot|int>int</a> object.category </code><a cbot|category>Category</a> of the object\n"
#~ "<code><a cbot|point>point</a> object.position </code>Position of the object (x,y,z)\n"
#~ "<code><a cbot|float>float</a> object.orientation </code>Orientation of the object (0..360)\n"
#~ "<code><a cbot|float>float</a> object.pitch </code>Forward/backward angle of the object\n"
#~ "<code><a cbot|float>float</a> object.roll </code>Right/left angle of the object \n"
#~ msgid "Below are the different categories available :"
#~ msgstr "Voici les différents types possibles:"
#~ msgid ""
#~ "Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <code>factory()</code>.\n"
#~ "<code>== 0 </code>The construction successfully started\n"
#~ "<code>!= 0 </code>The construction could not be started (e.g. no <a object|titan>Titanium</a> in the factory, the bot is not available in the level)"
#~ msgid "Nothing but a name can be changed in a main function. The keyword <code>extern</code> distinguish the main function from others."
#~ msgstr ""
#~ msgid "A function must be declared above the main function. Result <a cbot|type>type</a> should be <a cbot/void>void</a> if the function does not give any. Body is just a set of instructions. Function name must be created with the exact same rules applied to <a cbot|var>variables</a>."
#~ "With functions you can divide your program into several parts, each of them will execute a specific task.\n"
#~ "Let's imagine following program¦:"
#~ msgstr ""
#~ "Lorsqu'un programme devient long, il est conseillé de le fragmenter en plusieurs fonctions, qui accompliront chacune une tâche bien précise.\n"
#~ "Imaginons le programe suivant:"
#~ msgid ""
#~ "extern void object::Remote( )\n"
#~ "{\n"
#~ "\tsend(\"order\", 1, 100);\n"
#~ "\twait(5);\n"
#~ "\tsend(\"order\", 3, 100);\n"
#~ "\twait(5);\n"
#~ "\tsend(\"order\", 2, 100);\n"
#~ "\twait(5);\n"
#~ "\tsend(\"order\", 4, 100);\n"
#~ "\twait(5);\n"
#~ "}"
#~ msgstr ""
#~ "extern void object::Remote( )\n"
#~ "{\n"
#~ "\tsend(\"order\", 1, 100);\n"
#~ "\twait(5);\n"
#~ "\tsend(\"order\", 3, 100);\n"
#~ "\twait(5);\n"
#~ "\tsend(\"order\", 2, 100);\n"
#~ "\twait(5);\n"
#~ "\tsend(\"order\", 4, 100);\n"
#~ "\twait(5);\n"
#~ "}"
#~ msgid "<code>send</code> and <code>wait</code> are repeated several times. So it would be a good thing if we created a function that executes these two instructions:"
#~ msgstr "On constate que les deux instructions <code>send</code> et <code>wait</code> sont répétées plusieurs fois. Il est donc judicieux de créer une fonction <code>SendToPost</code> qui effectue ces deux instructions:"
#~ msgid ""
#~ "void object::SendToPost( float op )\n"
#~ "{\n"
#~ "\tsend(\"order\", op, 100);\n"
#~ "\twait(5);\n"
#~ "}\n"
#~ "extern void object::Remote( )\n"
#~ "{\n"
#~ "\tSendToPost(1);\n"
#~ "\tSendToPost(3);\n"
#~ "\tSendToPost(2);\n"
#~ "\tSendToPost(4);\n"
#~ "}"
#~ msgstr ""
#~ "extern void object::Remote( )\n"
#~ "{\n"
#~ "\tSendToPost(1);\n"
#~ "\tSendToPost(3);\n"
#~ "\tSendToPost(2);\n"
#~ "\tSendToPost(4);\n"
#~ "}\n"
#~ "void object::SendToPost( float op )\n"
#~ "{\n"
#~ "\tsend(\"order\", op, 100);\n"
#~ "\twait(5);\n"
#~ "}"
#~ msgid "A function can have paramteters¦:"
#~ msgstr "Une fonction peut recevoir des données en entrée. Il faut en donner la liste, avec à chaque fois le type de la variable et le nom qui lui est donné:"
#~ msgid "void Example( int a, float x, string s )"
#~ msgstr "void Example( int a, float x, string s )"
#~ msgid "The <code>Example</code> function will reveive un integer <code>a</code>, a floating point number <code>x</code> and a string <code>s</code>. Parameters are \"passed by value\", that is the values of parameter variables in a function are copies of the values the caller specified as variables. If you pass an <code>int</code> to a function, its parameter is a copy of whatever value was being passed as argument, and the function can change its parameter value without affecting values in the code that invoked the function."
#~ msgstr "La fonction <code>Example</code> va recevoir un nombre entier <code>a</code>, un nombre réel <code>x</code> et une chaîne <code>s</code>. Parameters are \"passed by value\", that is the values of parameter variables in a function are copies of the values the caller specified as variables. If you pass an <code>int</code> to a function, its parameter is a copy of whatever value was being passed as argument, and the function can change its parameter value without affecting values in the code that invoked the function."
#~ msgid "If you pass a <a cbot|class>class</a> instance or an <a cbot|array>array</a> as parameter to a function, the function only receives a <a cbot|pointer>reference</a> to the instance or the array. That means if you modify the instance or the array in the function, the instance or the array that has been specified by the caller will be actuallay modified."
#~ msgstr "Les <a cbot|array>tableaux</a> et les instances de <a cbot|class>classes</a> sont toujours passées par <a cbot|pointer>référence</a>. That means if you modify the instance or the array in the function, the instance or the array that has been specified by the caller will be actuallay modified."
#~ msgid "A function can also return a result with the <code><a cbot|return>return</a></code> instruction. Therefore the function must be declared no longer as void but as a type:"
#~ msgstr "Une fonction peut effectuer un calcul et retourner le résultat avec l'instruction <code><a cbot|return>return</a></code>. Therefore the function must be declared no longer as void but as a type:"
#~ msgid ""
#~ "float Mean( float a, float b )\n"
#~ "{\n"
#~ "\treturn (a+b)/2;\n"
#~ "}\n"
#~ "\n"
#~ "extern void object::Test( )\n"
#~ "{\n"
#~ "\tfloat value;\n"
#~ "\tvalue = Mean(2, 6);\n"
#~ "\tmessage( value ); // will display 4\n"
#~ "}"
#~ msgstr ""
#~ "float Moyenne( float a, float b )\n"
#~ "{\n"
#~ "\treturn (a+b)/2;\n"
#~ "}\n"
#~ "extern void object::Essai( )\n"
#~ "{\n"
#~ "\tfloat value;\n"
#~ "\tvalue = Moyenne(2, 6);\n"
#~ "\tmessage( value ); // affiche 4\n"
#~ "}"
#~ msgid "Some other examples¦:"
#~ msgstr "Voici d'autres exemples de fonctions:"
#~ msgid ""
#~ "float Pi( )\n"
#~ "{\n"
#~ "\treturn 3.1415;\n"
#~ "}\n"
#~ "\n"
#~ "string Sign( float a )\n"
#~ "{\n"
#~ "\tif ( a > 0 ) return \"positive\";\n"
#~ "\tif ( a < 0 ) return \"negative\";\n"
#~ "\treturn \"null\";\n"
#~ "}"
#~ msgstr ""
#~ "float Pi( )\n"
#~ "{\n"
#~ "\treturn 3.1415;\n"
#~ "}\n"
#~ "\n"
#~ "string Signe( float a )\n"
#~ "{\n"
#~ "\tif ( a > 0 ) return \"positif\";\n"
#~ "\tif ( a < 0 ) return \"negatif\";\n"
#~ "\treturn \"nul\";\n"
#~ "}"
#~ msgid "You can declare several functions with the same name but different parameters¦:"
#~ msgstr "Il est autorisé de créer plusieurs fonctions ayant le même nom mais des paramètres différents:"
#~ msgid ""
#~ "float Pythagoras( float a, float b )\n"
#~ "{\n"
#~ "\treturn sqrt((a*a)+(b*b));\n"
#~ "}\n"
#~ "\n"
#~ "float Pythagoras( float a, float b, float c )\n"
#~ "{\n"
#~ "\treturn sqrt((a*a)+(b*b)+(c*c));\n"
#~ "}"
#~ msgstr ""
#~ "float Pythagore( float a, float b )\n"
#~ "{\n"
#~ "\treturn sqrt((a*a)+(b*b));\n"
#~ "}\n"
#~ "\n"
#~ "float Pythagore( float a, float b, float c )\n"
#~ "{\n"
#~ "\treturn sqrt((a*a)+(b*b)+(c*c));\n"
#~ "}"
#~ msgid "CBOT will call either the one or the other function depending on the paramteres passed."
#~ msgstr "Lors de l'appel à la fonction, CBOT recherche la fonction dont les paramètres correspondent au mieux."
#~ msgid "Angle in degrees of the gun relative to the robot. A positive value orients the gun to the right. The angle must range from <code>-40</code> to <code>+40</code> degrees for all shooters. This parameter is optional: if no value is provided, then <code>x = 0</code>."
#~ msgstr ""
#~ msgid "Truncation is a method of approximating a decimal number by dropping all decimal places past a certain point without rounding. For positive numbers, it works like the <c/><a cbot|floor\\n>floor();</a> function, and for negative numbers, it works like the <c/><a cbot|ceil\\n>ceil();</a> function. It can be said that it rounds towards zero."
#~ msgid "The purpose of using two arguments instead of one is to gather information on the signs of the inputs in order to return the appropriate quadrant of the computed angle, which is not possible for the single-argument <c/>\\latan();\\u cbot\\atan;<n/> function. For example, consider a point <code>(-1, -1)</code>: <c/>atan(-1/-1);<n/> is <code>45.00</code> degrees, whereas <c/>atan2(-1, -1);<n/> is <code>-135.00</code> degrees, which is obviously more correct in this case."
#~ msgid "The instruction <c/>build();<n/> instructs the bot to build a building of the given <a cbot|category>category</a>. Currently works for <a bots|botgc>Grabbers</a>, <a object|human>Me</a> and <a object|tech>Tech</a>."
#~ msgstr ""
#~ msgid "The instruction <c/>canbuild();<n/> lets you know if <a bots|botgc>Grabbers</a>, <a object|human>Me</a> or <a object|human>Tech</a> can build a building of the given <a cbot|category>category</a>. "
#~ msgstr ""
#~ msgid "It is similar to the <code><a cbot|canbuild>canbuild</a></code> instruction. However, it does not check if a required research has been done."
#~ msgstr ""
#~ msgid "It helps to prevent errors in programs using the <a cbot|build>build</a> instruction. Here is an example:"
#~ msgstr ""
#~ msgid "The <a cbot|category>category</a> of a building."
#~ msgstr ""
#~ msgid "It helps to prevent errors in programs using <a cbot|build>build</a> instruction. Here is an example:"
#~ msgid "The instruction <c/>canbuild();<n/> instructs the bot to build a building of the given <a cbot|category>category</a>. Currently works for <a bots|botgc>Grabbers</a>, <a object|human>Me</a> and <a object|human>Tech</a>"
#~ msgstr ""
#~ msgid "The instruction <c/>build();<n/> instructs the bot to build a building of the given <a cbot|category>category</a>. Currently works for <a bots|botgc>Grabbers</a>, <a object|human>Me</a> and <a object|human>Tech</a>"
#~ msgid "The instruction <c/>build();<n/> instructs the bot to build a building of the given <a cbot|category>category</a>. Currently works for every bot."
#~ msgid "This instruction sets the vertical and/or the horizontal angle of the cannon. The following robots are equipped with a cannon: "
#~ msgstr ""
#~ msgid "Angle in degrees of the gun relative to the robot. A positive value orients the gun to the right. For shooters and orga shooters, the angle must range from <code>-40</code> to <code>+40</code> degrees. For phazer shooters, the angle must range from <code>-40</code> to <code>40</code> degrees. It is optional: if no value is provided, then <code>x = 0</code>."
#~ msgstr ""
#~ msgid "Angle in degrees of the gun relative to the robot. A positive value orients the gun to the right. For shooters and orga shooters, the angle must range from <code>-20</code> to <code>+20</code> degrees. For phazer shooters, the angle must range from <code>-20</code> to <code>45</code> degrees."
#~ msgstr ""
#~ msgid "<c/>aim ( angle );<n/>"
#~ msgstr "<c/>aim ( angle );<n/>"
#~ msgid "This instruction sets the vertical angle of the cannon. The following robots are equipped with a cannon: "
#~ msgstr "Hausse du canon, pour les robots équipés d'un canon, à savoir:"
#~ msgid "This command is mostly useful in an attempt to build a fully automatised base, where an <a object|human>astronaut</a> does not need to do anything except watching bots working. What is more, it makes beating the game by using only programming a possible task (however, it is a challenge rather for experienced gamers, who beat the whole game at least once)."
#~ msgstr ""
#~ msgid "The instruction <c/>build();<n/> instructs the bot to build a building of the given <a cbot|category>categories</a>. Currently works for every bot."
#~ msgstr ""
#~ msgid "The category of a building."
#~ msgstr ""
#~ msgid "Here is an example of a program that looks for a <a object|titan>titanium cube</a>, goes to the position and builds a <a object|factory>bot factory</a>."
#~ msgid "This command is mostly useful in an attempt to build a fully automatised base, where <a object|human>an astronaut</a> does not need to do anything except watching bots working. What is more, it makes beating the game by using only programming a possible task (however, it is rather a challenge for experienced gamers, who beat the whole game at least once)."
#~ msgstr ""
#~ msgid "Here is an example of a program that looks for a <a object|titan>titanium cube</a>, goes to the position and builds <a object|factory>a bot factory</a>."