colobot-data 0.1.7 - en to pt_PT translation catalogue (45 entries)

note: type: \b; header
en: Programs dispatched by Houston
pt_PT: Programas despachados por Houston

note: type: Plain text
en: Following is a program that has been developed by our engineers. It allows you to switch <a object|power>power cells</a>. A charged cell needs to be placed on the ground in front of the bot.
pt_PT: A seguir, um programa que foi desenvolvido por nossos engenheiros. Ele permite a você trocar  <a object|power>células de energia</a>. Uma célula de energia carregada precisa estar no chão na frente do robô.

note: type: Plain text
en: In order to execute this program, select the program <code>SwitchCell1</code> in the list of the programs available on the bot (on the lower left-hand corner of your screen), and click on the arrow symbol <button 21/>.
pt_PT: Para executar este programa, selecione o programa <code>TrocarCelula1</code> na lista de programas disponíveis no robô (no canto inferior esquerdo da sua tela), e clique no símbolo de seta <button 21/>.

note: type: Source code
en: extern void object::SwitchCell1()
    {
    	<a cbot|grab>grab</a>(InFront);     // take the new cell in front
    	<a cbot|drop>drop</a>(Behind);      // and drop it behind
    	
    	<a cbot|grab>grab</a>(EnergyCell);  // take the cell from the bot
    	<a cbot|drop>drop</a>(InFront);     // and drop it in front
    	
    	<a cbot|grab>grab</a>(Behind);      // take the new cell
    	<a cbot|drop>drop</a>(EnergyCell);  // and drop it on the bot
    }
pt_PT: extern void object::TrocarCelula1()
    {
    	<a cbot|grab>grab</a>(InFront);     // pegue a nova célula na frente
    	<a cbot|drop>drop</a>(Behind);      // e coloque-a atrás
    	
    	<a cbot|grab>grab</a>(EnergyCell);  // pegue a célula do robô 
    	<a cbot|drop>drop</a>(InFront);     // e coloque-a na frente
    	
    	<a cbot|grab>grab</a>(Behind);      // pegue a nova célula
    	<a cbot|drop>drop</a>(EnergyCell);  // e coloque-a no robô
    }

note: type: \b; header
en: Programs dispatched by Houston
pt_PT: Programas despachados por Houston

note: type: Plain text
en: We did not develop a specific program for this mission. However, you can develop your own programs if you think it would be useful.
pt_PT: Nós não desenvolvemos um programa específico para esta missão. Entretanto, você pode desenvolver seus próprios programas se você pensa que eles serão úteis.

note: type: \b; header
en: Archives
pt_PT: Arquivos

note: type: Plain text
en: Index of the programs dispatched in former missions:
pt_PT: Índice dos programas enviados em missões anteriores:

note: type: Bullet: 'o'
en: <code><a programs/1_SwitchCell1>SwitchCell1</a></code>
pt_PT: <code><a programs/1_SwitchCell1>TrocarCelula1</a></code>

note: type: Plain text
en: Below is a program that has been developed by our engineers. It allows you to recharge the <a object|power>power cell</a> of a bot: it goes to the closest <a object|station>power station</a>, waits 5 seconds, and comes back to the initial position.
pt_PT: Abaixo está um programa que foi desenvolvido por nossos engenheiros. Ele permite que você recarregue a <a object|power>célula de energia</a> de um robô: ele vai para a estação de energia <a object|station>mais próxima</a>, aguarda 5 segundos e volta para a posição inicial.

note: type: Plain text
en: Remark: If you click on an element of the program underlined in blue, your SatCom will display a text that explains this element. The texts that follow a double slash <code>//</code> are not part of the program, but are comments that help you to understand the program.
pt_PT: Observação: Se você clicar em um elemento do programa sublinhado em azul, seu SatCom exibirá um texto que explica esse elemento. Os textos que seguem uma barra dupla <code>//</ code> não fazem parte do programa, mas são comentários que ajudam você a entender o programa.

