Уведомления

Группа в Telegram: @pythonsu

#1 Март 12, 2024 15:33:07

Zitrid
Зарегистрирован: 2024-03-12
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает функция

Привет, я жесткий самоучка, который чаще всего ищет ответы у GPT, но сейчас проблема нерешаемая даже для него.
в функции coord_calc() не прибавляется speed к now_tile.x. Я уже пробовал и из отрицательного в положительное число переводить, тоже ничего. И простите если это убер нечитабельный код, ибо прогу делаю для себя ничего не зная.

 class tile:
    def __init__(self, x, y, name):
        self.x = x
        self.y = y
        self.name = name
now_tile = tile
end_tile = tile
math_tile = tile
speed = 1
tiles = [
    tile(1, 1, 'A1'),
    tile(1, 2, 'A2'),
    tile(1, 3, 'A3'),
    tile(1, 4, 'A4'),
    tile(2, 1, 'A5'),
    tile(2, 2, 'A6'),
    tile(2, 3, 'A7'),
    tile(2, 4, 'A8'),
    tile(3, 1, 'A9'),
    tile(3, 2, 'A10'),
    tile(3, 3, 'A11'),
    tile(3, 4, 'A12'),
    tile(4, 1, 'A13'),
    tile(4, 2, 'A14'),
    tile(4, 3, 'A15'),
    tile(4, 4, 'A16')
    ]
for i in tiles:
    print(f'x,y,ID: {i.x},{i.y}, {i.name}')
def coord_find():
    global one
    global now_tile
    global end_tile
    global math_tile
    one = ('A2')
    two = ('A10')
    for i in tiles:
        if i.name == one:
            now_tile = i
        if i.name == two:
            end_tile = i
    print(now_tile.name, end_tile.name)
    math_tile.x = now_tile.x - end_tile.x
    math_tile.y = now_tile.y - end_tile.y
    print(math_tile.x, math_tile.y)
def coord_info():
    print(f'Вы идёте из {now_tile.name}, {now_tile.x}, {now_tile.y}')
    print(f'В {end_tile.name}, {end_tile.x}, {end_tile.y}')
    print(f'Пути всего: {abs(math_tile.x) + math_tile.y}')
def coord_calc():
    global now_tile
    global math_tile
    global end_tile
    if now_tile != end_tile:
        if math_tile.x < 0:
            print(math_tile.x)
            now_tile.x += speed
        else:
            now_tile.x -= speed
    else:
        print('')
    if now_tile != end_tile:
        if math_tile.y < 0:
            now_tile.x += speed
        else:
            now_tile.x -= speed
    else:
        print('')
        
    print(now_tile.x, now_tile.y)
coord_find()
coord_info()
coord_calc()

Офлайн

#2 Март 12, 2024 15:55:23

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Не работает функция

Ну тут и советовать нечего так как исправлять нужно все
Для начала

 now_tile = tile
end_tile = tile
math_tile = tile
это что вы хотели сделать? Тут три переменных равные между собой но это

 class title:
    def __init__(self) -> None:
        print("OK")
a = title()
b = title
print(a)
print(b)
a это обьект а b ссылка на него

Вобщем тут неправильно все.
Вы слишком сильно запутались.
Начните с простого - оставьте класс
Далее подумайте над тем что хотите сделать и добавьте одну функцию - проверьте что она работает и отдает правильные результаты - переходите к следующей
Сейчас у вас дае не код а набор букав



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Март 12, 2024 16:22:27

Zitrid
Зарегистрирован: 2024-03-12
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Не работает функция

ZerG
Ну тут и советовать нечего так как исправлять нужно всеДля начала
Критикуешь - предлагай, иначе это просто воздух, а не ответ.
now_tile - это объект класса tile (Тайл, ну типа область в виде квадратика). В нём есть координаты X и Y, а также ID для удобства.
Сейчас я отнимаю X, Y у now_tile (наше положение) от end_tile (конечное положение), и получившийся результат записываю в math_tile (это то число, которое показывает расстояние по координатам, которое нам нужно преодолеть).
А потом мне нужно просто прибавить или убавить math_tile к now_tile. Сразу всю сумму прибавить я не могу, потому что у персонажа есть скорость (speed). math_time также служит проверкой в какую координату/сторону нам нужно топать. Если отрицательное, то например налево, и наоборот.

Вкратце: я узнаю у math_tile в какую сторону топать, и после к now_tile прибавляю скорость персонажа. Но циферка почему-то не прибавляется. Раньше это случалось из-за отрицательного числа, а сейчас я без понятия (уже переводил в abs)
if now_tile != end_tile:
if math_tile.x < 0:
print(math_tile.x)
now_tile.x += speed

Отредактировано Zitrid (Март 12, 2024 16:24:20)

Офлайн

#4 Март 12, 2024 16:54:36

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Не работает функция

ПЕРЕЧИТАЙ МОЙ ОТВЕТ
И как вариант - опиши что ты вобще хочешь сделать
Так как набросать рабочий шаблон быстрее чем пытаться понять куда тебя занесло по твоему коду



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Отредактировано ZerG (Март 12, 2024 17:26:45)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version