Guest User

Untitled

a guest
Jun 20th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 KB | None | 0 0
  1. """
  2. Finite State Machine
  3. ====================
  4.  
  5. API:
  6. on_enter_<state>()
  7. on_exit_<state>()
  8.  
  9. Machine.is_<state>()
  10. Machine.to_<state>()
  11. """
  12.  
  13. from transitions import Machine
  14.  
  15.  
  16. class Material(Machine):
  17.  
  18. states = ['solid', 'liquid', 'gas', 'plasma']
  19.  
  20. transitions = [
  21. ['melt', 'solid', 'liquid'],
  22. ['evaporate', 'liquid', 'gas'],
  23. ['sublimate', 'solid', 'gas'],
  24. ['ionize', 'gas', 'plasma']
  25. ]
  26.  
  27. def __init__(self):
  28. Machine.__init__(
  29. self,
  30. states=Material.states,
  31. transitions=Material.transitions,
  32. initial='liquid'
  33. )
  34.  
  35. def on_enter_gas(self):
  36. print('entering gas state')
  37.  
  38. def on_exit_gas(self):
  39. print('exiting gas state')
  40.  
  41.  
  42. if __name__ == '__main__':
  43. lump = Material()
  44. print('current state:', lump.state)
  45. lump.evaporate()
  46. print('current state:', lump.state)
  47. lump.ionize()
  48. print('current state:', lump.state)
  49.  
  50. print('change state back to solid')
  51. lump.to_solid()
  52. print('is it in solid state?:', lump.is_solid())
Add Comment
Please, Sign In to add comment