Squirrel
Framework NonIA

Page principale NonIA

Développement

Jalons de développement
Suggestion de changements de l'API

Programmation de l'IA

Documentation API
Introduction
Fichier info.nut
Fichier main.nut
Principes de base
Détermination de chemin routier
Détermination de chemin ferroviaire
Sauver / Charger des données
Choses à savoir
Squirrel
Page principale
Erreurs courantes
Listes
Traiter les erreurs OTTD
Tramways
Bibliothèques de l'IA
Forum
FAQ du forum
Comportement de l'IA

IAs

TestAI
WrightAI
Convoy
Voir le forum
Voir BaNaNaS
Tous les articles de la catégorie NonIA

Page temporaire.

Quelques exemplesde la syntaxe Squirrel se trouvent sur Site web du langage Squirrel.

Pour voir la documentation du cœur de Squirrel, téléchargez ou consultez la documentation (en anglais), bien que les bibliothèques standards ne soient pas autorisées.

Contents

Fonctions Squirrel converties

Certaines des fonctions de base de Squirrel sont incluses depuis le framework Squirrel mais peuvent différer. Tout ce qui n'est pas explicitement mentionné ici ou dans la documentation de l'IA peut ne pas fonctionner. Ce sont:

print()

Éviter son utilisation. Utilisez plutôt AILog::Info() ou AILog::Warning() pour envoyer des messages. Ils sont capturés de la bonne façon et affichés dans la fenêtre de débogage de l'IA (tout comme l'ensemble des sorties de débogages habituelles).

abs()

abs() renvoie la valeur absolue d'une valeur entière/flottante. Par exemple:

print("abs(-5) vaut: " + abs(-5));

affichera:

abs(-5) vaut: 5

require()

Inclut une portion de code depuis un autre fichier. Le chemin est relatif, et chargera le code depuis ce fichier immédiatement. Chaque fichier doit être compilable de façon autonome; gardez bien cela à l'esprit.

require("test.nut");

_cmp()

_cmp est une méta-méthode qui permet des opérations de comparaison (<, >, <=, >=) sur une instance de classe à surcharger. La méthode prend un unique argument du type de la classe de son parent, et doit renvoyer un entier décrivant si l'argument est plus petit, plus grand ou égal à son instance.

class Node {
  cost = 0;

  constructor(cost) {
    this.cost = cost;
  }
}

function Node::_cmp(node) {
  if(this.cost < node.cost) return -1;
  if(this.cost > node.cost) return 1;
  return 0;
}

local a = Node(7);
local b = Node(3);
local cheapest = (a < b) ? a : b;

AILog.Info(cheapest.cost) // Écrira "3"

Bien que ce soit non intuitif, _cmp n'est PAS utilisé pour l'opérateur d'égalité (==). Il peut cependant être utilisé pour tester l'égalité, via le contournement suivant...

local equal = nodeA <= nodeB && nodeA >= nodeB;

Outils de développement

Squirrel est un langage de script, donc vous n'avez pas besoin de compiler une IA. Cependant, il existe certains outils qui vous aideront dans le développement, y compris avec des fonctions comme la coloration syntaxique et la vérification d'erreurs.

Eclipse et SQDEV

Eclipse est un IDE bien connu basé sur Java. SQDEV est un module d'Eclipse pour faciliter le développement en Squirrel. Pour pouvoir utiliser SQDEV, vous aurez besoin de Java 5 et de Eclipse 3.2 ou supérieur. Bien qu'Eclipse indique n'avoir besoin que d'un JRE (Environnement d'exécution Java), il vaut mieux installer un JDK (Kit de développement Java) pour éviter certaines erreurs de bibliothèques. Pour installer SQDEV, suivez ces étapes.

  1. Dans Eclipse, choisissez Aide > Mise à jour logicielle > Chercher et Installer...
  2. Sélectionnez "Rechercher de nouvelles fonctionnalités à installer"
  3. Choisissez "Nouveau site distant" et entrez ce qui suit: Nom: Site de mise à jour SQDev, URL: http://sqdev.sf.net/update/
  4. Assurez-vous que le nouveau site de mise à jour est marqué (Note: Vous aurez peut-être besoin de décocher "Ignorer les fonctionnalités non applicables à cet environnement" pour le faire fonctionner)
  5. Cliquer sur "Terminer" et suivez les invites.
  6. Une fois terminé, redémarrez l'environnement de travail, comme demandé.

Pour activer la perspective Squirrel, ouvrez le menu principal d'Eclipse Fenêtre > Ouvrir perspective > Autres et choisissez Squirrel.

Ces informations proviennent du wiki Squirrel ici.