Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 24.08.2022
Сообщений: 16

Ошибка TypeError

13.05.2023, 15:57. Показов 932. Ответов 3

Студворк — интернет-сервис помощи студентам
Модуль Main
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import pygame, sys
from settings import *
from level import Level
 
# Установка pygame
pygame.init()
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
clock = pygame.time.Clock()
level = Level(level_map, screen)
 
 
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
 
    screen.fill('black')
    level.run()
 
 
    pygame.display.update()
    clock.tick(60)
Модуль level
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import pygame
from tiles import Tile
from settings import tile_size
from player import Player
 
class Level:
    def __init__(self, level_data, surface):
 
        # Загрузка уровня
        self.display_surface = surface
        self.setup_level(level_data)
        self.world_shift = 0
 
    def setup_level(self, layout):
        self.tiles = pygame.sprite.Group()
        self.player = pygame.sprite.GroupSingle()
 
        for row_index, row in enumerate(layout):
            for col_index, cell in enumerate(row):
                x = col_index * tile_size
                y = row_index * tile_size
 
                if cell == 'X':
                    tile = Tile((x,y),tile_size)
                    self.tiles.add(tile)
                if cell == 'P':
                    x = col_index * tile_size
                    y = row_index * tile_size
                    player_sprite = Player((x, y))
                    self.tiles.add(player_sprite)
 
    def run(self):
        # Тайлы уровней
        self.tiles.update(self.world_shift)
        self.tiles.draw(self.display_surface)
Модуль player
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import pygame
 
class Player(pygame.sprite.Sprite):
    def __init__(self, pos):
        super().__init__()
        self.image = pygame.Surface((32,64))
        self.image.fill('red')
        self.rect = self.image.get_rect(topleft = pos)
        self.direction = pygame.math.Vector2(0,0)
 
    def get_input(self):
        keys = pygame.key.get_pressed()
 
        if keys[pygame.K_RIGHT]:
            self.direction.x = 1
        elif keys[pygame.K_LEFT]:
            self.direction.x = -1
        else:
            self.direction.x = 0
 
    def update(self):
        self.get_input()
        self.rect.x += self.direction.x
Модуль tiles
Python
1
2
3
4
5
6
7
8
9
10
11
import pygame
 
class Tile(pygame.sprite.Sprite):
    def __init__(self,pos,size):
        super().__init__()
        self.image = pygame.Surface((size, size))
        self.image.fill('grey')
        self.rect = self.image.get_rect(topleft = pos)
 
    def update(self, x_shift):
        self.rect.x += x_shift
Модуль settings
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
level_map = [
'                                            ',
'                                            ',
'                                            ',
'XXX                                 XXXXX   ',
'XXXP       XX                               ',
'  XXX                                     XX',
' XXXX          XX                           ',
' XXXX         XXX          XX      XX  XXX  ',
'             XXX          XX      XX  XXX   ',
'  XXXXXX      XXXXXX       XX      XX  XXX  ',
'XXXXXXXXXX      XXXXXXX    XX    XXXXX      ']
 
tile_size = 64  # Размер тайла
SCREEN_WIDTH = 1200
SCREEN_HEIGHT = len(level_map) * tile_size
При запуске выдает ошибку: "TypeError: Player.update() takes 1 positional argument but 2 were given". И как ее исправить?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.05.2023, 15:57
Ответы с готовыми решениями:

Ошибка TypeError: 'int' object is not callable
print("Введите аргумент вычисляемого выражения: ", end="") from math import * a = float(input()) z1 = sin(a) + sin(a) + cos(3(a))...

Ошибка TypeError: 'int' object is not subscriptable
b = ]]]] print(a) Вот сам код не понимаю почему выходит ошибка

Ошибка 'TypeError: object() takes no parameters'
Создаю игру из самоучителя. Что делать? Выдаёт ошибку ball = Ball(canvas, 'red') TypeError: object() takes no parameters from tkinter...

