小能豆

如何从 TXT 文件中获取数字?

python

你好我是 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]) 但它什么也没做


阅读 140

收藏
2023-06-05

共1个答案

小能豆

问题出在您尝试将读取的字符串转换为坐标点时。您需要对读取的字符串进行处理,提取其中的数字作为点的坐标。

下面是一个修正后的示例代码,可以正确读取坐标点并在窗口中绘制线段:

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()函数在窗口中绘制这些点之间的线段。

请确保Map.txt文件中的每个坐标点都位于单独的一行,并且使用(x, y)的格式,其中xy是整数坐标值。

2023-06-05