⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mousetraptest.py

📁 this is the most basic to learn python
💻 PY
字号:
#: c04:mousetrap1:MouseTrapTest.py
# State Machine pattern using 'if' statements
# to determine the next state.
import string, sys
sys.path += ['../statemachine', '../mouse']
from State import State
from StateMachine import StateMachine
from MouseAction import MouseAction
# A different subclass for each state:

class Waiting(State):
  def run(self): 
    print "Waiting: Broadcasting cheese smell"

  def next(self, input):
    if input == MouseAction.appears:
      return MouseTrap.luring
    return MouseTrap.waiting

class Luring(State):
  def run(self):
    print "Luring: Presenting Cheese, door open"

  def next(self, input):
    if input == MouseAction.runsAway:
      return MouseTrap.waiting
    if input == MouseAction.enters:
      return MouseTrap.trapping
    return MouseTrap.luring

class Trapping(State):
  def run(self):
    print "Trapping: Closing door"

  def next(self, input):
    if input == MouseAction.escapes:
      return MouseTrap.waiting
    if input == MouseAction.trapped:
      return MouseTrap.holding
    return MouseTrap.trapping

class Holding(State):
  def run(self):
    print "Holding: Mouse caught"

  def next(self, input):
    if input == MouseAction.removed:
      return MouseTrap.waiting
    return MouseTrap.holding

class MouseTrap(StateMachine):
  def __init__(self): 
    # Initial state
    StateMachine.__init__(self, MouseTrap.waiting)

# Static variable initialization:
MouseTrap.waiting = Waiting()
MouseTrap.luring = Luring()
MouseTrap.trapping = Trapping()
MouseTrap.holding = Holding()

moves = map(string.strip, 
  open("../mouse/MouseMoves.txt").readlines())
MouseTrap().runAll(map(MouseAction, moves))
#<hr>
output = '''
Waiting: Broadcasting cheese smell
mouse appears
Luring: Presenting Cheese, door open
mouse runs away
Waiting: Broadcasting cheese smell
mouse appears
Luring: Presenting Cheese, door open
mouse enters trap
Trapping: Closing door
mouse escapes
Waiting: Broadcasting cheese smell
mouse appears
Luring: Presenting Cheese, door open
mouse enters trap
Trapping: Closing door
mouse trapped
Holding: Mouse caught
mouse removed
Waiting: Broadcasting cheese smell
mouse appears
Luring: Presenting Cheese, door open
mouse runs away
Waiting: Broadcasting cheese smell
mouse appears
Luring: Presenting Cheese, door open
mouse enters trap
Trapping: Closing door
mouse trapped
Holding: Mouse caught
mouse removed
Waiting: Broadcasting cheese smell
'''

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -