Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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中文本游戏的简单地图,使用表格和海龟图形,带有6*6的表格和600*600的海龟画布_Python - Fatal编程技术网

python中文本游戏的简单地图,使用表格和海龟图形,带有6*6的表格和600*600的海龟画布

python中文本游戏的简单地图,使用表格和海龟图形,带有6*6的表格和600*600的海龟画布,python,Python,我想用python为一个简单的文本游戏制作一个地图,我想把一个600*600的画布分成100*100个象限,对应于2D列表中的一个坐标。 如果有人知道怎么做的话,我想把画布上的部分和我6*6表格上的坐标关联起来?谢谢 我的代码: #dungos + dragos ver 0.1| # import turtle def main(): tina = turtle.Turtle() screen = turtle.Screen() Map = [[

我想用python为一个简单的文本游戏制作一个地图,我想把一个600*600的画布分成100*100个象限,对应于2D列表中的一个坐标。 如果有人知道怎么做的话,我想把画布上的部分和我6*6表格上的坐标关联起来?谢谢

我的代码:

#dungos + dragos ver 0.1| #
import turtle

def main():
        tina = turtle.Turtle()
        screen = turtle.Screen()
        Map = [[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0]]

        for row in Map:
                for item in row:
                        print(item, end=' ')

                print('\n')
        screen.setup(600,600)
        tina.shape('arrow')
        tina.speed(10)

main()

我现在要补充一点,我现在只是在地图上工作

这是一份6x600像素画布上的6x6地图副本。坐标 四个地图角中的一个在剖面内给出,画布的角 它本身被贴上了标签

您的问题是,如何识别画布的4个角的画布坐标 地图方格占据的画布方格。每个地图方块在画布中占据一个100x100像素的方块。诀窍是计算画布坐标 对于任意贴图正方形(i,j)的四个角

考虑几个具体的例子:

map square     canvas square (upper left and lower right corners)
-----------------------------------------------------------------
(0,0)          (0,0), (99,99)
(5,5)          (500, 500), (599, 599)
让自己相信这可以概括为

map square     canvas square
---------------------------------------------------
(i,j)          (100*i, 100*j), (100*i+99, 100*j+99)

相反地,画布上的任意点
(x,y)
位于map square
(x//100,y//100)
下面的代码显示了类似的操作

handle\u clicks()
函数中将屏幕坐标值转换为表格索引,该函数也会打印最终结果。它显示为一系列单独的计算,以便更容易理解所涉及的内容(它们可以组合成一个单独的计算,但这会隐藏其背后的数学推理)


那很好。你有问题吗?这是什么?我想知道如何分割我的画布,并将其与我的表格中的一个位置相关联。我将使用此信息并尝试继续处理此问题,非常感谢
map square     canvas square
---------------------------------------------------
(i,j)          (100*i, 100*j), (100*i+99, 100*j+99)
import turtle

SCREEN_MAP_SIZE = 600
SCREEN_QUAD_SIZE = 100
MAP_SIZE = int(SCREEN_MAP_SIZE/SCREEN_QUAD_SIZE)

def display_map(game_map):
    """ Output contents of game map. """
    for row in game_map:
        for item in row:
            print(item, end=' ')
        print()

def handle_clicks(x, y):
    """ Convert screen mouse clicks to game_map indices. """
    # Convert coordinate values from range:
    #   -(SCREEN_MAP_SIZE/2)...(SCREEN_MAP_SIZE/2) -> 0..SCREEN_MAP_SIZE-1
    x, y = int(x + SCREEN_MAP_SIZE/2), int(y + SCREEN_MAP_SIZE/2)

    # Convert coordinate values from range
    #   0..SCREEN_MAP_SIZE-1 -> 0..MAP_SIZE-1
    x, y = int(x/SCREEN_MAP_SIZE * MAP_SIZE), int(y/SCREEN_MAP_SIZE * MAP_SIZE)

    # Invert y coordinate value from range
    #   0..MAP_SIZE-1 -> MAP_SIZE-1..0
    y = MAP_SIZE-1 - y
    print('clicked on game_map ({}, {})'.format(x, y))

def main():
    tina = turtle.Turtle()
    screen = turtle.Screen()
    screen.onclick(handle_clicks)

    game_map = [[0 for _ in range(MAP_SIZE)] for _ in range(MAP_SIZE)]
    display_map(game_map)

    screen.setup(SCREEN_MAP_SIZE, SCREEN_MAP_SIZE)

    tina.shape('arrow')
    tina.speed(10)

    screen.mainloop()

main()