我的pygame无法正常工作,但一切似乎都很好

时间:2019-09-28 12:49:39

标签: python-3.x pygame

一切似乎都很好,但是我的计算机发现我的语法无效,并且标记了冒号(:)。 代码:

if keys[pygame.K_RIGHT] and man.x < 500 - man.width: # <- here he marks this colon
        man.x = man.x + man.vel
        man.right = True
        man.left = False
        man.standing = False

完整代码:

import pygame
pygame.init()

cl = pygame.time.Clock()

lefty = [pygame.image.load('Game/L1.png'),pygame.image.load('Game/L2.png'),pygame.image.load('Game/L3.png'),pygame.image.load('Game/L4.png'),pygame.image.load('Game\L5.png'),pygame.image.load('Game/L6.png'),pygame.image.load('Game/L7.png'),pygame.image.load('Game/L8.png'),pygame.image.load('Game/L9.png')]
righty = [pygame.image.load('Game/R1.png'),pygame.image.load('Game/R2.png'),pygame.image.load('Game/R3.png'),pygame.image.load('Game/R4.png'),pygame.image.load('Game/R5.png'),pygame.image.load('Game/R6.png'),pygame.image.load('Game/R7.png'),pygame.image.load('Game/R8.png'),pygame.image.load('Game/R9.png')]
gr = pygame.image.load('Game/bg.jpg')
st = pygame.image.load('Game/standing.png')

win = pygame.display.set_mode((500,480))
name = pygame.display.set_caption("photo game")

class player(object):
    def __init__(self, x, y, width, height):
        self.jumpCount = 10
        self.jump=False
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.vel = 5
        self.left = False
        self.right = False
        self.walkCount= 0
        self.standing = True

    def draw(self,win):
        if self.walkCount+1>=27:
            self.walkCount=0
        if not(self.standing):
            if self.left:
                win.blit(lefty[self.walkCount//3],(self.x,self.y))
                self.walkCount +=1
            elif self.right:
                win.blit(righty[self.walkCount//3],(self.x,self.y))
                self.walkCount +=1
        else:
            if self.right:
                win.blit(righty[0], (self.x, self.y))
            else:
                win.blit(lefty[0], (self.x, self.y))

class projectiles(object):
    def __init__(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(win, self):
        pygame.draw.radius(win, self.color, (self.x, self.y), self.radius, self.facing)

def redrawchar():
    win.blit(gr,(0,0))
    man.draw(win)
    for bullet in bullets:
        bullet.draw(win)
    pygame.display.update()

man = player(50, 420, 62, 62)
while True:
    cl.tick(27)
    bullets = []

    for events in pygame.event.get():
        if events.type == pygame.QUIT:
            break

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

    for events in pygame.event.get():
        if events.type == pygame.QUIT:
            break

    keys = pygame.key.get_pressed()
    if keys[pygame.K_c]:
        if man.right:
            facing=1
        else:
            facing = -1
        if len(bullets) < 5:
            bullets.append(projectiles((round(man.x + man.weight //2)), (round(man.y + man.height //2)), 6, (0,0,0), facing)

    if keys[pygame.K_RIGHT] and man.x < 500 - man.width: #here is that error
        man.x = man.x + man.vel
        man.right = True
        man.left = False
        man.standing = False

    elif keys[pygame.K_LEFT] and man.x > man.vel-5-5:
        man.x-=man.vel
        man.left = True
        man.right = False
        man.standing = False

    else:
        man.standing = True
        man.walkCount=0
    if not(man.jump):
        if keys[pygame.K_SPACE]:
            man.jump = True
            man.right = False
            man.left = False
            man.walkCount=0
    else:
        if man.jumpCount>=-10:
            man.y -= (man.jumpCount*abs(man.jumpCount)) *0.5
            man.jumpCount -=1
        else:
            man.jumpCount = 10
            man.jump = False

    redrawchar()
pygame.quit()

我试图将500-man.width放在(500-man.width)之类的括号中,但是它不起作用。

有人可以帮忙吗?

我正在py 3.7中工作,一切正常,似乎是正确的。但是为什么我的计算机由于某种原因不喜欢该冒号(:)?

有人知道为什么吗?

1 个答案:

答案 0 :(得分:1)

语法错误不是由以下行引起的:

  
if keys[pygame.K_RIGHT] and man.x < 500 - man.width:

此行在语法上是正确的。是该行之前的行,导致错误:

  
if len(bullets) < 5:
   bullets.append(projectiles((round(man.x + man.weight //2)), (round(man.y + man.height //2)), 6, (0,0,0), facing)

在对bullets.append的呼叫结束时,缺少右括号)。这会在下一行中引起语法错误,因为后续标记是意外的。