From 4c116a149175c2fba2655dcdf0aab22c058bc1be Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9tro?= <yann.roberge@polymtl.ca>
Date: Sun, 18 Oct 2020 17:48:42 -0400
Subject: [PATCH] Ajout du squelette de l'API rsiTurtle

---
 printf.lua    |  11 +++
 rsiTurtle.lua | 183 ++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 194 insertions(+)
 create mode 100644 printf.lua
 create mode 100644 rsiTurtle.lua

diff --git a/printf.lua b/printf.lua
new file mode 100644
index 0000000..29f3f14
--- /dev/null
+++ b/printf.lua
@@ -0,0 +1,11 @@
+-- printf.lua
+-- Created on:  2020-10-16
+-- Author:      Rétro
+--
+-- Rétro Stonks Industries - Tout droits réservés
+--
+-- Juste un émulateur de printf() style C
+
+function printf(s,...)
+   return io.write(string.format(s,...))
+end
\ No newline at end of file
diff --git a/rsiTurtle.lua b/rsiTurtle.lua
new file mode 100644
index 0000000..b397cff
--- /dev/null
+++ b/rsiTurtle.lua
@@ -0,0 +1,183 @@
+-- rsiTurle.lua
+-- Created on:  2020-10-16
+-- Author:      Rétro
+--
+-- Rétro Stonks Industries - Tout droits réservés
+--
+-- API pour tortues RSI
+
+---
+-- \class Tortue RSI
+local RSI_Turtle = {}
+RSI_Turtle.__index = RSI_Turtle
+
+require("printf")
+
+---
+-- \brief Affiche un hello world
+function RSI_Turtle:helloWorld()
+    print("Hello World!")
+end
+
+---
+-- \brief Constructeur de RSI_Turtle
+function RSI_Turtle:init()
+    local turtle = {}
+    setmetatable(turtle,RSI_Turtle)
+    
+    ---
+    -- \brief Dictionnaire pour la position (x,y,z)
+    turtle.pos_ = {}
+    turtle.pos_["x"] = 0
+    turtle.pos_["y"] = 0
+    turtle.pos_["z"] = 0
+    
+    ---
+    -- \brief Orientation de la tortue en cadrant horloge:
+    --          3:  Droite
+    --          6:  Arrière
+    --          9:  Gauche
+    --          12: Avant
+    turtle.facing_ = 12
+    
+    return turtle
+end
+
+---
+-- \brief Affiche la position et l'orientation de la tortue
+function RSI_Turtle:print()
+    printf("Position:\n X=%d\n Y=%d\n Z=%d\n", self.pos_["x"],
+                    self.pos_["y"], self.pos_["z"])
+    printf("Orientation: ")
+
+    if( self.facing_ == 3 )
+    then
+        print("Droite")
+    elseif ( self.facing_ == 6 )
+    then
+        print("Arriere")
+    elseif ( self.facing_ == 9 )
+    then
+        print("Gauche")
+    elseif ( self.facing_ == 12 )
+    then
+        print("Avant")
+    end
+end
+
+---
+-- \brief Déplacement s'assurant de rester au niveau du sol
+-- escalade et descend automatiquement les pentes
+function RSI_Turtle:moveGround(dx, dy)
+    --TODO: Implementer
+end
+
+---
+-- \brief Déplacement parallèle au sol
+function RSI_Turtle:move(dx, dy)
+    --TODO: Implementer
+end
+
+---
+-- \brief Déplacement dans les trois dimensions
+function RSI_Turtle:move(dx, dy, dz)
+    --TODO: Implementer
+end
+
+---
+-- \brief Tourne la tortue face à la direction voulue.
+-- \param Orientation en heures (3, 6, 9, 12)
+function RSI_Turtle:face(orientation)
+    --TODO: Implementer
+end
+
+---
+-- \brief Déplacement avant
+-- \return bool Succès
+function RSI_Turtle:forward()
+    --TODO: Implementer
+end
+
+---
+-- \brief Déplacement arrière
+-- \return bool Succès
+function RSI_Turtle:backward()
+    --TODO: Implementer
+end
+
+---
+-- \brief Déplacement haut
+-- \return bool Succès
+function RSI_Turtle:up()
+    --TODO: Implementer
+end
+
+---
+-- \brief Déplacement bas
+-- \return bool Succès
+function RSI_Turtle:down()
+    --TODO: Implementer
+end
+
+---
+-- \brief Tourne 90 degrés dans le sens contraire des aiguilles d'une montre
+function RSI_Turtle:turnLeft()
+    --TODO: Implementer
+end
+
+---
+-- \brief Tourne 90 degrés dans le sens des aiguilles d'une montre
+function RSI_Turtle:turnRight()
+    --TODO: Implementer
+end
+
+---
+-- \brief Déplacement à gauche
+-- \return bool Succès
+function RSI_Turtle:left()
+    --TODO: Implementer
+end
+
+---
+-- \brief Déplacement à droite
+-- \return bool Succès
+function RSI_Turtle:right()
+    --TODO: Implementer
+end
+
+---
+-- \brief Descendre jusqu'à rencontrer le sol
+-- \return bool Succès
+function RSI_Turtle:ground()
+    --TODO: Implementer
+end
+
+---
+-- \brief Quadriller une zone carrée. La tortue traverse chaque case, ligne par 
+--          ligne. N'affecte pas l'altitude.
+-- \param pointeur_de_fonction action Pointeur de l'action à réaliser juste
+--          après être arrivé sur chaque nouveau bloc.
+-- \return bool Succès
+function RSI_Turtle:goThroughArea(action)
+    --TODO: Implementer
+end
+
+---
+-- \brief Quadriller une zone carrée. La tortue traverse chaque case, ligne par 
+--          ligne. Reste au niveau du sol.
+-- \param pointeur_de_fonction action Pointeur de l'action à réaliser juste
+--          après être arrivé sur chaque nouveau bloc.
+-- \return bool Succès
+function RSI_Turtle:goThroughAreaGround(action)
+    --TODO: Implementer
+end
+
+---
+-- \brief Vérifier l'ID du bloc en face
+-- \param Nom du bloc à vérifier
+-- \return bool Bloc en face identique à l'argument
+function RSI_Turtle:facesBlock(block_id)
+    --TODO: Implementer
+end
+
+return RSI_Turtle
-- 
GitLab