问:我无法截屏所有代码,也没有使用工作区来编写代码,因此我将以一种不常见的方式将其抛出:
导入 随机
CELLS = [(0 ,0 ), (0 ,1 ), (0 ,2 ), (1 ,0 ), (1 ,1 ), (1 ,2 ), (2 ,0 ), (2 ,1 ), (2 ,2 )] DEF get_locations ():怪物=随机。选择
(CELLS )
门=随机。选择(CELLS )开始=随机。如果怪物==门或怪物==开始或门==开始,则选择(CELLS ):返回get_locations ()返回怪物,门,开始def move_player (player ,move ):#player =(x,y)x ,
y = 玩家
是否移动== '左' :y- = 1次Elif移动== '右' :y + = 1次Elif移动== '上' :x- = 1次Elif移动== '向下' :x + = 1 return x ,y def get_moves (player ):动作= [ '左' ,'右' ,'上' ,'下'
]
#玩家=(x,y)如果玩家[ 1 ] == 0 :移动。如果玩家[ 1 ] == 2 :移动,则移除('LEFT' )。如果玩家[ 0 ] == 0 :移动,则移除('RIGHT' )。如果玩家[ 0 ] == 2 :移动,则移除('UP' )。
除去('向下' )
返回移动高清draw_map (播放机):打印('_ _ _' )瓦片= '| {}'为IDX ,细胞在枚举(CELLS ):如果IDX在[ 0 ,1 ,3 ,4 ,6 ,7 ]:如果细胞==播放器:打印(瓦。格式(
'X' ), 结束= '' )
其他:打印(瓦。格式('_' ),结束= '' )其他:如果电池==球员:打印(瓦。格式('X |' ))其他:打印(瓦。格式('_ |' ))的怪物,门,玩家= get_locations ()
打印(“欢迎来到地下城!” ),
同时为True时:moves = get_moves (玩家)打印(“您当前在房间{}” 。格式(玩家))draw_map (玩家)print (“您可以移动{}” 。格式(移动))打印(“ENTER QUIT退出” )移动=输入(“>” )移动=移动。上
()
如果move == 'QUIT' :如果进行移动,则中断:player = move_player (player ,move )else :print (“ **墙壁很硬,请停止进入其中!**” )如果玩家==门,则继续:打印(“您逃脱了!” )打破elif player ==怪物:打印(“您被烟火吞噬了” )打破
#如果动作不错,请更改玩家的位置
#如果动作不好,请不要更改位置#如果新玩家的位置是他们赢的门#如果新玩家的位置是他们输的怪物#否则继续
答:您的代码看起来不错,但是您有一个错字打乱了您的进度。
如果 move == 'LEFT' :
y- = 1 elif move == 'RIGHT' :y + = 1 elif move == 'UP' :x- = 1 elif move == 'DOWN' :x + = 1
elif move == ' DOWN':该行在DOWN之前寻找一个空格,而不只是DOWN。如果您删除该空间,它应该可以正常工作。
希望有帮助!