循环遍历4×5的点作为起点,加一个random作为方向,每动一步判断有没有超出4×5的框以及不去走过的点和设定塞死了的(0, 0)和(2, 2)
时间: 2024-09-21 13:10:21 浏览: 18
这是一个典型的二维空间随机游走的问题,在Python中可以这样描述:
首先,我们可以创建一个4x5的矩阵,表示游戏区域,值为0代表未访问,值为非0表示已经被访问过或者设为禁止。然后,我们从起点(0, 0)开始,每次随机选择一个方向并移动一步。方向可以从四个基本的方向(上、下、左、右)以及它们的组合(例如斜向左右)中随机选取。
```python
import random
# 初始化4x5的游戏区域
board = [[0] * 5 for _ in range(4)]
board[0][0] = board[2][2] = -1 # 禁止坐标 (0, 0) 和 (2, 2)
def is_valid_move(x, y):
return 0 <= x < 4 and 0 <= y < 5 and board[x][y] != -1
start_x, start_y = 0, 0
visited = set([(start_x, start_y)])
while True:
current_pos = (start_x, start_y)
directions = [(0, 1), (0, -1), (1, 0), (-1, 0)] + [(dx, dy) for dx in [1, -1] for dy in [-1, 1] if dx != dy]
random_direction = random.choice(directions)
next_x, next_y = current_pos[0] + random_direction[0], current_pos[1] + random_direction[1]
# 判断是否合法移动,并更新位置
if is_valid_move(next_x, next_y):
board[next_x][next_y] = 1 # 标记为已访问
visited.add((next_x, next_y))
start_x, start_y = next_x, next_y
else:
break # 如果无法移动,跳出循环
阅读全文