贪吃蛇

标题:贪吃蛇 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限
贪吃蛇是一个经典游戏,蛇的身体由若干方格连接而成,身体随蛇头移动。蛇头触碰到食物时,蛇的长度会增加一格。蛇头和身体的任一方格或者游戏版图边界碰撞时,游戏结束。
下面让我们来完成贪吃蛇游戏的模拟。给定一个N*M的数组arr,代表N*M个方格组成的版图,贪吃蛇每次移动一个方格。若arr[i][j] == 'H',表示该方格为贪吃蛇的起始位置;若arr[i][j] == 'F',表示该方格为食物,若arr[i][j] == 'E',表示该方格为空格。
贪吃蛇初始长度为1,初始移动方向为向左。为给定一系列贪吃蛇的移动操作,返回操作后蛇的长度,如果在操作执行完之前已经游戏结束,返回游戏结束时蛇的长度。


while True:
    try:
        orders = input().split()
        n, m = map(int, input().split())
        if n == 0&nbs***bsp;m == 0:
            print(0)
            continue
        grid = [input().split() for _ in range(n)]
        x, y = 0, 0
        for i in range(n):
            for j in range(m):
                if grid[i][j] == "H":
                    x, y = i, j
                    break
        res, command = 1, "L"
        for order in orders:
            ref = {"U": [-1, 0], "D": [1, 0], "L": [0, -1], "R": [0, 1]}
            if order == "G":
                if command in ref:
                    dx, dy = ref[command]
                    x, y = x + dx, y + dy
                if x < 0&nbs***bsp;x >= n&nbs***bsp;y < 0&nbs***bsp;y >= m&nbs***bsp;grid[x][y] == "S":
                    break
                if grid[x][y] == "F":
                    res += 1
                    grid[x][y] = "S"
            else:
                command = order
        print(res)
    except:
        break





全部评论

相关推荐

点赞 评论 收藏
分享
头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
牛客ID:561366855:期望薪资多少?难以相信这简历找不到工作。说明二本电子信息专业想对口就业非常难。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务