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={}
我可以贴出它的图片,但我不知道你是否需要它。写一个合适的标题可以确保更多的人阅读你的完整问题。