diff --git a/printf.lua b/printf.lua new file mode 100644 index 0000000000000000000000000000000000000000..29f3f14ee4d33f4c05d5cf5fd786722f5ff5eb1a --- /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 0000000000000000000000000000000000000000..b397cffd6434947bd4281ddf66c9db533b671605 --- /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