note: type: Source code
en: extern void object::Recharge1()
    {
    	<a cbot|type>point</a>  start;          // variable for initial pos.
    	<a cbot|type>object</a> item;           // info. about power station
    	
    	start = position;      // store initial position
    	
    	item = <a cbot|radar>radar</a>(<a cbot|category>PowerStation</a>); // look for station
    	<a cbot|goto>goto</a>(item.position);   // go to the power station
    	<a cbot|wait>wait</a>(5);               // wait 5 seconds
    	
    	<a cbot|goto>goto</a>(start);           // go back to initial pos.
    }
pt_PT: extern void object::Recarregar1()
    {
    	<a cbot|type>point</a>  inicio;          // variável para a posição inicial
    	<a cbot|type>object</a> item;           // informação sobre a estação de energia
    	
    	inicio = position;      // armazena a posição inicial
    	
    	item = <a cbot|radar>radar</a>(<a cbot|category>PowerStation</a>); // procura pela estação
    	<a cbot|goto>goto</a>(item.position);   // vai para a estação de energia
    	<a cbot|wait>wait</a>(5);               // espera 5 segundos
    	
    	<a cbot|goto>goto</a>(inicio);           // volta para a posição inicial
    }

note: type: Plain text
en: We have improved the recharge program. When it arrives at the <a object|station>power station</a>, the bot does not wait exactly 5 seconds, but only until the <a object|power>power cell</a> is fully charged. After the bot is back at the initial position, it displays a message on the screen.
pt_PT: Nós melhoramos o programa de recarga. Quando chega à <a object|station>estação de energia</a>, o robô não espera exatamente 5 segundos, mas apenas até que a <a object|power>célula de energia</a> esteja totalmente carregada. Após o robô voltar à posição inicial, ele exibe uma mensagem na tela.

note: type: Source code
en: extern void object::Recharge2()
    {
    	<a cbot|type>point</a>  start;          // variable for initial pos.
    	<a cbot|type>object</a> item;           // info. about power station
    	
    	start = position;      // store initial position
    	
    	item = <a cbot|radar>radar</a>(<a cbot|category>PowerStation</a>); // look for station
    	<a cbot|goto>goto</a>(item.position);   // go to the power station
    	
    	<a cbot|while>while</a> ( <a cbot|object>energyCell.energyLevel</a> < 1 )
    	{
    		<a cbot|wait>wait</a>(1);           // wait until recharged
    	}
    	
    	<a cbot|goto>goto</a>(start);           // go back to initial pos.
    	<a cbot|message>message</a>("Recharge completed");
    }
pt_PT: extern void object::Recarregar2()
    {
    	<a cbot|type>point</a>  inicio;          // variável para a posição inicial
    	<a cbot|type>object</a> item;           // informação sobre a estação de energia
    	
    	inicio = position;      // armazena a posição inicial
    	
    	item = <a cbot|radar>radar</a>(<a cbot|category>PowerStation</a>); // procura pela estação
    	<a cbot|goto>goto</a>(item.position);   // vai para a estação
    	
    	<a cbot|while>while</a> ( <a cbot|object>energyCell.energyLevel</a> < 1 )
    	{
    		<a cbot|wait>wait</a>(1);           // espera até que esteja recarregada
    	}
    	
    	<a cbot|goto>goto</a>(inicio);           // volta para a posição inicial
    	<a cbot|message>message</a>("Recarga completada");
    }

note: type: Bullet: 'o'
en: <code><a programs/2_Recharge1>Recharge1</a></code>
pt_PT: <code><a programs/2_Recharge1>Recarregar1</a></code>

note: type: Bullet: 'o'
en: <code><a programs/3_Recharge2>Recharge2</a></code>
pt_PT: <code><a programs/3_Recharge2>Recarregar2</a></code>

note: type: Plain text
en: Below is one of the programs that has been developed by our engineers.
    It instructs a <a object|botgr>grabber</a> to retrieve the nearest chunk of <a object|titanore>titanium ore</a> and place it on the <a object|convert>converter</a>.
pt_PT: Abaixo está um dos programas desenvolvidos pelos nossos engenheiros.
    Ele instrui um <a object|botgr>agarrador</a> para recuperar o pedaço mais próximo de <a object|titanore>minério de titânio</a> e colocá-lo no <a object|convert>conversor</a>.

