From b7423cbcde7dc1923a8b5bf4048f23c93582bc0a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9tro?= <yann.roberge@polymtl.ca>
Date: Sun, 18 Oct 2020 19:55:31 -0400
Subject: [PATCH] =?UTF-8?q?Impl=C3=A9mentation=20de=20RSI=5FTurtle:face?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 rsiTurtle.lua | 30 ++++++++++++++++++++++++------
 test.lua      | 20 ++++++++++++++++++++
 2 files changed, 44 insertions(+), 6 deletions(-)

diff --git a/rsiTurtle.lua b/rsiTurtle.lua
index bff82e5..166a867 100644
--- a/rsiTurtle.lua
+++ b/rsiTurtle.lua
@@ -35,11 +35,11 @@ function RSI_Turtle:init()
     
     ---
     -- \brief Orientation de la tortue en cadrant horloge:
+    --          0: Avant
     --          3:  Droite
     --          6:  Arrière
     --          9:  Gauche
-    --          12: Avant
-    turtle.facing_ = 12
+    turtle.facing_ = 0
     
     return turtle
 end
@@ -60,7 +60,7 @@ function RSI_Turtle:print()
     elseif ( self.facing_ == 9 )
     then
         print("Gauche")
-    elseif ( self.facing_ == 12 )
+    elseif ( self.facing_ == 0 )
     then
         print("Avant")
     end
@@ -88,8 +88,24 @@ end
 ---
 -- \brief Tourne la tortue face à la direction voulue.
 -- \param Orientation en heures (3, 6, 9, 12)
+-- \return bool Succès
 function RSI_Turtle:face(orientation)
-    --TODO: Implementer
+    if (orientation ~= 3 and orientation ~= 6 and 
+        orientation ~= 9 and orientation ~= 12)
+    then
+        return false
+    end
+
+    local diff = (orientation - self.facing_) % 12
+    if diff == 9 then
+        self:turnLeft()
+    elseif diff == 3 then
+        self:turnRight()
+    elseif diff == 6 then
+        self:turnLeft()
+        self:turnLeft()
+    end
+    return true
 end
 
 ---
@@ -123,13 +139,15 @@ end
 ---
 -- \brief Tourne 90 degrés dans le sens contraire des aiguilles d'une montre
 function RSI_Turtle:turnLeft()
-    --TODO: Implementer
+    turtle.turnLeft()
+    self.facing_ = (self.facing_ - 3) % 12
 end
 
 ---
 -- \brief Tourne 90 degrés dans le sens des aiguilles d'une montre
 function RSI_Turtle:turnRight()
-    --TODO: Implementer
+    turtle.turnRight()
+    self.facing_ = (self.facing_ + 3) % 12
 end
 
 ---
diff --git a/test.lua b/test.lua
index 4b1d5cf..70909a0 100644
--- a/test.lua
+++ b/test.lua
@@ -27,3 +27,23 @@ print("Test de l'API turtle")
 print(turtle.inspect())
 print(turtle.up())
 
+print("Test RSI_Turtle:facing(3)")
+print(t:face(3))
+t:print()
+print("Test RSI_Turtle:facing(6)")
+print(t:face(6))
+t:print()
+print("Test RSI_Turtle:facing(9)")
+print(t:face(9))
+t:print()
+print("Test RSI_Turtle:facing(12)")
+print(t:face(12))
+t:print()
+
+t:face(6)
+t:print()
+t:face(12)
+t:print()
+t:face(9)
+t:print()
+
-- 
GitLab