Guest User

Untitled

a guest
Jun 24th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.80 KB | None | 0 0
  1. #! /usr/bin/python -*- coding: utf-8 -*-
  2.  
  3. #
  4. # ENSICAEN
  5. # École Nationale Supérieure d'Ingénieurs de Caen
  6. # 6 Boulevard Maréchal Juin
  7. # F-14050 Caen Cedex France
  8. #
  9.  
  10. #
  11. # @author Régis Clouard - Sat Aug 27 2011
  12. # based on Mathias Broxvall's classes
  13. #
  14.  
  15. # @file tortoise.py
  16.  
  17. # Definition of the tortoise agent.
  18.  
  19. import random
  20. from tortoiseworld import TortoiseFrame
  21.  
  22. class TortoiseBrain:
  23.     """ The base class for tortoise brains...
  24.    """
  25.     def think(self, freeAhead, lettuceAhead, lettuceHere, waterAhead, waterHere, drinkLevel, dogFront, dogRight):
  26.         raise Exception, "Invalid Brain class, think() not implemented"
  27.  
  28. class RandomBrain(TortoiseBrain):
  29.     """
  30.    An example of simple tortoise brain: act randomly...
  31.    """
  32.     def think(self, freeAhead, lettuceAhead, lettuceHere, waterAhead, waterHere, drinkLevel, dogFront, dogRight):
  33.         return random.choice(['eat','drink','left','right','forward','forward','wait'])
  34.    
  35. ######################################################################
  36. ##########Notre classe de deplacemente basee sur les reflex###########
  37. ######################################################################
  38. ##Performance Measures:
  39. ######->Eviter le chien
  40. ######->Manger toutes les laitues
  41. ######->Maintenir le niveau d'eau superieur a 1
  42. ##Environment:
  43. ######->Murs
  44. ######->Pierres
  45. ######->Eau
  46. ######->Laitue
  47. ######->Chien
  48. ##Actuators:
  49. ######->Rotation Droite 90°
  50. ######->Rotation Gauche 90°
  51. ######->Avancer d'une case
  52. ######->Manger la laitue
  53. ######->Boire l'eau
  54. ######->Faire une pause
  55. ######->Arreter
  56. ##Sensors:
  57. ######->Rien devant
  58. ######->Laitue devant
  59. ######->Sur une laitue
  60. ######->Eau devant
  61. ######->Sur de l'eau
  62. ######->Niveau d'eau
  63. ######->Distance chien en X
  64. ######->Distance chien en Y
  65. ######################################################################    
  66. class ReflexBrain(TortoiseBrain):
  67.     #def think(self, freeAhead, lettuceAhead, lettuceHere, waterAhead, waterHere, drinkLevel, dogFront, dogRight):
  68.      #   return random.choice(['eat','drink','left','right','forward','forward','wait'])
  69.     def think(self, freeAhead, lettuceAhead, lettuceHere, waterAhead, waterHere, drinkLevel, dogFront, dogRight):
  70.         if(lettuceHere):
  71.             return 'eat'
  72.         if(lettuceAhead):
  73.             return 'forward'
  74.         if(waterHere and drinkLevel<100):
  75.             return 'drink'
  76.         if(waterAhead and drinkLevel<40):
  77.             return 'forward'
  78.         if(abs(dogRight)<=3):
  79.             if(freeAhead):
  80.                 return 'forward'
  81.             else:
  82.                 return random.choice(['right','right','right','left'])
  83.         if(abs(dogFront)<=3):
  84.                 return random.choice(['right','right','right','left'])  
  85.         if(freeAhead):
  86.             return 'forward'
  87.         else:
  88.             return random.choice(['right','left'])
  89. ######################################################################
  90. ######################################################################
  91. ######################################################################
  92.    
  93. ######################################################################
  94. ##########Notre classe de deplacemente basee sur les goal###########
  95. ######################################################################
  96. class GoalBrain(TortoiseBrain):
  97.     #def think(self, freeAhead, lettuceAhead, lettuceHere, waterAhead, waterHere, drinkLevel, dogFront, dogRight):
  98.      #   return random.choice(['eat','drink','left','right','forward','forward','wait']
  99.     global X
  100.     global Y
  101.    
  102.     def ___init___(self, sizEUH):
  103.         tortoiseMap=[['inexplore' for i in range(sizEUH)]for j in range(sizEUH)]
  104.         print tortoiseMap
  105.     #def seekfirstGoal():
  106.              
  107.        
  108.     def addinmatrice(self,freeAhead, lettuceAhead, lettuceHere, waterAhead, waterHere, drinkLevel, dogFront, dogRight):
  109.         if(lettuceAhead):
  110.             tortoiseMap[X][Y]='lettuceAhead'
  111.         if(waterAhead):
  112.             tortoiseMap[X][Y]='waterAhead'
  113.         if(freeAhead):
  114.             tortoiseMap[X][Y]='freeAhead'
  115.         if(not freeAhead):
  116.             self.tortoiseMap[X][Y]='notFreeAhead'
  117.            
  118.     def think(self, freeAhead, lettuceAhead, lettuceHere, waterAhead, waterHere, drinkLevel, dogFront, dogRight):
  119.  
  120.         self.addinmatrice(freeAhead, lettuceAhead, lettuceHere, waterAhead, waterHere, drinkLevel, dogFront, dogRight)
  121.  
  122.         if(lettuceHere):
  123.             return 'eat'
  124.         if(lettuceAhead):
  125.             return 'forward'
  126.         if(waterHere and drinkLevel<100):
  127.             return 'drink'
  128.         if(waterAhead and drinkLevel<40):
  129.             return 'forward'
  130.         if(abs(dogRight)<=3):
  131.             if(freeAhead):
  132.                 return 'forward'
  133.             else:
  134.                 return random.choice(['right','right','right','left'])
  135.         if(abs(dogFront)<=3):
  136.                 return random.choice(['right','right','right','left'])  
  137.         if(freeAhead):
  138.             return 'forward'
  139.         else:
  140.             return random.choice(['right','left'])
  141.  
  142.     ##########################################
  143.     #########Fonction d'affichage#############
  144.     ###################1#######################
  145.     def affichage(self,size):
  146.         for indexx,i in enumerate(size):
  147.             for indexy,j in enumerate(size):
  148.                 print tortoiseMap[indexx][indexy]
  149.  
  150. ######################################################################
  151. ######################################################################
  152. ######################################################################
  153. if __name__ == "__main__":
  154.     # Tests.
  155.     size=15  # grid 15x15
  156.     speed=40 #40 simulated seconds each real second
  157.  
  158.     tb = GoalBrain(size)
  159.     tf = TortoiseFrame(size,speed,tb)
  160.     tf.mainloop()
  161.     #tb.affichage(size)
  162.     print("Score:", tf.tw.score)
Add Comment
Please, Sign In to add comment