note: type: Plain text
en: In order to execute this program, select the program <code>CollectTitanium1</code> in the list of the programs available on the bot (on the lower left-hand corner of your screen), and click on the arrow symbol <button 21/>. At any moment you can stop the program and take over at the controls with the stop button <button 8/>.
pt_PT: Para executar este programa, selecione o programa <code>ColetarTitanio1 </ code> na lista de programas disponíveis no robô (no canto inferior esquerdo da tela) e clique no símbolo de seta <button 21/>. A qualquer momento, você pode parar o programa e assumir os controles com o botão de parada <button 8/>.

note: type: Source code
en: extern void object::CollectTitanium1()
    {
    	// 1) Variable definition.
    	<a cbot|type>object</a>  item;            // info. about objects
    	
    	// 2) Go to the titanium ore and grab it.
    	item = <a cbot|radar>radar</a>(<a cbot|category>TitaniumOre</a>);// look for titanium ore
    	<a cbot|goto>goto</a>(item.position);     // go to the position
    	<a cbot|grab>grab</a>();                  // grab the titanium
    	
    	// 3) Go to the converter and drop it.
    	item = <a cbot|radar>radar</a>(<a cbot|category>Converter</a>); // look for converter
    	<a cbot|goto>goto</a>(item.position);     // go to the position
    	<a cbot|drop>drop</a>();                  // drop the titanium
    	<a cbot|move>move</a>(-2.5);              // step back 2.5 m
    }
pt_PT: extern void object::ColetarTitanio1()
    {
    	// 1) Definição de variáveis.
    	<a cbot|type>object</a>  item;            // informação sobre objetos
    	
    	// 2) Vá até o minério de titânio e pegue ele
    	item = <a cbot|radar>radar</a>(<a cbot|category>TitaniumOre</a>);// procure pelo minério de titânio
    	<a cbot|goto>goto</a>(item.position);     // vá para a posição do minério
    	<a cbot|grab>grab</a>();                  // pegue o minério
    	
    	// 3) Vá até o conversor e deixe o minério
    	item = <a cbot|radar>radar</a>(<a cbot|category>Converter</a>); // procure pelo conversor
    	<a cbot|goto>goto</a>(item.position);     // vá para a posição do conversor
    	<a cbot|drop>drop</a>();                  // largue o minério
    	<a cbot|move>move</a>(-2.5);              // vá para trás 2.5 m
    }

note: type: Plain text
en: Below is one of the programs that has been developed by our engineers.
    An upgrade on the previous program: the <a object|botgr>grabber</a>, on its way back from the converter, makes a stop, if necessary, at the <a object|station>power station</a> to recharge its power cell.
pt_PT: Abaixo está um dos programas desenvolvidos pelos nossos engenheiros. 
    Uma atualização no programa anterior: o <a object|botgr>agarrador</a>, no caminho de volta do conversor, faz uma parada, se necessário, na <a object|station>estação de energia</a> para recarregar sua célula de energia.

note: type: Plain text
en: This program also works on <a object|botgj>winged grabbers</a>, if the <a object|derrick>derrick</a> is on another island than the <a object|convert>converter</a>.
pt_PT: Este programa também funciona em <a object|botgj>agarradores alados</a>, caso o <a object|derrick>extrator</a> esteja em uma ilha diferente do <a object|convert>conversor</a>.

note: type: Source code
en: extern void object::CollectTitanium2()
    {
    	// 1) Variable definition.
    	<a cbot|type>object</a>  item;            // info. about objects
    	
    	// 2) Go to the titanium ore and grab it.
    	item = <a cbot|radar>radar</a>(<a cbot|category>TitaniumOre</a>);// look for titanium ore
    	<a cbot|goto>goto</a>(item.position);     // go to the position
    	<a cbot|grab>grab</a>();                  // grab the titanium
    	
    	// 3) Go to the converter and drop it.
    	item = <a cbot|radar>radar</a>(<a cbot|category>Converter</a>); // look for converter
    	<a cbot|goto>goto</a>(item.position);     // go to the position
    	<a cbot|drop>drop</a>();                  // drop the titanium
    	<a cbot|move>move</a>(-2.5);              // step back 2.5 m
    		
    	// 4) If power cell half empty, recharges.
    	if ( energyCell.energyLevel < 0.5 )
    	{                               // if so:
    		item = <a cbot|radar>radar</a>(<a cbot|category>PowerStation</a>); // look for station
    		<a cbot|goto>goto</a>(item.position);        // go there
    		<a cbot|wait>wait</a>(5);                    // wait
    	}
    }
