Python 棋盘上的怪物追逐游戏:如果用户第一次输入1,为什么X不出现?

Python 棋盘上的怪物追逐游戏:如果用户第一次输入1,为什么X不出现?,python,Python,本质上,这个游戏允许用户在25个空格的棋盘上选择一个空格。有一个怪物用用户的“气味”随机选择一个正在进行的空间工作 如果启动程序并输入1作为第一步,它不会显示在板上。有人知道为什么会这样吗 奖金问题: 我想让“气味”在转一圈后消失……有什么想法吗? 或 我想让用户得到染色前留下的气味量的分数。有什么想法吗? 问题在于monster_move,特别是这一行: mapp[move] = space 您在开始时初始化move=0,因此它总是删除第一个正方形,并且由于它发生在用户移动之后,因此用户不会

本质上,这个游戏允许用户在25个空格的棋盘上选择一个空格。有一个怪物用用户的“气味”随机选择一个正在进行的空间工作

如果启动程序并输入1作为第一步,它不会显示在板上。有人知道为什么会这样吗

奖金问题:

我想让“气味”在转一圈后消失……有什么想法吗? 或 我想让用户得到染色前留下的气味量的分数。有什么想法吗? 问题在于monster_move,特别是这一行:

mapp[move] = space
您在开始时初始化move=0,因此它总是删除第一个正方形,并且由于它发生在用户移动之后,因此用户不会出现在那里

相反,您可以在第一轮中将其设置为不同的值,并检查:

move = -1
在monster_move中:

奖金问题:

我想让“气味”在转一圈后消失……有什么想法吗

跟踪以前的位置,并使用它来去除气味。如果在Python中使用队列数据结构,这可以通过一个列表来完成,很容易扩展到更高级的算法,比如跟踪多个回合

在顶部,初始化

prev_moves = []
在user_move中,移除旧气味并添加新气味:

def user_move():
    global choice
    if user in mapp:
        mapp[choice] = scent # replace the user marker
        if len(prev_moves) > 0:
            mapp[prev_moves.pop(0)] = space # remove earliest move
        prev_moves.append(choice) # add most recent move
        print(prev_moves)
    for move in prev_moves: # place scent markers
        mapp[move] = scent
    choice = (int(input("Where would you like to move? (1-25): "))-1)
    check()
    mapp[choice] = user
如果你想让气味持续更长时间,只需检查列表的长度,只有当它比你想要的更大时才会弹出

我想让用户得到染色前留下的气味量的分数。有什么想法吗

使用上面的列表实现,您只需检查lenprev_移动

prev_moves = []
def user_move():
    global choice
    if user in mapp:
        mapp[choice] = scent # replace the user marker
        if len(prev_moves) > 0:
            mapp[prev_moves.pop(0)] = space # remove earliest move
        prev_moves.append(choice) # add most recent move
        print(prev_moves)
    for move in prev_moves: # place scent markers
        mapp[move] = scent
    choice = (int(input("Where would you like to move? (1-25): "))-1)
    check()
    mapp[choice] = user