Ошибка в игре.

CREATIVE

Новичок
Пользователь
Окт 19, 2020
21
0
1
Python 3.8
PyCharm

Вылетает ошибка, когда начинаю стрелять. Подскажите пожалуйста, в чем проблема(Ошибка "TypeError: snaryad() takes no arguments")
import pygame

pygame.init()
win = pygame.display.set_mode((1000, 900))

pygame.display.set_caption("Cubes Game")

walkRight = [pygame.image.load('право1.png'), pygame.image.load('право2.png'), pygame.image.load('право3.png'),
pygame.image.load('право4.png'), pygame.image.load('право5.png'), pygame.image.load('право6.png'),
pygame.image.load('право7.png'), pygame.image.load('право8.png'), pygame.image.load('право9.png'),
pygame.image.load('право10.png')]

walkLeft = [pygame.image.load('лево1.png'), pygame.image.load('лево2.png'), pygame.image.load('лево3.png'),
pygame.image.load('лево4.png'), pygame.image.load('лево5.png'), pygame.image.load('лево6.png'),
pygame.image.load('лево7.png'), pygame.image.load('лево8.png'), pygame.image.load('лево9.png'),
pygame.image.load('лево10.png')]

bg = pygame.image.load("фон.png")
playerStand = pygame.image.load('перед.png')

clock = pygame.time.Clock()

x = 50
y = 780
w = 115
h = 110
speed = 7

isJ = False
jcount = 10

left = False
right = False
animCount = 0
lastMove = "right"

class snaryad():
def __int__(self, x, y, radius, color, facing):
self.x = x
self.y = y
self.radius = radius
self.color = color
self.facing = facing
self.vel = 8 * facing

def draw(self, win):
pygame.draw.circle(win, self.color, (self.x, self.y), self.radius)

def drawWindow():
global animCount
win.blit(bg, (0, 0))

if animCount + 1 >= 30:
animCount = 0

if left:
win.blit(walkLeft[animCount // 3], (x, y))
animCount += 1
elif right:
win.blit(walkRight[animCount // 3], (x, y))
animCount +=1
else:
win.blit(playerStand, (x, y))

for bullet in bullets:
bullet.draw(win)

pygame.display.update()

run = True
bullets = []
while run:
clock.tick(30)

for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False

for bullet in bullets:
if bullet.x < 1000 and bullet.x > 0:
bullet.x += bullet.vel
else:
bullets.pop(bullets.index(bullet))

keys = pygame.key.get_pressed()

if keys[pygame.K_f]:
if lastMove == "right":
facing = 1
else:
facing = -1
if len(bullets) < 5:
bullets.append(snaryad(round(x + w // 2), round(y + h) // 2, 5, (255, 0, 0), facing)) # написано, что тут ошибка

if keys[pygame.K_LEFT] and x > 5:
x -= speed
left = True
right = False
lastMove = "left"
elif keys[pygame.K_RIGHT] and x < 1000 - w - 5:
x += speed
right = True
left = False
lastMove = "right"
else:
left = False
right = False
animCount = 0

if not(isJ):
if keys[pygame.K_UP]:
isJ = True
else:
if jcount >= -10:
if jcount < 0:
y += (jcount ** 2) / 3
else:
y -= (jcount ** 2) / 3
jcount -= 1
else:
isJ = False
jcount = 10

drawWindow()

pygame.quit()
 

serg2a

Новичок
Пользователь
Фев 26, 2021
8
0
1
Python 3.8
PyCharm

Вылетает ошибка, когда начинаю стрелять. Подскажите пожалуйста, в чем проблема(Ошибка "TypeError: snaryad() takes no arguments")
import pygame

pygame.init()
win = pygame.display.set_mode((1000, 900))

pygame.display.set_caption("Cubes Game")

walkRight = [pygame.image.load('право1.png'), pygame.image.load('право2.png'), pygame.image.load('право3.png'),
pygame.image.load('право4.png'), pygame.image.load('право5.png'), pygame.image.load('право6.png'),
pygame.image.load('право7.png'), pygame.image.load('право8.png'), pygame.image.load('право9.png'),
pygame.image.load('право10.png')]
game.display.set_caption("Cubes Game")



walkRigh

walkLeft = [pygame.image.load('лево1.png'), pygame.image.load('лево2.png'), pygame.image.load('лево3.png'),
pygame.image.load('лево4.png'), pygame.image.load('лево5.png'), pygame.image.load('лево6.png'),
pygame.image.load('лево7.png'), pygame.image.load('лево8.png'), pygame.image.load('лево9.png'),
pygame.image.load('лево10.png')]

bg = pygame.image.load("фон.png")
playerStand = pygame.image.load('перед.png')

clock = pygame.time.Clock()

x = 50
y = 780
w = 115
h = 110
speed = 7

isJ = False
jcount = 10

left = False
right = False
animCount = 0
lastMove = "right"

class snaryad():
def __int__(self, x, y, radius, color, facing):
self.x = x
self.y = y
self.radius = radius
self.color = color
self.facing = facing
self.vel = 8 * facing

def draw(self, win):
pygame.draw.circle(win, self.color, (self.x, self.y), self.radius)

def drawWindow():
global animCount
win.blit(bg, (0, 0))

if animCount + 1 >= 30:
animCount = 0

if left:
win.blit(walkLeft[animCount // 3], (x, y))
animCount += 1
elif right:
win.blit(walkRight[animCount // 3], (x, y))
animCount +=1
else:
win.blit(playerStand, (x, y))

for bullet in bullets:
bullet.draw(win)

pygame.display.update()

run = True
bullets = []
while run:
clock.tick(30)

for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False

for bullet in bullets:
if bullet.x < 1000 and bullet.x > 0:
bullet.x += bullet.vel
else:
bullets.pop(bullets.index(bullet))

keys = pygame.key.get_pressed()

if keys[pygame.K_f]:
if lastMove == "right":
facing = 1
else:
facing = -1
if len(bullets) < 5:
bullets.append(snaryad(round(x + w // 2), round(y + h) // 2, 5, (255, 0, 0), facing)) # написано, что тут ошибка

if keys[pygame.K_LEFT] and x > 5:
x -= speed
left = True
right = False
lastMove = "left"
elif keys[pygame.K_RIGHT] and x < 1000 - w - 5:
x += speed
right = True
left = False
lastMove = "right"
else:
left = False
right = False
animCount = 0

if not(isJ):
if keys[pygame.K_UP]:
isJ = True
else:
if jcount >= -10:
if jcount < 0:
y += (jcount ** 2) / 3
else:
y -= (jcount ** 2) / 3
jcount -= 1
else:
isJ = False
jcount = 10

drawWindow()

pygame.quit()

class snaryad():
def __int__(self, x, y, radius, color, facing):

У вас __int__ а нужно __init__
 

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