pt_PT: extern void object::ColetarTitanio2()
    {
    	// 1) Definição de variáveis.
    	<a cbot|type>object</a>  item;            // informação sobre objetos
    	
    	// 2) Vá até o minério de titânio e pegue ele
    	item = <a cbot|radar>radar</a>(<a cbot|category>TitaniumOre</a>);// procure pelo minério de titânio
    	<a cbot|goto>goto</a>(item.position);     // vá para a posição do minério
    	<a cbot|grab>grab</a>();                  // pegue o minério
    	
    	// 3) Vá até o conversor e deixe o minério
    	item = <a cbot|radar>radar</a>(<a cbot|category>Converter</a>); // procure pelo conversor
    	<a cbot|goto>goto</a>(item.position);     // vá para a posição do conversor
    	<a cbot|drop>drop</a>();                  // largue o minério
    	<a cbot|move>move</a>(-2.5);              // vá para trás 2.5 m
    		
    	// 4) Se a célula de energia estiver meio vazia, recarregue-a
    	if ( energyCell.energyLevel < 0.5 )
    	{                               // se, então:
    		item = <a cbot|radar>radar</a>(<a cbot|category>PowerStation</a>); // procure por uma estação
    		<a cbot|goto>goto</a>(item.position);        // vá lá
    		<a cbot|wait>wait</a>(5);                    // e espere
    	}
    }

note: type: Plain text
en: Execute the program <code>KillAnt1</code> immediately on your <a object|botfr>wheeled shooter</a>, it will protect your west flank. Meantime you can elaborate your defense strategy.
pt_PT: Execute o programa <code>MatarFormiga1</ code> imediatamente no seu <a object|botfr>atirador com rodas</a>, ele protegerá seu flanco oeste. Enquanto isso, você pode elaborar sua estratégia de defesa.

note: type: Source code
en: extern void object::KillAnt1()
    {
    	<a cbot|type>object</a> item;             // info. about object
    	
    	<a cbot|goto>goto</a>(-30, 0);            // go west
    	<a cbot|aim>aim</a>(0);                  // aim straight
    	
    	<a cbot|while>while</a> ( true )           // repeat forever:
    	{
    		item = <a cbot|radar>radar</a>(<a cbot|category>AlienAnt</a>, 0, 360, 0, 40);
    		<a cbot|if>if</a> ( item != null )  // ant detected ?
    		{
    			<a cbot|turn>turn</a>(<a cbot|direct>direction</a>(item.position));
    			<a cbot|fire>fire</a>(0.5);       // shoot 0.5 s
    		}
    		<a cbot|wait>wait</a>(1);             // wait 1 second
    	}
    }
pt_PT: extern void object::MatarFormiga1()
    {
    	<a cbot|type>object</a> item;             // informação sobre o objeto
    	
    	<a cbot|goto>goto</a>(-30, 0);            // vá para oeste
    	<a cbot|aim>aim</a>(0);                  // mirar diretamente
    	
    	<a cbot|while>while</a> ( true )           // repita para sempre:
    	{
    		item = <a cbot|radar>radar</a>(<a cbot|category>AlienAnt</a>, 0, 360, 0, 40); // procure por formigas
    		<a cbot|if>if</a> ( item != null )  // item detectado?
    		{
    			<a cbot|turn>turn</a>(<a cbot|direct>direction</a>(item.position)); // gire em direção a posição da formiga
    			<a cbot|fire>fire</a>(0.5);       // atire por 0.5 s
    		}
    		<a cbot|wait>wait</a>(1);             // espere 1 segundo
    	}
    }

