Cours RechercherCtrl K

Fiches de révision

Fiches Lua

6 fiches, une par leçon, dans l'ordre du cours. Retour au cours Lua

Lua · Leçon 1

Premiers pas en Lua

À retenir

  • Lua est un langage léger utilisé pour scripter des jeux (Roblox, WoW, Garry's Mod, FiveM).
  • Toujours local devant une nouvelle variable, sinon elle est globale.
  • Types : texte, nombre (avec un point), true/false, nil (rien).
  • Concaténation avec .. ; commentaires avec --.
  • % donne le reste d'une division, // la division entière.

Mémo

local prenom = "Léa"
local age = 18
local argent = nil

print("Bonjour " .. prenom)
print(10 % 3)    -- 1
print(10 // 3)   -- 3
-- un commentaire

Pièges à éviter

  • Oublier local.
  • Utiliser + pour coller des textes : en Lua, c'est ...

Revoir la leçon et ses exercices

Lua · Leçon 2

Conditions et boucles

À retenir

  • Un bloc commence par then ou do et se termine par end.
  • if … then … elseif … then … else … end.
  • Différent s'écrit ~= ; on combine avec and, or, not.
  • Seuls false et nil sont faux ; 0 et "" sont vrais.
  • for i = début, fin, pas do ; while condition do. Pas de += ni ++.

Mémo

if vie <= 0 then
    print("Game over")
elseif vie < 50 then
    print("Blessé")
else
    print("OK")
end

for i = 1, 10 do print(i) end
for i = 10, 0, -2 do print(i) end

while n > 0 do
    n = n - 1
end

Pièges à éviter

  • Écrire != au lieu de ~=.
  • Écrire else if en deux mots : il faut alors un end de plus.
  • Oublier le end de fin de bloc.

Revoir la leçon et ses exercices

Lua · Leçon 3

Les tables

À retenir

  • Une table sert de liste ({ "a", "b" }) ou de fiche avec des clés ({ pseudo = "Skap" }).
  • Les listes commencent à l'indice 1 ; #liste donne la longueur ; table.insert ajoute.
  • On lit une clé avec t.cle ou t["cle"] ; une clé absente vaut nil.
  • ipairs parcourt une liste dans l'ordre ; pairs parcourt toutes les clés (ordre non garanti).

Mémo

local armes = { "pistolet", "fusil" }
print(armes[1], #armes)
table.insert(armes, "couteau")

local joueur = { pseudo = "Skap", argent = 2500 }
joueur.metier = "pompier"

for i, a in ipairs(armes) do print(i, a) end
for k, v in pairs(joueur) do print(k, tostring(v)) end

Pièges à éviter

  • Lire armes[0] : en Lua, c'est nil.
  • Compter sur l'ordre de pairs.

Revoir la leçon et ses exercices

Lua · Leçon 4

Les fonctions

À retenir

  • local function nom(params) … end ; return renvoie le résultat.
  • Un paramètre non fourni vaut nil.
  • Une fonction peut renvoyer plusieurs valeurs : local a, b = f().
  • Une fonction est une valeur : on peut la passer en paramètre (fonction anonyme).
  • Un module renvoie une table de fonctions ; on le charge avec require("nom").

Mémo

local function soigner(vie, soin)
    return math.min(100, vie + soin)
end

local petit, grand = minMax(8, 3)

repeter(3, function(n) print(n) end)

-- outils.lua
local outils = {}
function outils.doubler(n) return n * 2 end
return outils

-- main.lua
local outils = require("outils")

Pièges à éviter

  • Oublier return outils à la fin d'un module.
  • Écrire require("outils.lua") : sans l'extension.

Revoir la leçon et ses exercices

Lua · Leçon 5

Lua dans les jeux : les événements

À retenir

  • Un script de jeu réagit à des événements en enregistrant des fonctions de rappel.
  • Plusieurs fonctions peuvent écouter le même événement ; elles sont appelées dans l'ordre.
  • ... transmet tous les arguments reçus ; _ nomme une variable inutilisée.
  • Pièges : boucle infinie sans attente, faire confiance au client, oublier local.

Mémo

surEvenement("joueurConnecte", function(pseudo)
    print("Bienvenue " .. pseudo)
end)

declencher("joueurConnecte", "Skap")

Pièges à éviter

  • Vérifier l'argent seulement côté client : un tricheur peut le modifier.
  • Déclencher l'événement avant d'avoir enregistré la fonction : rien ne se passe.

Revoir la leçon et ses exercices

Lua · Défi final

L'inventaire du joueur

À retenir

  • Un inventaire est une table dont les clés sont les objets et les valeurs les quantités.
  • (t[cle] or 0) donne 0 quand la clé n'existe pas encore.
  • pairs parcourt toutes les clés d'une table.

Mémo

local inventaire = {}
local function ajouter(objet, n)
    inventaire[objet] = (inventaire[objet] or 0) + n
end
for objet, n in pairs(inventaire) do print(objet .. " x" .. n) end

Revoir la leçon et ses exercices