写一个有限状态机应用在游戏中的实验代码
时间: 2024-05-16 14:18:23 浏览: 13
这里提供一个简单的有限状态机应用在游戏中的示例代码,其中状态机用于控制一个简单的角色移动:
```python
class Player:
def __init__(self):
self.x, self.y = 0, 0
self.velocity = 5
def move_left(self):
self.x -= self.velocity
def move_right(self):
self.x += self.velocity
def move_up(self):
self.y -= self.velocity
def move_down(self):
self.y += self.velocity
class GameState:
def __init__(self):
self.player = Player()
self.state = 'idle'
def update(self):
if self.state == 'move_left':
self.player.move_left()
elif self.state == 'move_right':
self.player.move_right()
elif self.state == 'move_up':
self.player.move_up()
elif self.state == 'move_down':
self.player.move_down()
game_state = GameState()
while True:
game_state.update()
# 获取用户输入并更新状态机
user_input = input()
if user_input == 'left':
game_state.state = 'move_left'
elif user_input == 'right':
game_state.state = 'move_right'
elif user_input == 'up':
game_state.state = 'move_up'
elif user_input == 'down':
game_state.state = 'move_down'
else:
game_state.state = 'idle'
```
在上面的代码中,我们定义了一个玩家类 `Player`,包含了移动方法。然后我们定义了一个游戏状态类 `GameState`,该类包含当前玩家对象和一个表示当前状态的字符串。`GameState` 类中的 `update()` 方法根据当前状态调用相应的玩家方法。在主循环中,我们获取用户输入,并将状态机状态更新为相应的状态。然后在每个循环迭代中,我们调用 `GameState` 的 `update()` 方法,以便在当前状态下执行正确的玩家移动。