note: type: Bullet: 'o'
en: <code><a programs/4_CollectTitanium1>CollectTitanium1</a></code>
pt_PT: <code><a programs/4_CollectTitanium1>ColetarTitanio1</a></code>

note: type: Bullet: 'o'
en: <code><a programs/5_CollectTitanium2>CollectTitanium2</a></code>
pt_PT: <code><a programs/5_CollectTitanium2>ColetarTitanio2</a></code>

note: type: Bullet: 'o'
en: <code><a programs/6_KillAnt1>KillAnt1</a></code>
pt_PT: <code><a programs/6_KillAnt1>MatarFormiga1</a></code>

note: type: Plain text
en: As you will need lots of titanium for this mission, we have made the program <code>CollectTitanium</code> still more efficient. It gathers a whole series of titanium cubes on a free surface, so you can let it work on its own. It also recharges itself at the <a object|station>power station</a> if necessary.
pt_PT: Como você precisará de muito titânio para essa missão, nós tornamos o programa <code>ColetarTitanio</ code> ainda mais eficiente. Ele reúne toda uma série de cubos de titânio em uma superfície livre, para que você possa deixá-lo trabalhar por conta própria. Também se recarrega na <a object|station>estação de energia</a> se necessário.

note: type: Source code
en: extern void object::CollectTitanium3()
    {
    	// 1) Variable definition.
    	<a cbot|type>object</a>  item;            // info. about objects
    	
    	<a cbot|while>while</a> (true)             // repeat forever
    	{
    		
    		// 2) Go to the titanium ore and grab it.
    		item = <a cbot|radar>radar</a>(<a cbot|category>TitaniumOre</a>);// look for titanium
    		<a cbot|goto>goto</a>(item.position);     // go to the position
    		<a cbot|grab>grab</a>();                  // grab the titanium
    		
    		// 3) Go to the converter and drop it.
    		item = <a cbot|radar>radar</a>(<a cbot|category>Converter</a>); // look for converter
    		<a cbot|goto>goto</a>(item.position);     // go to the position
    		<a cbot|drop>drop</a>();                  // drop the titanium
    		<a cbot|move>move</a>(-2.5);              // step back 2.5 m
    		
    		// 4) Wait until titanium converted and grab it
    		<a cbot|do>do</a>
    		{
    			<a cbot|wait>wait</a>(1);              // wait for cube
    			item = <a cbot|radar>radar</a>(<a cbot|category>Titanium</a>, 0, 45, 0, 5);
    		}
    		<a cbot|while>while</a> ( item == null );
    		<a cbot|goto>goto</a>(item.position);
    		<a cbot|grab>grab</a>();                   // grab it
    		
    		// 5) Drop on a free space
    		<a cbot|goto>goto</a>(<a cbot|space>space</a>(position));    // go to free space
    		<a cbot|drop>drop</a>();                   // drop titanium
    		
    		// 6) If power cell half empty, recharges.
    		<a cbot|if>if</a> ( energyCell.energyLevel < 0.5 )
    		{                         // if so:
    			item = <a cbot|radar>radar</a>(<a cbot|category>PowerStation</a>);
    			<a cbot|if>if</a> ( item != null )   // station found ?
    			{
    				<a cbot|goto>goto</a>(item.position); // go there
    				<a cbot|while>while</a> ( energyCell.energyLevel < 1 )
    				{                 // until recharged:
    					<a cbot|wait>wait</a>(1);      // wait
    				}
    			}
    		}
    	}
    }
