@proclub

При запуске игры выдает ошибку load_texture() got an unexpected keyword argument 'scale'?

import tkinter
import arcade
import os
 
SPRITE_SCALING = 0.5
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480
SCREEN_TITLE = "Дино"
 
 
# класс с кактусом
class Cactus(arcade.Sprite):
    def update(self):
        self.center_x -= self.change_x
 
 
# класс с игроком
# ЗДЕСЬ МЫ НАСЛЕДУЕМСЯ ОТ ДРУГОГО СПРАЙТА (АНИМИРОВАННОГО)
class Player(arcade.AnimatedTimeSprite):
    def update(self):
        self.center_y += self.change_y
        # уменьшаем change_y, чтобы динозавр прыгал, а не улетал в космос
        self.change_y -= 0.4
 
        # если достиг начального положения, то говорим что прыжок закончен
        if self.center_y <= 180:
            self.is_jump = False
            self.center_y = 180
 
 
class MyGame(arcade.Window):
    def __init__(self, width, height, title):
        super().__init__(width, height, title)
        # чтобы картинки подгружались норм
        file_path = os.path.dirname(os.path.abspath(__file__))
        os.chdir(file_path)
 
        # свойство background для хранения фона
        self.background = None
        # свойство sprites для хранения списка всех спрайтов
        self.sprites = None
 
        # свойство для работы со спрайтом/игроком
        self.player = None
        # свойство для работы со спрайтом/кактусом
        self.cactus = None
 
        # свойство, хранящее счёт
        self.score = 0
 
    def setup(self):
        # подгрузили текстуру для фона
        self.background = arcade.load_texture("img/desert.png")
 
        # объявляем, что здесь у нас будет список из спрайтов
        self.sprites = arcade.SpriteList()
 
        # так как в спрайте будет несколько текстур, то указываем только как они будут масштабироваться
        self.player = Player(scale=SPRITE_SCALING)
        # объявили массив с текстурами
        self.player.textures = []
        # и по очереди добавляем текстуры в этот массив
        self.player.textures.append(arcade.load_texture("img/dino1.png",scale = SPRITE_SCALING))
        self.player.textures.append(arcade.load_texture("img/dino2.png",scale = SPRITE_SCALING))
        self.player.textures.append(arcade.load_texture("img/dino3.png",scale = SPRITE_SCALING))
 
        # начальное положение игрока
        self.player.center_x = 100
        self.player.center_y = 180
        # указали, что в начальном состоянии он не прыгает
        self.player.is_jump = False
        # добавили его в список со спрайтами
        self.sprites.append(self.player)
 
        self.cactus = Cactus("img/cactus2.png", SPRITE_SCALING)
        self.cactus.center_x = SCREEN_WIDTH
        self.cactus.center_y = 180
        self.cactus.change_x = 4
        self.sprites.append(self.cactus)
 
    def on_draw(self):
        arcade.start_render()
        arcade.draw_texture_rectangle(SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2,
                                      SCREEN_WIDTH, SCREEN_HEIGHT, self.background)
        self.sprites.draw()
 
        output = "Score: " + str(self.score)
        arcade.draw_text(output, 60, SCREEN_HEIGHT - 30, arcade.color.BLACK, 20)
 
    def update(self, delta_time):
        # как только кактус правым краем ушел за экран, так увеличиваем счёт и переносим его на другую сторону
        if self.cactus.right <= 0:
            self.score += 1
            self.cactus.left = SCREEN_WIDTH
 
        # проверили на соударение
        if arcade.check_for_collision(self.cactus, self.player):
            self.cactus.stop()
            self.player.stop()
 
        # обновили спрайты и отдельно указали, что обновляем анимацию для анимированного спрайта
        self.sprites.update()
        self.sprites.update_animation()
 
    def on_key_press(self, key, modifiers):
        # проверили что нажата клавиша пробел и что динозавр не прыгает в данный момент
        if key == arcade.key.SPACE and not self.player.is_jump:
            # говорим, что теперь он прыгает
            self.player.is_jump = True
            # указываем насколько быстро он будет лететь вверх
            self.player.change_y = 14
 
 
window = MyGame(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_TITLE)
window.setup()
 
arcade.run()


Exception has occurred: TypeError
load_texture() got an unexpected keyword argument 'scale'
  File "C:\Users\Вероника-Иоанна\Desktop\python\sdfsdfdsfds.py", line 63, in setup
    self.player.textures.append(arcade.load_texture("img/dino1.png",scale = SPRITE_SCALING))
  File "C:\Users\Вероника-Иоанна\Desktop\python\sdfsdfdsfds.py", line 115, in <module>
    window.setup()
  • Вопрос задан
  • 196 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ternick
@Ternick
Стандартная ошибка.
Питон говорит, что ты пытаешься запихнуть в функцию то что она не просит, а конкретно параметр scale.
Вот так по идее должно работать:
self.player.textures.append(arcade.load_texture("img/dino1.png"))# без scale.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы