Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 27, 2019 18:44:57

Rimot
Зарегистрирован: 2019-11-27
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Игра. По нажатию на клавишу 'f' Трамп должен стрелять

Можете исправить пожалуйста мою ошибку

 import pygame
pygame.init()
win = pygame.display.set_mode((500, 500))
pygame.display.set_caption("Cubes Game")
walkLeft = [pygame.image.load('pygame_left_1.png'),
pygame.image.load('pygame_left_2.png'), pygame.image.load('pygame_left_3.png'),
pygame.image.load('pygame_left_4.png'), pygame.image.load('pygame_left_5.png'), pygame.image.load('pygame_left_6.png')]
walkRight = [pygame.image.load('pygame_right_1.png'),
pygame.image.load('pygame_right_2.png'), pygame.image.load('pygame_right_3.png'),
pygame.image.load('pygame_right_4.png'), pygame.image.load('pygame_right_5.png'), pygame.image.load('pygame_right_6.png')]
bg = pygame.image.load('bg.jpg')
playerStand = pygame.image.load('pygame_idle.png')
clock = pygame.time.Clock()
x = 50
y = 425
wight = 60
height = 71
speed = 5
isJump = False
jumpCount = 10
left = False
right = False
animCount = 0
lastMove = "right"
class snaryad():
    def __init__(self, x, y, radius, color, facing):
        self.x = x
        self.y = y
        self.radius = radius
        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 // 5], (x, y))
        animCount += 1
    elif right:
        win.blit(walkRight[animCount // 5], (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 < 500 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 + wight // 2), round(y + height // 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 < 500 - wight - 5:
        x += speed
        right = True
        left = False
        lastMove = "right"
    else:
        left = False
        right = False
        animCount = 0
    if not(isJump):
        if keys[pygame.K_UP]:
            isJump = True
    else:
        if jumpCount >= -10:
            if jumpCount < 0:
                y += (jumpCount ** 2) / 2
            else:
                y -= (jumpCount ** 2) / 2
            jumpCount -= 1
        else:
            isJump = False
            jumpCount = 10
    drawWindow()
pygame.quit()
Вот ссылку на яндекс диск для пикчей: https://yadi.sk/d/dpHM–zPsVqeqA
ну или тут https://itproger.com/course/pygame/4

Отредактировано Rimot (Ноя. 27, 2019 18:50:07)

Офлайн

#2 Ноя. 28, 2019 12:56:29

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Игра. По нажатию на клавишу 'f' Трамп должен стрелять

Rimot
Можете исправить пожалуйста мою ошибку
оно же вам английским по белому пишет
AttributeError: ‘snaryad’ object has no attribute ‘draw’
исправте
 class snaryad():
    def __init__(self, x, y, radius, color, facing):
.....
        self.vel = 8 * facing
        self.color = color  #add it
    def draw(self, win):    # add indent
        pygame.draw.circle(win, self.color, (self.x, self.y), self.radius) # add indent
...



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version