PyGame Неверная позиция для Blit

Я создаю небольшой дизайнер уровней на Python (используя PyGame). Программа должна просто позволить вам разместить изображение, переключаться между изображениями, экспортировать в файл PNG и экспортировать путь и координаты изображения туда, где оно было размещено в текстовом документе. Я заставил все эти компоненты работать, но я застрял на одном последнем компоненте, а именно на чтении текстового документа обратно в PyGame и повторном размещении всех изображений в правильных местах с правильными спрайтами.

Текущий способ (который был переписан и Почти работает) выдает ошибку всякий раз, когда я пытаюсь прочитать из одного из экспортированных файлов.

Ошибка конечно:

stamped_surface.blit(image, (xcrds, ycrds)) TypeError: invalid destination position for blit

Вот мой код:

import pygame as pg import threading import time import pygame from random import * from tkinter.filedialog import askopenfilename from tkinter.filedialog import asksaveasfile image_file = «../res/ExampleProject/TankGame/TankGameImg/tileGrass_transitionE.png» f = open(«../Saves/Backups/FailSafe.txt», «a+») f.write(«»» ################################################# # PyEngine # # FailSafe # # File # # By MouseBatteries # ################################################# «»») pg.init() xcrds = 17 ycrds = 13 black = (0,0,0) sw = 1280 sh = 720 screen = pg.display.set_mode((sw, sh)) pg.display.set_caption(‘thing’) image = pg.image.load(image_file).convert() start_rect = image.get_rect() image_rect = start_rect running = True stamped_surface = pg.Surface((sw, sh)) while running: event = pg.event.poll() keyinput = pg.key.get_pressed() # Escape Program if keyinput[pg.K_ESCAPE]: fname = «../Saves/Design_complete.png» pg.image.save(stamped_surface, fname) print(«File saved at {} «.format(fname)) quit() #Save Work In Project File if keyinput[pg.K_s]: fname = «../Saves/LevelSave.png» pg.image.save(stamped_surface, fname) print(«File saved at {} «.format(fname)) #Open New Selectable if keyinput[pg.K_n]: image_file = askopenfilename() image = pg.image.load(image_file).convert() print(«Placable Updated!») if keyinput[pg.K_e]: fname = «../Saves/Export.png» pg.image.save(stamped_surface, fname) print(«File saved at {} «.format(fname)) pg.quit() #Recreate Terrain From File if keyinput[pg.K_o]: fileDest = askopenfilename() openFile = open(fileDest, «r») for line in openFile: li = line.strip() if li.startswith(«Pec:»): #pec stands for «PyEngineCoords» reimgpath = (line.rstrip()) nopecimgpath = reimgpath.replace(«Pec:», «») print(nopecimgpath) image = pg.image.load(nopecimgpath).convert() pg.display.update() if li.startswith(«Crdsx:»): xposcrds = (line.rstrip()) xcrds = xposcrds.replace(«Crdsx:», «») x = int(xcrds) print(x) pg.display.update() if li.startswith(«Crdsy:»): yposcrds = (line.rstrip()) ycrds = yposcrds.replace(«Crdsy:», «») y = int(ycrds) print(y) pg.display.update() stamped_surface.blit(image, (xcrds, ycrds)) elif event.type == pg.QUIT: running = False elif event.type == pg.MOUSEMOTION: image_rect = start_rect.move(event.pos) elif event.type == pg.MOUSEBUTTONDOWN: stamped_surface.blit(image, event.pos) print(«Image Placed!») print(image_file, event.pos) f.write(«nPec:» + image_file + «nCrdsx:») print(event.pos) xpos_str = str(pg.mouse.get_pos()[0]) ypos_str = str(pg.mouse.get_pos()[1]) f.write(xpos_str) f.write(«nCrdsy:») f.write(ypos_str) f.flush() screen.fill(black) screen.blit(stamped_surface, (0, 0)) screen.blit(image, image_rect) pg.display.flip()

У этой программы есть файловая система и определенные элементы управления, чтобы все происходило, вот они:

ESC KEY — программа автоматического экспорта для справки и выхода из программы

Клавиша S — сохраняет поверхность как файл PNG.

Клавиша N — предлагает пользователю выбрать новый спрайт для использования.

Клавиша E — экспорт изображения в PNG с запросом файла

Клавиша O — открывает файл с данными координат и данными пути к изображению.

Образ корневой файловой системы: /wp-content/uploads/2018/11/53494553-im-1.png

A Несколько вещей, которые вы должны знать: Эта программа автоматически сохраняет каждую позицию файла в файл, который содержит координаты и пути к изображениям.

С файловой системой относительно просто работать, взглянув на код, но если вам нужна помощь, спросите.

Используйте print, чтобы распечатать xcrds и ycrds перед строкой, вызывающей исключение. Затем, когда возникает исключение, вы можете увидеть, какие значения неверны.   —  person Mouse Batteries    schedule 27.11.2018

@sloth все значения кажутся мне правильными .. i.imgur.com/BcNb3sH.png   —  person Mouse Batteries    schedule 28.11.2018

Источник: ledsshop.ru

Стиль жизни - Здоровье!