Python 我正在尝试将坡道放入一个基于随机生成地形的平铺游戏中

Python 我正在尝试将坡道放入一个基于随机生成地形的平铺游戏中,python,pygame,tiles,Python,Pygame,Tiles,我在尝试将坡道添加到游戏地图生成中时遇到了很多麻烦(代码如下所示)。我想检查地砖左侧和左侧的空气(面向左侧的坡道)以及右侧和右侧的空气(面向右侧),但我不确定该怎么做 def generate_chunk(x,y): chunk_data = [] for y_pos in range(CHUNK_SIZE): for x_pos in range(CHUNK_SIZE): target_x = x * CHUNK_SIZE + x_pos

我在尝试将坡道添加到游戏地图生成中时遇到了很多麻烦(代码如下所示)。我想检查地砖左侧和左侧的空气(面向左侧的坡道)以及右侧和右侧的空气(面向右侧),但我不确定该怎么做

def generate_chunk(x,y):
    chunk_data = []
    for y_pos in range(CHUNK_SIZE):
        for x_pos in range(CHUNK_SIZE):
            target_x = x * CHUNK_SIZE + x_pos
            target_y = y * CHUNK_SIZE + y_pos
            tile_type = 0 # nothing
            if x == 0:
                height = 0

            else:
                height = int(noise.pnoise1(target_x * 0.1, repeat=9999999) * 3)

                #------------------------------------------.
                                  #dirt:
            if target_y == 8 - height - 3:
                if x == 0:
                    if target_x == 0:
                        tile_type = 12

            if target_y > 8 - height:
                if target_y < 10 - height:
                    if random.randint(1,2) == 1:
                        tile_type = 10
                    else:
                        tile_type = 7 # dirt
                elif target_y == 10 - height:
                    tile_type = 10
                elif target_y == 11 - height:
                    if random.randint(1,3) == 1:
                        tile_type = 11
                    else:
                        tile_type = 9
                else:
                    tile_type = 9
                #------------------------------------------.
                                  #grass:

            elif target_y == 8 - height:
                if random.randint(1,3) == 1 or 2:
                    tile_type = 1 # grass
                else:
                    tile_type = 6
                #------------------------------------------.
                                  #ramps:
                
                #for target_x in chunk data: if target_x has height and target_x+1 has height+1 then put a rightward ramp. 
                    #if target_x has height and target_x+1 has height-1 then put a leftward ramp. 
                        #if target_x has height and target_x+1 has height-1 and target_x+2 has height then put a middle ramp.


                #to check if a tile is going to be a ramp, check for air. if there is air above and to the left of a block, turn it into a ramp pointing right. whereas if it 
                #has air up and to the right, turn it into a ramp pointing left.
                    #check every chunk loading, and save it, but i will need to check while it is being made, how.. for tile in tiles?           
                #------------------------------------------.
                    #plants:

            elif target_y == 8 - height - 1 and x != 0:
                if random.randint(1,2) == 1:
                    if random.randint(1,4) == 2:
                        tile_type = 3 # plant
                    elif random.randint(1,5) == 1:
                        tile_type = 8
                    elif random.randint(1,4) == 3:
                        tile_type = 4 # plant3
                    elif random.randint(1,5) == 4:
                        tile_type = 5 # plant4
                else:
                    if random.randint(1,5) != 1:
                        tile_type = 4
            if tile_type != 0:
                chunk_data.append([[target_x,target_y],tile_type])
    return chunk_data

game_map = {}
def生成块(x,y):
chunk_data=[]
对于范围内的y位置(块大小):
对于范围内的x_位置(块大小):
目标x=x*块大小+x位置
目标y=y*块大小+y位置
平铺类型=0#无
如果x==0:
高度=0
其他:
高度=int(噪声pnoise1(目标值×0.1,重复次数=999999)*3)
#------------------------------------------.
#污垢:
如果目标_y==8-高度-3:
如果x==0:
如果目标_x==0:
瓷砖类型=12
如果目标y>8-高度:
如果目标y<10-高度:
如果random.randint(1,2)==1:
瓷砖类型=10
其他:
瓷砖类型=7#污垢
elif target_y==10-高度:
瓷砖类型=10
elif target_y==11-高度:
如果random.randint(1,3)==1:
瓷砖类型=11
其他:
瓷砖类型=9
其他:
瓷砖类型=9
#------------------------------------------.
#草:
elif target_y==8-高度:
如果random.randint(1,3)=1或2:
瓷砖类型=1#草
其他:
瓷砖类型=6
#------------------------------------------.
#坡道:
#对于区块数据中的target_x:如果target_x具有高度,target_x+1具有高度+1,则向右倾斜。
#如果目标_x有高度,目标_x+1有高度-1,则向左倾斜。
#如果目标_x有高度,目标_x+1有高度-1,目标_x+2有高度,则放置一个中间斜坡。
#要检查瓷砖是否将成为坡道,请检查空气。如果一个街区的上方和左侧有空气,则将其转换为指向右侧的坡道。如果
#空气向上,向右,将其变为指向左侧的坡道。
#检查每个块加载,并保存它,但我需要检查,而它是如何制作的。。瓷砖中的瓷砖?
#------------------------------------------.
#植物:
elif target_y==8-高度-1和x!=0:
如果random.randint(1,2)==1:
如果random.randint(1,4)=2:
瓷砖类型=3#厂房
elif random.randint(1,5)=1:
瓷砖类型=8
elif random.randint(1,4)=3:
瓷砖类型=4#植物3
elif random.randint(1,5)=4:
瓷砖类型=5#植物4
其他:
如果随机。randint(1,5)!=1:
瓷砖类型=4
如果是平铺类型!=0:
chunk\u data.append([[target\u x,target\u y],tile\u type])
返回数据块
game_map={}

我可以贴出它的图片,但我不知道你是否需要它。

写一个合适的标题可以确保更多的人阅读你的完整问题。