python中文本游戏的简单地图,使用表格和海龟图形,带有6*6的表格和600*600的海龟画布
我想用python为一个简单的文本游戏制作一个地图,我想把一个600*600的画布分成100*100个象限,对应于2D列表中的一个坐标。 如果有人知道怎么做的话,我想把画布上的部分和我6*6表格上的坐标关联起来?谢谢 我的代码: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 = [[
#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()