Memento LUA & Love2D

 0
 0
Tps de lecture estimé:5 minutes 8 secondes

Voici une liste des différents codes source et syntaxes courantes utilisées dans le language LUA.
La majorité sont extraites du Module LUA du site gamecodeur

Rappels LUA : Syntaxes de base


chaînes

print("Blessure de : "..player.name)
print("Vie : "..tostring(player.vie))

comparaisons

== Est égal
~= N'est pas égal (est différent)

boucle décroissante

for compteur=10,0,­1 do
  print(compteur)
end

Itérateurs de Tables

  • Itération pour une table dont les index sont alphabétiques ou numériques ou les deux. L'affichage se fera dans un ordre indéfini.
    local table = {3, banane = "jaune", 10, pi = 3.14159, 17, fruit = "banane"}
    for key, valeur in pairs(table) do
    print(key, valeur)
    end
  • Itération pour une table dont les index sont uniquement numériques. L'affichage se fera dans un ordre croissant.
    local table = {3, banane = "jaune", 10, pi = 3.14159, 17, fruit = "banane"}
    for key, valeur in ipairs(table) do
    print(key, valeur)
    end

Love2D


Écran & Images

L'affichage

  • Connaître la résolution de l'écran

    TODO
  • Changer la taille de la fenêtre

    love.window.setMode(1024, 768)
  • doubler la taille de l'affichage

    function love.draw ()
    ...
    love.graphics.scale(2,2)
    ...
  • Passage en plein écran ou mode fenêtré
    --TODO

Les Images

  • Afficher une image
    A mettre dans la fonction draw()

    love.graphics.draw(variableImage, positionX, positionY, rotationRadian, echelleX, echelleY, origineOffsetX, origineOffsetY)
  • Effets sur les images

    • Effectuer un effet miroir horizontal :

      --TODO
    • Changer la teinte d'une image

      --TODO
    • Ajouter de la transparence (Alpha) à une image
      --TODO
  • Obtenir la ​largeur​ d'une image

    largeurImage = image:getWidth()
  • Obtenir la ​hauteur​ d'une image

    hauteurImage = image:getHeight()
  • Obtenir les dimensions d'une image
    liveImgWidth,liveImgHeight = liveImg:getDimensions()

Les sprites

  • Gérer des listes de sprites
    --TODO

Les Polices de caractères

  • calculer la taille d'un texte dans une police donnée
    pMessage = "PAUSE MENU"
    local w=love.font.getWidth(pMessage)
    local h=love.font.getHeight(pMessage)

Les Textes

  • Afficher un texte dans une police donnée
    fontNormal = love.graphics.newFont("fonts/normal.ttf", 10)
    love.graphics.setFont(self.fontContent)
    love.graphics.print(debugInfos, 0, 0) -- 0,0 indique la position du texte à l'écran

Le GamePlay

Le Delta time

TODO

Gestion des entrées utilisateur

Le clavier

  • intercepter une touche du clavier
    function love.update(dt)
    ...
    if love.keyboard.isDown ("right") then
      -- note: "right" is a string contant defined in https://love2d.org/wiki/KeyConstant
      objet.angle = objet.angle + parametres.rotation * 90 * dt
    end
    ...
    end

La souris

  • Afficher le curseur de la souris

    --TODO
  • Connaître l'état des boutons de la souris

    --TODO
  • Connaître la position de la souris
    local x = love.mouse.getX()
    local y = love.mouse.getY()
    love.graphics.rectangle(x, y, 10,10)

Physique

Gravité & Inertie

  • déplacement selon un objet ayant un angle de rotation (en degré)
    function love.update(dt)
    ...
    angleRad = math.rad(object.angle)
    speedX = math.cos (angleRad) * object.speed * dt
    speedY = math.sin (angleRad) * object.speed * dt
    ...
    end

L'audio

Son & Musique

  • charger et jouer un son ou une musique
    -- le son se charge au fur et à mesure pour économiser la mémoire (utile pour les musiques)
    -- local jump = love.audio.newSource ("sons/jump.wav","stream")
    -- le son se charge immédiatement (utile pour les sons ponctuels)
    local jump = love.audio.newSource ("sons/jump.wav","static")
    local ambiant = love.audio.newSource ("sons/ambiant.mp3","stream")
    -- active le mode loop sur la musique
    ambiant:setLooping(true)
    function love.keypressed (key)
    if (key == "escape") then love.event.push('quit') end
    if (key == "up") then jump:play() end
    if (key == "s") then ambiant:stop() end
    if (key == "p") then ambiant:play() end
    if (key == "r") then
      if (ambiant:isPlaying()) then
        ambiant:pause()
      else
        ambiant:resume()
      end
    end
    end

Système

Fichiers

  • lire un fichier texte (avec Love2D)
    NOTE : les fonctions de lecture/écriture (I/O) provenant de LUA ne fonctionnent pas depuis un jeu fusionné en love2D.
    map = {}
    local filename = "levels/level1.txt"
    for line in love.filesystem.lines(filename) do
      map[#map + 1] = line
    end

Divers

Gestion de l'application

  • Quitter l'application

    love.event.push('quit')
  • Exemple d'initialisation d'une application
    function love.load()
    ...
    -- changer le titre de l'application
    love.window.setTitle(APP_TITLE)
    -- changer l'icône de l'application
    local imgIcon = love.graphics.newImage('image/icon.png')
    love.window.setIcon(imgIcon:getData())
    -- changer la taille de la fenêtre
    love.window.setMode(800, 600)
    ...
    end

Publication

Sous Windows
    1. En supportant que le répertoire contenant la totalité de votre jeu soit Game/, vous pouvez créer le fichier .love directement en utilisant la commande
      zip -9 -q -r Game.love
      vous pouvez aussi créer un fichier Game.zip avec un utilitaire de compression (par exemple 7zip) puis le renommer le fichier en Game.love

    2. Une fois votre jeu compressé dans un .love, vous pouvez créer un exécutable qui lancera directement votre jeu.
      Pour ce faire il faut ajouter le fichier .love à la fin du fichier love.exe qui vient avec l'archive .zip officielle de LÖVE. Le fichier en résultant est votre exécutable de jeu.
      Une fois que vous avez votre exécutable, vous pouvez compresser avec les autres fichiers DLL de LÖVE dans un .zip et le partager avec le monde.
      copy /b love.exe+Game.love Game.exe
      Vous pouvez aussi créer un fichier .bat (par ex. creer_exe_jeu.bat) avec le contenu suivant
      copy /b love.exe+%1 "%~n1.exe"
      puis déplacer Game.love sur le fichier .bat, il créera tout seul Game.exe, que vous pourrez utiliser pour la distribution.
      Cette méthode crée un jeu fusionné.

    3. Une fois le fichier Game.exe créé, il faut suffit d'utiliser un générateur de fichier d'installation pour créer un seul et unique fichier .exe permettant d'installer le jeu. Je vous conseille l'utilistaire InnoSetup, gratuit et très simple d'emploi. N'oublier pas d'y ajouter tous les fichiers nécessaires à l'exécution de Love2D.

    Pour rappel, la liste des fichiers à distribuer pour qu'une application Love2D fonctionne est la suivante :

    SDL2.dll
    OpenAL32.dll
    license.txt
    DevIL.dll
    love.dll
    lua51.dll
    mpg123.dll
    msvcp110.dll
    msvcr110.dll

    N'oubliez pas d'y ajouter le fichier .exe crée à l'étape 2 (Game.exe)

Sous Android

TODO

Sous IOS

TODO

Sous MacOS

TODO

Sous Linux

TODO

Article précédent Article suivant