P
P
proclub2020-04-24 21:46:13
Python
proclub, 2020-04-24 21:46:13

When starting the game, it gives an error 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()

Answer the question

In order to leave comments, you need to log in

1 answer(s)
T
Ternick, 2020-04-25
@Ternick

standard error.
Python says that you are trying to stuff into the function what it does not ask for, but specifically the scale parameter.
This is how it's supposed to work:

self.player.textures.append(arcade.load_texture("img/dino1.png"))# без scale.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question