In this matrix, like adding items such as 1×3,3×3,5×5 to the map, check each item according to the item id and if it is 1×3 and start from the starting coordinate, for example X:5 Y1, if the item is horizontal and it is , then push it to the y-axis once and to the x-axis 3 times. I would like to add the id I assigned and add the ones with the same id separately, for example, there are two items with item id 82, but one is number 1, the other is number 2 and 0. I want to compare the shortest path from the non-item squares by scanning them one by one. but I’m having trouble reading the txt files with the dimensions of the items. I was reading it directly as .read() before and I noticed that the items were measuring incorrectly.
The code where I check the item sizes
def propsize(propid):
path1x1 = os.getcwd() + "/settings/PropSize/1x1.txt"
path1x3 = os.getcwd() + "/settings/PropSize/1x3.txt"
path1x5 = os.getcwd() + "/settings/PropSize/1x5.txt"
path1x10 = os.getcwd() + "/settings/PropSize/1x10.txt"
path1x19 = os.getcwd() + "/settings/PropSize/1x19.txt"
path3x3 = os.getcwd() + "/settings/PropSize/3x3.txt"
path3x5 = os.getcwd() + "/settings/PropSize/3x5.txt"
path4x7 = os.getcwd() + "/settings/PropSize/4x7.txt"
path4x8 = os.getcwd() + "/settings/PropSize/4x8.txt"
path5x5 = os.getcwd() + "/settings/PropSize/5x5.txt"
path6x6 = os.getcwd() + "/settings/PropSize/6x6.txt"
path7x7 = os.getcwd() + "/settings/PropSize/7x7.txt"
path8x8 = os.getcwd() + "/settings/PropSize/8x8.txt"
path9x9 = os.getcwd() + "/settings/PropSize/9x9.txt"
path10x10 = os.getcwd() + "/settings/PropSize/10x10.txt"
path20x20 = os.getcwd() + "/settings/PropSize/20x20.txt"
p1x1 = open(path1x1,"r").readlines()
p1x3 = open(path1x3,"r").readlines()
p1x5 = open(path1x5,"r").readlines()
p1x10 = open(path1x10,"r").readlines()
p1x19 = open(path1x19,"r").readlines()
p3x3 = open(path3x3,"r").readlines()
p3x5 = open(path3x5,"r").readlines()
p4x7 = open(path4x7,"r").readlines()
p4x8 = open(path4x8,"r").readlines()
p5x5 = open(path5x5,"r").readlines()
p6x6 = open(path6x6,"r").readlines()
p7x7 = open(path7x7,"r").readlines()
p8x8 = open(path8x8,"r").readlines()
p9x9 = open(path9x9,"r").readlines()
p10x10 = open(path10x10,"r").readlines()
p20x20 = open(path20x20,"r").readlines()
for p in p1x1:
if propid == p:
print("1x1")
return "1:1"
for p in p1x3:
if propid == p:
print("1x3")
return "1:3"
for p in p1x5:
if propid == p:
print("1x5")
return "1:5"
for p in p1x10:
if propid == p:
print("1x10")
return "1:10"
for p in p1x19:
if propid == p:
print("1x19")
return "1:19"
for p in p3x3:
if propid == p:
print("3x3")
return "3:3"
for p in p3x5:
if propid == p:
print("3x5")
return "3:5"
for p in p4x7:
if propid == p:
print("4x7")
return "4:7"
for p in p4x8:
if propid == p:
print("4x8")
return "4:8"
for p in p5x5:
if propid == p:
print("5x5")
return "5:5"
for p in p6x6:
if propid == p:
print("6x6")
return "6:6"
for p in p7x7:
if propid == p:
print("7x7")
return "7:7"
for p in p8x8:
if propid == p:
print("8x8")
return "8:8"
for p in p9x9:
if propid == p:
print("9x9")
return "9:9"
for p in p10x10:
if propid == p:
print("10x10")
return "10:10"
for p in p20x20:
if propid == p:
print("20x20")
return "20:20"
return "!:!"
The code where I add the items to the matrix
def fill_flats(pid, corx,cory,sizex,sizey,rot):
if rot == "h":
yt = 0
while yt < sizey:
xt = 0
while xt < sizex:
global Y1, Y2, Y3, Y4, Y5 , Y6, Y7, Y8, Y9 , Y10, Y11, Y12 , Y13, Y14, Y15, Y16, Y17 , Y18, Y19, Y20
exec ("Y{}[{}]={}".format(str(cory+xt),corx+yt,pid))
xt +=1
yt+=1
if rot == "v":
xt = 0
while xt < sizex:
yt = 0
while yt < sizey:
global Y1, Y2, Y3, Y4, Y5 , Y6, Y7, Y8, Y9 , Y10, Y11, Y12 , Y13, Y14, Y15, Y16, Y17 , Y18, Y19, Y20
exec ("Y{}[{}]={}".format(str(cory+yt),corx+xt,pid))
yt +=1
xt+=1
And this is the error I get
/Tructer/test.py", line 188, in importmap
fill_flats(propanalyzed[o]["pnum"],int(propanalyzed[o]
["cordinatesX"]),int(propanalyzed[o]["cordinatesY"]),int(propanalyzed[o]
["X"]),int(propanalyzed[o]["Y"]),str(propanalyzed[o]["rotation"]))
ValueError: invalid literal for int() with base 10: '!'
size function returning: “!:!” where am i doing wrong:(
My full test.py code
from asyncio import queues
from http import cookies
import os
from posixpath import split
from textwrap import fill
import time
from typing_extensions import Self
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from pyfiglet import Figlet
from rich.progress import track
xcursor =1
ycursor =1
title = Figlet(font='slant')
print(title.renderText('TRUCTER'))
Y1 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Y2 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Y3 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Y4 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Y5 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Y6 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Y7 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Y8 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Y9 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Y10 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Y11 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Y12 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Y13 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Y14 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Y15 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Y16 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Y17 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Y18 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Y19 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Y20 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
def checklogged():
for cookie in cookies:
if cookie['name'] == "ltc_user":
print(cookie)
def propsize(propid):
path1x1 = os.getcwd() + "/settings/PropSize/1x1.txt"
path1x3 = os.getcwd() + "/settings/PropSize/1x3.txt"
path1x5 = os.getcwd() + "/settings/PropSize/1x5.txt"
path1x10 = os.getcwd() + "/settings/PropSize/1x10.txt"
path1x19 = os.getcwd() + "/settings/PropSize/1x19.txt"
path3x3 = os.getcwd() + "/settings/PropSize/3x3.txt"
path3x5 = os.getcwd() + "/settings/PropSize/3x5.txt"
path4x7 = os.getcwd() + "/settings/PropSize/4x7.txt"
path4x8 = os.getcwd() + "/settings/PropSize/4x8.txt"
path5x5 = os.getcwd() + "/settings/PropSize/5x5.txt"
path6x6 = os.getcwd() + "/settings/PropSize/6x6.txt"
path7x7 = os.getcwd() + "/settings/PropSize/7x7.txt"
path8x8 = os.getcwd() + "/settings/PropSize/8x8.txt"
path9x9 = os.getcwd() + "/settings/PropSize/9x9.txt"
path10x10 = os.getcwd() + "/settings/PropSize/10x10.txt"
path20x20 = os.getcwd() + "/settings/PropSize/20x20.txt"
p1x1 = open(path1x1,"r").readlines()
p1x3 = open(path1x3,"r").readlines()
p1x5 = open(path1x5,"r").readlines()
p1x10 = open(path1x10,"r").readlines()
p1x19 = open(path1x19,"r").readlines()
p3x3 = open(path3x3,"r").readlines()
p3x5 = open(path3x5,"r").readlines()
p4x7 = open(path4x7,"r").readlines()
p4x8 = open(path4x8,"r").readlines()
p5x5 = open(path5x5,"r").readlines()
p6x6 = open(path6x6,"r").readlines()
p7x7 = open(path7x7,"r").readlines()
p8x8 = open(path8x8,"r").readlines()
p9x9 = open(path9x9,"r").readlines()
p10x10 = open(path10x10,"r").readlines()
p20x20 = open(path20x20,"r").readlines()
for p in p1x1:
if propid == p:
print("1x1")
return "1:1"
for p in p1x3:
if propid == p:
print("1x3")
return "1:3"
for p in p1x5:
if propid == p:
print("1x5")
return "1:5"
for p in p1x10:
if propid == p:
print("1x10")
return "1:10"
for p in p1x19:
if propid == p:
print("1x19")
return "1:19"
for p in p3x3:
if propid == p:
print("3x3")
return "3:3"
for p in p3x5:
if propid == p:
print("3x5")
return "3:5"
for p in p4x7:
if propid == p:
print("4x7")
return "4:7"
for p in p4x8:
if propid == p:
print("4x8")
return "4:8"
for p in p5x5:
if propid == p:
print("5x5")
return "5:5"
for p in p6x6:
if propid == p:
print("6x6")
return "6:6"
for p in p7x7:
if propid == p:
print("7x7")
return "7:7"
for p in p8x8:
if propid == p:
print("8x8")
return "8:8"
for p in p9x9:
if propid == p:
print("9x9")
return "9:9"
for p in p10x10:
if propid == p:
print("10x10")
return "10:10"
for p in p20x20:
if propid == p:
print("20x20")
return "20:20"
return "!:!"
def importmap():
designfile = "/settings/design.txt"
designParsedfile = "/settings/design_parsed.txt"
path_d = os.getcwd()+designfile
path_dp = os.getcwd()+designParsedfile
propnumber = 1
print('Design Analyzing...')
with open(path_d) as f:
propanalyzed = {}
props = f.readline().replace(" ","").split(";")
props.__delitem__(len(props)-1)
pnumber = 1
for prop in props:
p = prop.split(",")
ps = propsize(p[0].replace(" ",""))
p_size = ps.split(":")
propanalyzed[propnumber] = {
"propid" : p[0],
"X" : p_size[0],
"Y" : p_size[1],
"cordinatesX" : int(p[1])+1,
"cordinatesY" : int(p[2])+1,
"rotation" : p[3],
"pnum" : pnumber
}
propnumber = propnumber+1
pnumber +=1
pnumber = 1
propnumber=1
pathanalyzed = os.getcwd() + "/settings/PropSize/propanalyzed.txt"
open(pathanalyzed, "a").write(str(propanalyzed) + "n")
print('Map Visualation in Progress...')
for o in propanalyzed:
fill_flats(propanalyzed[o]["pnum"],int(propanalyzed[o]["cordinatesX"]),int(propanalyzed[o]["cordinatesY"]),int(propanalyzed[o]["X"]),int(propanalyzed[o]["Y"]),str(propanalyzed[o]["rotation"]))
def move_x(a,b):
global xcursor
if a == "+":
xcursor = xcursor + b
elif a=="-":
xcursor = xcursor - b
def move_y(a,b):
global ycursor
if a == "+":
ycursor = ycursor + b
elif a=="-":
ycursor = ycursor - b
def fill_flats(pid, corx,cory,sizex,sizey,rot):
if rot == "h":
yt = 0
while yt < sizey:
xt = 0
while xt < sizex:
global Y1, Y2, Y3, Y4, Y5 , Y6, Y7, Y8, Y9 , Y10, Y11, Y12 , Y13, Y14, Y15, Y16, Y17 , Y18, Y19, Y20
exec ("Y{}[{}]={}".format(str(cory+xt),corx+yt,pid))
xt +=1
yt+=1
if rot == "v":
xt = 0
while xt < sizex:
yt = 0
while yt < sizey:
global Y1, Y2, Y3, Y4, Y5 , Y6, Y7, Y8, Y9 , Y10, Y11, Y12 , Y13, Y14, Y15, Y16, Y17 , Y18, Y19, Y20
exec ("Y{}[{}]={}".format(str(cory+yt),corx+xt,pid))
yt +=1
xt+=1
importmap()
pr = 1
mapppt = os.getcwd() + "/settings/mapp.txt"
while pr < 20:
open(mapppt, 'a').write(str(str(Y1[pr])+" | " + str(Y2[pr])+" | " + str(Y3[pr])+" | " + str(Y4[pr])+" | " + str(Y5[pr])+" | " + str(Y6[pr])+" | " + str(Y7[pr])+" | " + str(Y8[pr])+" | " + str(Y9[pr])+" | " + str(Y10[pr])+" | " + str(Y11[pr])+" | " + str(Y12[pr])+" | " + str(Y13[pr])+" | " + str(Y14[pr])+" | " + str(Y15[pr])+" | " + str(Y16[pr])+" | " + str(Y17[pr])+" | " + str(Y18[pr])+" | " + str(Y19[pr])+" | " + str(Y20[pr])+" | ")+ 'n')
pr +=1
And example propsize file
5
6
21
22
23
24
25
26
27
28
80
81
82
84
And example item before processing(82 is item number , 0 is x cordinate and 1 is y cordinate and “v” is rotation type
82,0,1,v;
Advertisement
Answer
You are getting a ValueError
, but the problem with your code isn’t this.
exec ("Y{}[{}]={}".format(str(cory+xt),corx+yt,pid))
This is the problem. Creating Y1
Y2
Y3
… Y20
is a very bad idea, try something like this instead:
Y = []
for _ in range(20):
Y.append([0, 0, 0, 0, 0, 0, 0, 0, 0])
then you can access it this way:
for i in range(20):
for j in range(10): # Instead of 10 put the lenght of your inner lists
Y[i][j]