pt_PT: extern void object::ColetarTitanio3()
    {
    	// 1) Definição de variáveis.
    	<a cbot|type>object</a>  item;            // informação sobre objetos
    	
    	<a cbot|while>while</a> (true)             // repita para sempre
    	{
    		
    		// 2) Vá para o minério de titânio e pegue ele
    		item = <a cbot|radar>radar</a>(<a cbot|category>TitaniumOre</a>);// procure por minério de titânio
    		<a cbot|goto>goto</a>(item.position);     // vá para a posição do item
    		<a cbot|grab>grab</a>();                  // pegue o titânio
    		
    		// 3) Vá para o conversor e largue o minério
    		item = <a cbot|radar>radar</a>(<a cbot|category>Converter</a>); // procure pelo conversor
    		<a cbot|goto>goto</a>(item.position);     // vá para a posição do item
    		<a cbot|drop>drop</a>();                  // deixe o minério
    		<a cbot|move>move</a>(-2.5);              // volte para trás 2.5 m
    		
    		// 4) Espere a conversão do titânio e pegue ele
    		<a cbot|do>do</a>
    		{
    			<a cbot|wait>wait</a>(1);              // esperando pelo cubo de titânio
    			item = <a cbot|radar>radar</a>(<a cbot|category>Titanium</a>, 0, 45, 0, 5);
    		}
    		<a cbot|while>while</a> ( item == null );
    		<a cbot|goto>goto</a>(item.position);
    		<a cbot|grab>grab</a>();                   // pegue ele
    		
    		// 5) Coloque em um espaço livre
    		<a cbot|goto>goto</a>(<a cbot|space>space</a>(position));    // vá para o espaço livre
    		<a cbot|drop>drop</a>();                   // largue o cubo de titânio
    		
    		// 6) se a célula de energia estiver meio vazia, recarregue-a
    		<a cbot|if>if</a> ( energyCell.energyLevel < 0.5 )
    		{                         // if so:
    			item = <a cbot|radar>radar</a>(<a cbot|category>PowerStation</a>);
    			<a cbot|if>if</a> ( item != null )   // estação encontrada?
    			{
    				<a cbot|goto>goto</a>(item.position); // vá para lá
    				<a cbot|while>while</a> ( energyCell.energyLevel < 1 )
    				{                 // until recharged:
    					<a cbot|wait>wait</a>(1);      // espere
    				}
    			}
    		}
    	}
    }

note: type: Plain text
en: We have developed a program that takes care of recharging the power cell of a <a object|tower>defense tower</a>:
pt_PT: Desenvolvemos um programa que cuida de recarregar a célula de energia de uma  <a object|tower>torre de defesa</a>:

note: type: Bullet: '1)'
en: Go to a <a object|tower>defense tower</a>.
pt_PT: Vá para uma <a object|tower>torre de defesa</a>.

note: type: Bullet: '2)'
en: Wait until the <a object|power>power cell</a> is 80% empty.
pt_PT: Espere até que a <a object|power>célula de energia</a> esteja 80% vazia.

note: type: Bullet: '3)'
en: Grab the <a object|power>power cell</a> and recharge it on a <a object|station>power station</a>.
pt_PT: Pegue a <a object|power>célula de energia</a> e recarregue-a em uma <a object|station>estação de energia</a>.

note: type: Bullet: '4)'
en: Put it back on the <a object|tower>defense tower</a>.
pt_PT: Coloque-a de volta na <a object|tower>torre de defesa</a>.

note: type: Plain text
en: Build the <a object|station>power station</a> as close as possible to the tower in order to reduce the time when the tower has got no power cell. A good trick is to place a power cell on the ground in front of the tower. The wasp will attack the power cell, and if the first shoot misses or a wasp arrives when the defense tower has got no energy, only the power cell is destroyed and not the defense tower.
pt_PT: Construa a <a object|station>estação de energia</a> o mais próximo possível da torre, a fim de reduzir o tempo em que a torre não tem célula de energia. Um bom truque é colocar uma célula de energia no chão em frente à torre. A vespa atacará a célula de energia, e se o primeiro tiro falhar ou uma vespa chegar quando a torre de defesa não tiver energia, somente a célula de potência será destruída e não a torre de defesa.

