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()