你好我是 python 的新手,我想从 txt 文件中读取一些数字作为 vector2 点, .TXT 文件是:
map editor this is line 1 (700, 500) (100, 500) (700, 100) (700, 100)
应该读取它的代码是:
import pygame import keyboard pygame.init() #define a window window = pygame.display.set_mode((800, 600)) pygame.display.set_caption("Map_editor") _map = open('Map.txt', 'r+') _points = _map.readlines()[1:] print(_points[0]) point1 = _points[0] point2 = _points[1] #void update base run = True while run: pygame.time.delay(10) for event in pygame.event.get(): if event.type == pygame.QUIT: run = False #===================================================================================================================================================================== #code goes here pygame.draw.line(window, (0, 255, 100), point1, point2, 10) #===================================================================================================================================================================== pygame.display.update() _map.close() pygame.quit() i get this error:File "C:\Users******\Desktop\AGame\Mapeditor.py", line 23, in <module>pygame.draw.line(window, (0, 255, 100), point1, point2, 10)TypeError: invalid start_pos argument
我尝试添加 int(_points[0]) 但它什么也没做
问题出在您尝试将读取的字符串转换为坐标点时。您需要对读取的字符串进行处理,提取其中的数字作为点的坐标。
下面是一个修正后的示例代码,可以正确读取坐标点并在窗口中绘制线段:
import pygame pygame.init() # 定义窗口 window = pygame.display.set_mode((800, 600)) pygame.display.set_caption("Map_editor") _map = open('Map.txt', 'r+') # 读取文本文件的所有行 lines = _map.readlines() # 提取坐标点 points = [] for line in lines: if line.startswith('(') and line.endswith(')\n'): point = line.strip('()\n').split(', ') point = (int(point[0]), int(point[1])) points.append(point) # 仅绘制第一个和第二个点之间的线段 if len(points) >= 2: point1 = points[0] point2 = points[1] # 进入主循环 run = True while run: pygame.time.delay(10) for event in pygame.event.get(): if event.type == pygame.QUIT: run = False # 绘制线段 pygame.draw.line(window, (0, 255, 100), point1, point2, 10) pygame.display.update() _map.close() pygame.quit()
这样修改后,代码会从文本文件中读取坐标点,并使用pygame.draw.line()函数在窗口中绘制这些点之间的线段。
pygame.draw.line()
请确保Map.txt文件中的每个坐标点都位于单独的一行,并且使用(x, y)的格式,其中x和y是整数坐标值。
Map.txt
(x, y)
x
y