код видает ошибка при запуске помогите пожалуйста

hmbo077

Новичок
Пользователь
Фев 10, 2022
3
0
1
import pygame
import random

pygame.init()
display_width = 800
display_height = 600
display = pygame.display.set_mode((display_width, display_height))
pygame.display.set_caption('new game')
cactus_img = [pygame.image.load(r'game nev/nkar/Cactus/greenery_2.png'),
pygame.image.load(r'game nev/nkar/Cactus/greenery_3.png'),
pygame.image.load(r'game nev/nkar/Cactus/greenery_5.png')]
cactus_optiopns = [55, 441, 87, 338, 69, 393]
cloud_img = [pygame.image.load(r'game nev/cloud.png'), pygame.image.load(r'game nev/coud1.png')]
stone_img = [pygame.image.load(r'game nev/decor.png'), pygame.image.load(r'game nev/decor1.png')]
class Objects:
def __init__(self, x, y, width, height, image, speed,):
self.x = x
self.y = y
self.width = width
self.height = height
self.image = image
self.speed = speed
def move(self):
if self.x >= self.width:
display.blit(self.image, (self.x, self.y))
self.x -= self.speed
return True
else:
self.x = display_width + 100 + random.randrange(-80, 60)
return False
def return_self(self, radius, y, width, image):
self.x = radius
self.y = y
self.width = width
self.image = image
display.blit(self.image, (self.x, self.y))
usr_width = 60
usr_height = 100
usr_x = display_width // 3
usr_y = display_height - usr_height - 70
cactus_width = 20
cactus_height = 70
cactus_x = display_width - 50
cactus_y = display_height - cactus_height - 100
clock = pygame.time.Clock()
make_jump = False
jump_counter = 30
def run_game():
global make_jump
game = True
cactus_arr = []
create_cactus_arr(cactus_arr)
land = pygame.image.load(r"game nev\bacground (1).jpg")
while game:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
key = pygame.key.get_pressed()
if key[pygame.K_SPACE]:
make_jump = True
if make_jump:
jump()


display.blit(land, (0, 0))
draw_array(cactus_arr)

pygame.draw.rect(display, (240, 240, 20), (usr_x, usr_y, usr_width, usr_height))
pygame.display.update()
clock.tick(60)
def jump():
global usr_y, jump_counter, make_jump
if jump_counter >= -30:
usr_y -= jump_counter / 2.5
jump_counter -= 1
else:
jump_counter = 30
make_jump = False
def create_cactus_arr(array):
choice = random.randrange(0, 3)
img = cactus_img[choice]
width = cactus_optiopns[choice * 2]
height = cactus_optiopns[choice * 2 + 1]
array.append(Objects(display_width + 20, height, width, img, 4))
choice = random.randrange(0, 3)
img = cactus_img[choice]
width = cactus_optiopns[choice * 2]
height = cactus_optiopns[choice * 2 + 1]
array.append(Objects(display_width + 300, height, width, img, 4))
choice = random.randrange(0, 3)
img = cactus_img[choice]
width = cactus_optiopns[choice * 2]
height = cactus_optiopns[choice * 2 + 1]
array.append(Objects(display_width + 600, height, width, img, 4))
def faind_radius(array):
maximum = max(array[0].x, array[1].x, array[2].x)
if maximum < display_width:
radius = display_width
if radius - maximum < 50:
radius += 150
else:
radius = maximum
choice = random.randrange(0, 5)
if choice == 0:
radius += random.randrange(10, 15)
else:
radius += random.randrange(200, 350)
return radius
def draw_array(array):
for cactus in array:
check = cactus.move()
if not check:
radius = faind_radius(array)
choice = random.randrange(0, 3)
img = cactus_img[choice]
width = cactus_optiopns[choice * 2]
height = cactus_optiopns[choice * 2 + 1]
cactus.return_self(radius, height, width, img)
def open_random_objects(cloud):
choice = random.randrange(0, 3)
img_of_stone = stone_img[choice]
choice = random.randrange(0, 3)
img_of_cloud = cloud_img[choice]
run_game()


ошибка
__init__() missing 1 required positional argument: 'speed'
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
можно подробнее
У вас в коде есть класс Objects, у него есть конструктор (метод __init__(self, x, y, width, height, image, speed)).
Он принимает 6 аргументов x, y, width, height, image, speed, вы передаете 5.
Python:
# нужно передать x, y, height, width, image, speed
# а передано видимо x, height, width, img, speed то есть не хватает одного аргумента (видимо y)
array.append(Objects(display_width + 20, height, width, img, 4))
# должно быть что-то вроде такого (добавил y = 100)
array.append(Objects(display_width + 20, 100, height, width, img, 4))
# и в двух других строках, где создается класс Objects такая же ошибка
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Код вставляйте как код, а не как текст (с помощью тегов CODE и с отступами).
__init__() missing 1 required positional argument: 'speed'
В конструктор класса Objects нужно передавать 6 аргументов, последний из которых это speed, а вы в коде передаете только 5.
Чтобы исправить нужно передать 6 аргументов в этих строках:
Python:
array.append(Objects(display_width + 20, height, width, img, 4))
...
array.append(Objects(display_width + 300, height, width, img, 4))
...
array.append(Objects(display_width + 600, height, width, img, 4))
 

hmbo077

Новичок
Пользователь
Фев 10, 2022
3
0
1
Код вставляйте как код, а не как текст (с помощью тегов CODE и с отступами).

В конструктор класса Objects нужно передавать 6 аргументов, последний из которых это speed, а вы в коде передаете только 5.
Чтобы исправить нужно передать 6 аргументов в этих строках:
Python:
array.append(Objects(display_width + 20, height, width, img, 4))
...
array.append(Objects(display_width + 300, height, width, img, 4))
...
array.append(Objects(display_width + 600, height, width, img, 4))
можно подробнее
 

hmbo077

Новичок
Пользователь
Фев 10, 2022
3
0
1
У вас в коде есть класс Objects, у него есть конструктор (метод __init__(self, x, y, width, height, image, speed)).
Он принимает 6 аргументов x, y, width, height, image, speed, вы передаете 5.
Python:
# нужно передать x, y, height, width, image, speed
# а передано видимо x, height, width, img, speed то есть не хватает одного аргумента (видимо y)
array.append(Objects(display_width + 20, height, width, img, 4))
# должно быть что-то вроде такого (добавил y = 100)
array.append(Objects(display_width + 20, 100, height, width, img, 4))
# и в двух других строках, где создается класс Objects такая же ошибка
СПАСИБО ВАМ БОЛЬШОЕ
 

Форум IT Специалистов