On remarque donc qu'il y a trois élément, le corps du robot, son canon et son radar, chaque élément peut tourner sur lui-même de 360° et est indépendant des autres parties.
Voilà, nous avons maintenant tout les clés en main pour réussir notre premier robot.
Mais vous allez trouver le moyen de me dire que savoir comment un robot c'est sympa mais etre en mesure de le programmer c'est le top et bien je vous devance car voici les écritures saintes qui permettront de dompter des peuples entiers de robot:
Nul besoin de les apprendre par coeur même si elles sont tellement simple et logique...car oui le programmeur est une personne que l'on peut qualifier de feignasse donc aime se simplifier un maximun la vie, pourquoi nommer une chose d'une façon compliqué pour effectuer quelque chose de simple...
Attention...voici les formules sacrées!
Je doute qu'il soit utile d'expliquer cela mais je prend le risque....permet de faire tourner le robot sur lui(même du X degrée, chose indiqué dans la parenthese donc exemple:
Permet au robot de tourner à 90°, peut-on faire plus simple je vous le demande?!?
Et bien on continu sur notre lancé, je sens que certains ont déjà decroché dans le fond...dommage pour eux, ils ne pourront pas profiter du concours se voulant simple et possible pour toutes personnes doté d'un cerveau.
Permet donc de faire avancer ou reculer le robot de X pixel, valeur comprise dans la parenthese comme toujours, je ne donne plus d'exemple maintenant

.
Savoir que si par exemple le robot rencontre un mur lors de son déplacement, il s'arrete et repart dans l'autre direction sauf indication contraire que l'on apprendra à faire plus tard.
Code:
turnGunRight(double degree) |
Code:
turnGunLeft(double degree) |
Nul besoin de préciser que cela permet de faire tourner le canon vers la gauche ou la droite de X degrée?
Code:
turnRadarRight(double degree) |
Code:
turnRadarLeft(double degree) |
Et là, j'vous laisse deviner car j'suis vicieux...j'aime les questions difficile

.
Certains pourront se poser la question "mais pourquoi avoir des écritures saintes pour faire bouger le canon et radar séparement".
Et bien j'vous laisse reflechir également tout en vous indiquant que de base, ces deux élements reste alignés avec la direction du robot, les stratèges auront donc déjà compris l'utilité.
Passons aux écritures saintes de niveau inférieur, moins utilisées mais pas moins utile:
Code:
setAdjustGunForRobotTurn(boolean flag) |
Boolean flag est une valeur pouvant etre égal à "true" ou "false".
Sachant que si celle-ci est égal à true, le canon reste dans sa direction première lors d'un changement de direction du véhicule.
Les suivantes marches sur le même principe:
Code:
setAdjustRadarForRobotTurn(boolean flag) |
Code:
setAdjustRadarForGunTurn(boolean flag) |
Cette derniere est direction activé si AdjustRadarForRobotTurn(true)a été declaré auparavant.
On commence à avoir fait le tour des bases, voici tout de même quelques astuces pour nos fan stratèges:
Donne les coordonnées du robot sur le terrain de jeu, peut toujours servir

.
Code:
getHeading(), getGunHeading(), and getRadarHeading() |
Permet d'obtenir "l'inclinaison" des différents élément en degrée.
Code:
getBattleFieldWidth() and getBattleFieldHeight() |
Sachant que le terrain de combat est de taille variable, il est parfois utile d'etre en mesure de le connaitre pour le prendre en compte dans son code, un code doit etre dynamique à tout terrain.
Bon, maintenant on sait comment faire bouger notre petit robot, on sait pas trop comment le faire exactement mais on connait les écritures saintes et c'est un bon début mais comment on va tirer? car c'est bien jolie de faire danser le robot mais faut-il encore etre en mesure de tirer sur son copain en face.
Encore une fois, on ne va pas se casser la tête et prendre la simple commande:
Suffit pour faire tirer le canon dans son alignement au moment donné, faire plus simple...impossible.
Voilà, le reste va venir durant la création du premier robot, pour cela, on va essayer de comprendre la structure du code d'un robot basique, en voici un exemple:
Code:
package test;
import robocode.*;
/**
* Robot de test
*/
public class Test extends Robot
{
... // <<Zone 1>>
public void run() {
... // <<Zone 2>>
while(true) {
... // <<Zone 3>>
}
}
... // <<Zone 4>>
public void onScannedRobot(ScannedRobotEvent e) {
fire(1);
}
} |
Ce robot porte le nom de Test et fait parti de la collection test, on remarque que un robot doit avoir une majuscule en début de nom et une collection une minuscule, aucune obligation qu'il porte le même nom.
La première zone nous sera peu utile dans un premier temps, car elle est là pour permettre d'implanter des fonctions plus poussé dont nous allons nous passer durant pas mal de temps encore.
La seconde zone permet d'enregistrer des variables ou actions qui ne seront prisent en compte qu'une seule fois lors de l'activation du robot en debut de round, à vous de voir ce qu'il serait utile d'y mettre.
Vient ensuite le coeur de notre petit robot, la zone 3.
Cette commande
Est en gros une boucle que le robot va lire en continu et effectuer les actions demandées à l'intérieur, c'est donc ici que une bonne partie de notre code va ce trouver.
La zone 4 correspond à l'action à effectuer lors de la detection d'un robot ennemi, j'vous laisse remarquer que dans l'exemple on...tire dessus
Les connaisseurs ou les personnes ayant un minimun de logique auront compris que la partie ce trouvant entre:
Est le morceau permettant de donner vie au robot en lui-même tandis
que la zone 4 et les autres qui pourront lui ressembler sont prise en compte seulement lors de certains evenements pré-programmé.
il en existe bien sur une liste trouvable sur la doc API mais les principaux seront expliqué dans la suite du tutorial