TypeError: () takes no arguments Ошибка

Рейтинг: -1Ответов: 1Опубликовано: 13.04.2023

Я писал небольшую игру и возникла ошибка коде:

    clouds = Clouds(MAP_W, MAP_H)
TypeError: Clouds() takes no arguments

Не понимаю из-за чего появляется ошибка, если кто-то знает, помогите пожалуйста.

Вот код:

from pynput import keyboard
from cloud import Clouds
import time
import os
from map import Map
from helicopter import Helicopter as Helico

TICK_SLEEP = 0.1
CLOUDS_UPDATE = 20
TREE_UPDATE = 50
FIRE_UPDATE = 25
MAP_W, MAP_H = 20, 10

helico = Helico(MAP_W, MAP_H)
tmp = Map(MAP_W, MAP_H)
clouds = Clouds(MAP_W, MAP_H)
MOVES = {'w': (-1, 0), 'd': (0, 1), 's': (1, 0), 'a': (0, -1)}


def process_key(key):
    global helico
    c = key.char.lower()
    if c in MOVES.keys():
        dx, dy = MOVES[c][0], MOVES[c][1]
        helico.move(dx, dy)


listener = keyboard.Listener(on_press=None, on_release=process_key)
listener.start()

if tmp.check_bounds(20, 30):
    print('YES')
tmp.generate_forest(3, 10)
tmp.generate_rivers(10)
tmp.generate_rivers(10)
tmp.generate_rivers(10)
tmp.generate_upgrade_shop()
tmp.generate_hospital()

tick = 1

while True:
    os.system('cls')
    tmp.process_helicopter(helico, clouds)
    helico.print_stats()
    tmp.print_map(helico, clouds)
    print('TICK', tick)
    tick +=1

    time.sleep(TICK_SLEEP)
    if tick % TREE_UPDATE == 0:
        tmp.add_tree()
    if tick % FIRE_UPDATE == 0:
        tmp.add_fire()
    if tick % CLOUDS_UPDATE == 0:
        clouds.update()

Ответы

▲ 0Принят

В строчке clouds = Clouds(MAP_W, MAP_H) вы создаёте объект класса Clouds, передавая ему аргументы MAP_W и MAP_H. Ошибка возникает, потому что в методе __init__(self) класса Clouds, который описан в файле cloud.py нет аргументов, кроме self. Чтобы исправить эту ошибку, вам нужно добавить аргументы в конструктор класса Clouds. Это может выглядеть так:

class Clouds:
    def __init__(self, map_width, map_height): # изменяем конструктор класса
        ... # ваш код здесь