note: type: Source code
en: extern void object::ServiceTower1()
    {
    	<a cbot|object>object</a>  tower;               // info. about tower
    	<a cbot|object>object</a>  station;             // info. about station
    	
    	// 1) go to the defense tower
    	tower = <a cbot|radar>radar</a>(DefenseTower); // look for tower
    	<a cbot|goto>goto</a>(tower.position);        // go there
    	
    	<a cbot|while>while</a> ( true )               // repeat forever
    	{
    		// 2) wait until power cell is empty
    		<a cbot|while>while</a> ( tower.energyCell.energyLevel > 0.2 )
    		{
    			<a cbot|wait>wait</a>(2);
    		}
    		<a cbot|grab>grab</a>();                  // grab the power cell
    		
    		// 3) go to the power station to recharge
    		station = <a cbot|radar>radar</a>(PowerStation);
    		<a cbot|goto>goto</a>(station.position);  // go there
    		<a cbot|while>while</a> ( load.energyLevel < 1 )
    		{
    			<a cbot|wait>wait</a>(1);             // wait until recharged
    		}
    		
    		// 4) go back to defense tower
    		<a cbot|goto>goto</a>(tower.position);    // go to tower
    		<a cbot|drop>drop</a>();                  // drop the power cell
    	}
    }
pt_PT: extern void object::ServicoTorre1()
    {
    	<a cbot|object>object</a>  torre;               // informação sobre a torre
    	<a cbot|object>object</a>  estacao;             // informação sobre a estação
    	
    	// 1) vá para a torre de defesa
    	torre = <a cbot|radar>radar</a>(DefenseTower); // procure pela torre
    	<a cbot|goto>goto</a>(torre.position);        // vá para a posição da torre
    	
    	<a cbot|while>while</a> ( true )               //  repita para sempre
    	{
    		// 2) espere até que a célula de energia esteja vazia
    		<a cbot|while>while</a> ( torre.energyCell.energyLevel > 0.2 )
    		{
    			<a cbot|wait>wait</a>(2);
    		}
    		<a cbot|grab>grab</a>();                  // pegue a célula de energia
    		
    		// 3) vá para a estação para recarregar
    		estacao = <a cbot|radar>radar</a>(PowerStation);
    		<a cbot|goto>goto</a>(estacao.position);  // vá para a posição da estação
    		<a cbot|while>while</a> ( load.energyLevel < 1 ) 
    		{
    			<a cbot|wait>wait</a>(1);             // espere até recarregar
    		}
    		
    		// 4) volte para a torre de defesa
    		<a cbot|goto>goto</a>(torre.position);    // vá para a posição da torre
    		<a cbot|drop>drop</a>();                  // largue a célula de energia
    	}
    }

note: type: Bullet: 'o'
en: <code><a programs/7_CollectTitanium3>CollectTitanium3</a></code>
pt_PT: <code><a programs/7_CollectTitanium3>ColetarTitanio3</a></code>

note: type: Bullet: 'o'
en: <code><a programs/8_ServiceTower1>ServiceTower1</a></code>
pt_PT: <code><a programs/8_ServiceTower1>ServicoTorre1</a></code>

note: type: Plain text
en: According to the data transmitted by the satellite, our engineers have developed two programs. The first one guides the <a object|botshld>shielder bot</a> through the narrow valley north close to the place where the key has been located. You can follow it without fearing any attack:
pt_PT: De acordo com os dados transmitidos pelo satélite, nossos engenheiros desenvolveram dois programas. A primeira guia o <a object|botshld>protetor</a> através do vale estreito ao norte, perto do local onde a chave foi localizada. Você pode segui-lo sem temer nenhum ataque:

note: type: Source code
en: extern void object::Outward()
    {
    	<a cbot|shield>shield</a>(1,15);   // activate the shield
    	<a cbot|goto>goto</a>(6,160);    // go close to the key
    	<a cbot|shield>shield</a>(0,15);   // deactivate the shield
    }
pt_PT: extern void object::Exterior()
    {
    	<a cbot|shield>shield</a>(1,15);   // ative o escudo
    	<a cbot|goto>goto</a>(6,160);    // vá para perto da chave
    	<a cbot|shield>shield</a>(0,15);   // desative o escudo
    }

note: type: Plain text
en: The second program guides the <a object|botshld>shielder bot</a> back to the <a object|base>spaceship</a>:
pt_PT: O segundo programa guia o <a object|botshld>protetor</a> de volta a <a object|base>espaçonave</a>:

note: type: Source code
en: extern void object::Return()
    {
    	<a cbot|shield>shield</a>(1,15);   // activate the shield
    	<a cbot|goto>goto</a>(8,60);     // go to the spaceship
    	<a cbot|shield>shield</a>(0,15);   // deactivate the shield
    }