3
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
13.05.2023, 16:22
Цитата Сообщение от dastinok Посмотреть сообщение
И как ее исправить?
прочитать, перевести и подумать. Ты как понял эту ошибку?

приведи ее(ошибку) целиком, не вижу в коде где вызывается апдейт у плеера
0
0 / 0 / 0
Регистрация: 24.08.2022
Сообщений: 16
13.05.2023, 16:29  [ТС]
Traceback (most recent call last):
File "C:\Users\Davenant\Desktop\CrazyTown\mai n.py", line 19, in <module>
level.run()
File "C:\Users\Davenant\Desktop\CrazyTown\lev el.py", line 34, in run
self.tiles.update(self.world_shift)
File "C:\Users\Davenant\AppData\Roaming\Pytho n\Python310\site-packages\pygame\sprite.py", line 539, in update
sprite.update(*args, **kwargs)
TypeError: Player.update() takes 1 positional argument but 2 were given

Добавлено через 1 минуту
Погодите я походу не догрузил

Добавлено через 1 минуту
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import pygame
from tiles import Tile
from settings import tile_size
from player import Player
 
class Level:
    def __init__(self, level_data, surface):
 
        # Загрузка уровня
        self.display_surface = surface
        self.setup_level(level_data)
        self.world_shift = 0
 
    def setup_level(self, layout):
        self.tiles = pygame.sprite.Group()
        self.player = pygame.sprite.GroupSingle()
 
        for row_index, row in enumerate(layout):
            for col_index, cell in enumerate(row):
                x = col_index * tile_size
                y = row_index * tile_size
 
                if cell == 'X':
                    tile = Tile((x,y),tile_size)
                    self.tiles.add(tile)
                if cell == 'P':
                    x = col_index * tile_size
                    y = row_index * tile_size
                    player_sprite = Player((x, y))
                    self.tiles.add(player_sprite)
 
    def run(self):
        # Тайлы уровней
        self.tiles.update(self.world_shift)
        self.tiles.draw(self.display_surface)
 
        # Игрок
        self.player.update() 
        self.player.draw(self.display_surface)
Добавлено через 45 секунд
self.player.update() сюда возможно нужно передать аргумент
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
13.05.2023, 16:37
Цитата Сообщение от dastinok Посмотреть сообщение
сюда возможно нужно передать аргумент
а может все же прочитать ошибку то?))) как ты ее понял?

Цитата Сообщение от dastinok Посмотреть сообщение
# Тайлы уровней
        self.tiles.update(self.world_shift)
я не знаю как конкретно в пигейм обновляются тайлы, видимо берет все и передает им параметр, а твой класс Плеер не принимает ничего в методе апдейт, вот тут:
Цитата Сообщение от dastinok Посмотреть сообщение
def update(self):
        self.get_input()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.05.2023, 16:37
Помогаю со студенческими работами здесь

Ошибка TypeError: 'int' object is not subscriptable
Здравствуйте. Решаю следующую задачу: Дан набор из N целых положительных чисел. Для каждого числа вычисляется сумма двух последних цифр в...

Ошибка TypeError: '>=' not supported between instances of 'str' and 'int'
vremya=input('Сколько сейчас время?') if vremya &gt;= 4-00 and vremya &lt;=9-59: print('Доброе утро!') elif vremya &gt;= 10-00 and...

TypeError: 'ImmutableMultiDict' object is not callable Что за ошибка?
Здравствуйте! Скажите, что это за ошибка, и из-за чего может вылетать?)

Выдаётся ошибка: TypeError: 'set' object is not callable
#Путь до файла folder = input('Введите полный путь до файла: ') trash_domens =...

Ошибка: TypeError: an integer is required (got type bytes)
Когда компилировал Python код в .exe вылезла такая ошибка: TypeError: an integer is required (got type bytes), что делать? Вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru