Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x pygame地图中机器人的传感器_Python 3.x_Pygame - Fatal编程技术网

Python 3.x pygame地图中机器人的传感器

Python 3.x pygame地图中机器人的传感器,python-3.x,pygame,Python 3.x,Pygame,我将在pygame中创建一个包含对象的2D地图,我正在考虑创建一个机器人在地图上移动。(从上面看,地图视图就像口袋妖怪火红色一样简单得多) 如何在机器人中放置一些“传感器”。比如,他在四处移动,他前面的3个街区有障碍物,我怎么能检测到它呢?如果你有一个二维网格,其中充满了屏幕上的对象,那么计算出相对于某个位置的单元格内容就很容易了。让我们假设这个特定的机器人具有非常“圆锥形”的视野: 如果你的机器人在(x,y),你只需要检查单元格(x,y-1),(x-1,y-2)(x+1,y-2)和(x-1,

我将在pygame中创建一个包含对象的2D地图,我正在考虑创建一个机器人在地图上移动。(从上面看,地图视图就像口袋妖怪火红色一样简单得多)
如何在机器人中放置一些“传感器”。比如,他在四处移动,他前面的3个街区有障碍物,我怎么能检测到它呢?

如果你有一个二维网格,其中充满了屏幕上的对象,那么计算出相对于某个位置的单元格内容就很容易了。让我们假设这个特定的机器人具有非常“圆锥形”的视野:

如果你的机器人在
(x,y)
,你只需要检查单元格
(x,y-1)
(x-1,y-2)(x+1,y-2)
(x-1,y-3)(x,y-3)(x+1,y-3)
。显然,根据机器人所面对的方向,配置略有不同

这可以概括为一个函数:

def lookUp( x, y, grid ):
    " Return a list of objects spotted within the field of view "
    result  = []
    offsets = [ (0,-1), (-1,-2), (0,-2), (1,-2), (-1,-3), (0,-3), (1,-3) ]
    for offset in offsets:
        x_off, y_off = offset
        grid_contains = grid[ y + y_off ][ x + x_off ]
        if ( grid_contains != None ):
            result.append( grid_contains )
    return result
其中,可以为地图的尺寸构建网格:

def getEmptyGrid( width, height ):
    grid = []
    for i in range( height ):
        grid.append( [ None ] * width )
    return grid
    
并填充了对象

grid[0][0] = Tree( 'conifer' )
grid[3][2] = OtherBot( 'down', 3, 4, 5 )
etc.

很抱歉提出这个问题,但我如何定义“网格”。我实际上没有网格,我只是定义了一个srceen