pt_PT: extern void object::Retorno()
    {
    	<a cbot|shield>shield</a>(1,15);   // ativa o escudo
    	<a cbot|goto>goto</a>(8,60);     // vai para a espaçonave
    	<a cbot|shield>shield</a>(0,15);   // desativa o escudo
    }

note: type: Plain text
en: Below is a program that has been developed by our engineers.
pt_PT: Abaixo está um programa que foi desenvolvido por nossos engenheiros.

note: type: Plain text
en: It instructs the <a object|botshld>shielder</a> to follow and protect the <a object|botphaz>phazer</a>.
pt_PT: Ele instrui o <a object|botshld>protetor</a> a seguir e proteger o <a object|botphaz>phazer</a>.

note: type: Source code
en: extern void object::FollowPhazer()
    {
    	<a cbot|type>object</a>    item;              // info. about phazer
    	<a cbot|type>point</a>     dest;              // position where to go
    	<a cbot|type>float</a>     dist;              // distance to phazer
    	
    	item = <a cbot|radar>radar</a>(<a cbot|category>PhazerShooter</a>);
    	<a cbot|if>if</a> ( item == null )
    	{
    		<a cbot|message>message</a>("No phazer found");
    		<a cbot|return>return</a>;                  // stop the program
    	}
    	<a cbot|shield>shield</a>(1, 25);               // activate the shield
    	
    	<a cbot|while>while</a> ( true )               // repeat forever
    	{
    		item = <a cbot|radar>radar</a>(PhazerShooter);// look for phazer
    		<a cbot|if>if</a> ( item == null )  break;
    		
    		dist = <a cbot|dist>distance</a>(item.position, position);
    		<a cbot|if>if</a> ( dist < 5 )
    		{                        // if closer than 5 m:
    			<a cbot|wait>wait</a>(1);             // wait
    		}
    		<a cbot|if>else</a>                     // otherwise:
    		{ // Calculate a position 5 m before the phazer
    			dest.x = (item.position.x-position.x)*((dist-5)/dist)+position.x;
    			dest.y = (item.position.y-position.y)*((dist-5)/dist)+position.y;
    			dest.z = (item.position.z-position.z)*((dist-5)/dist)+position.z;
    			<a cbot|goto>goto</a>(dest, 0, 1, 1); // and go there
    		}
    	}
    }
pt_PT: extern void object::SeguirPhazer()
    {
    	<a cbot|type>object</a>    item;              // informação sobre o phazer
    	<a cbot|type>point</a>     dest;              // posição para onde ir
    	<a cbot|type>float</a>     dist;              // distância até o phazer
    	
    	item = <a cbot|radar>radar</a>(<a cbot|category>PhazerShooter</a>);
    	<a cbot|if>if</a> ( item == null )
    	{
    		<a cbot|message>message</a>("Nenhum phazer encontrado");
    		<a cbot|return>return</a>;                  // para o programa
    	}
    	<a cbot|shield>shield</a>(1, 25);               // ativa o escudo
    	
    	<a cbot|while>while</a> ( true )               // repita para sempre
    	{
    		item = <a cbot|radar>radar</a>(PhazerShooter); // procure pelo phazer
    		<a cbot|if>if</a> ( item == null )  break;
    		
    		dist = <a cbot|dist>distance</a>(item.position, position);
    		<a cbot|if>if</a> ( dist < 5 )
    		{                        // if closer than 5 m:
    			<a cbot|wait>wait</a>(1);             // espere
    		}
    		<a cbot|if>else</a>                     // caso contrário:
    		{ // Calcula a posição 5 m antes do phazer
    			dest.x = (item.position.x-position.x)*((dist-5)/dist)+position.x;
    			dest.y = (item.position.y-position.y)*((dist-5)/dist)+position.y;
    			dest.z = (item.position.z-position.z)*((dist-5)/dist)+position.z;
    			<a cbot|goto>goto</a>(dest, 0, 1, 1); // e vá para a posição calculada
    		}
    	}
    }
