Python Pygame-此游戏获胜';不要加分

Python Pygame-此游戏获胜';不要加分,python,pygame,Python,Pygame,我正在做一个节奏游戏。 当一个“节拍”(箭头)击中某个坐标时,它就会消失。 如果按下相应的键,游戏将增加玩家的分数 但当我运行代码时,它不会增加分数 这是我的密码: import pygame import time import itertools pygame.init() SCREENWIDTH = 1000 SCREENHEIGHT = 650 screen = pygame.display.set_mode([SCREENWIDTH, SCREENHEIGHT]) screen.fi

我正在做一个节奏游戏。 当一个“节拍”(箭头)击中某个坐标时,它就会消失。 如果按下相应的键,游戏将增加玩家的分数

但当我运行代码时,它不会增加分数

这是我的密码:

import pygame
import time
import itertools

pygame.init()
SCREENWIDTH = 1000
SCREENHEIGHT = 650
screen = pygame.display.set_mode([SCREENWIDTH, SCREENHEIGHT])
screen.fill((255, 123, 67))
pygame.draw.rect(screen, (0, 255, 188), (0, 50, 1000, 650), 0)
myfont = pygame.font.SysFont('Ink Free', 30)

background = screen.copy()
clock = pygame.time.Clock()
stageon = True

sprites = pygame.sprite.Group()
class Player(pygame.sprite.Sprite):
    sprite = pygame.image.load("Sprites/lee.png")

    def __init__(self, *groups):
        super().__init__(*groups)
        self.image = Player.sprite
        self.rect = self.image.get_rect(topleft=(445, 550))
        self.pos = pygame.Vector2(self.rect.topleft)
        self.score = 0
    def update(self):
        key = pygame.key.get_pressed()
        dist = 3
        if key[pygame.K_DOWN]:
            self.rect.y += dist
        elif key[pygame.K_UP]:
            self.rect.y -= dist
        if key[pygame.K_RIGHT]:
            self.rect.x += dist
        elif key[pygame.K_LEFT]:
            self.rect.x -= dist

player = Player(sprites)

beatgroup = pygame.sprite.Group()
class Beat(pygame.sprite.Sprite):
    def __init__(self, ticks, image):
        super().__init__(beatgroup)
        self.image = image
        self.rect = self.image.get_rect()
        self.pos = pygame.Vector2(730, 100)
        self.path = itertools.cycle(((730, 100), (850, 100),))
        self.next_point = pygame.Vector2(next(self.path))
        self.speed = 2
        self.ticks = 200

    def update(self):
        move = self.next_point - self.pos
        move_length = move.length()
        if move_length != 0:
            move.normalize_ip()
            move = move * self.speed
            self.pos += move
        key = pygame.key.get_pressed()
        if self.pos == (850, 100):
            self.kill()

        #here's the problem area   
        if self.pos == (850, 100) and  key[pygame.K_DOWN] and self.image == pygame.image.load("Sprites/down.png"):
            player.score += 10
        elif self.pos == (850, 100) and key[pygame.K_UP] and self.image == pygame.image.load("Sprites/up.png"):
            player.score += 10
        elif self.pos == (850, 100) and key[pygame.K_LEFT] and self.image == pygame.image.load("Sprites/left.png"):
            player.score += 10
        elif self.pos == (850, 100) and key[pygame.K_RIGHT] and self.image == pygame.image.load("Sprites/right.png"):
            player.score += 10

        if move.length() == 0 or move_length < self.speed:
            self.next_point = pygame.Vector2(next(self.path))

        self.rect.topleft = self.pos



class Beat_gen(pygame.sprite.Sprite):
    def __init__(self, order):
        super().__init__(beatgroup)
        self.image = pygame.image.load("Sprites/beat_cropped.png")
        self.rect = self.image.get_rect(topleft=(730, 100))
        self.start_time = pygame.time.get_ticks()
        print(self.start_time)
        self.order = []
        self.picorder = []
        for i in order:
            self.order.append(i[0])
            self.picorder.append(i[1])
        self.currentbeat = 0
        self.LastBeat = 0
    def update(self):
        if self.currentbeat == len(self.order):
                stageon = False
        else:
            time_gone = pygame.time.get_ticks() - self.start_time
            if time_gone >= self.order[self.currentbeat] or self.currentbeat == 0:
                self.start_time = pygame.time.get_ticks()
                Beat(self.order[self.currentbeat], self.picorder[self.currentbeat])
                self.currentbeat += 1
                self.LastBeat = pygame.time.get_ticks()

class Hit_Line(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__(beatgroup)
        self.image = pygame.image.load("Sprites/hit-line.png")
        self.rect = self.image.get_rect(topleft=(873, 60))
        def update(self):
            self.image.draw()


beatgen = Beat_gen([(820, pygame.image.load("Sprites/left.png")), (410, pygame.image.load("Sprites/right.png")),(410, pygame.image.load("Sprites/left.png")),
                    (410, pygame.image.load("Sprites/right.png")),(410, pygame.image.load("Sprites/left.png")), (410, pygame.image.load("Sprites/right.png")),
                    (410, pygame.image.load("Sprites/left.png")), (410, pygame.image.load("Sprites/right.png")),(410, pygame.image.load("Sprites/left.png")),
                    (410, pygame.image.load("Sprites/right.png")),(410, pygame.image.load("Sprites/left.png")), (410, pygame.image.load("Sprites/right.png")),
                    (410, pygame.image.load("Sprites/left.png")), (410, pygame.image.load("Sprites/right.png")),(410, pygame.image.load("Sprites/left.png")),
                    (410, pygame.image.load("Sprites/right.png"))])

def main():
    while stageon:
        for events in pygame.event.get():
            if events.type == pygame.QUIT: 
                pygame.quit()
                return


        sprites.update()
        beatgroup.update()
        screen.blit(background, (0, 0))
        sprites.draw(screen)
        beatgroup.draw(screen)
        pygame.display.update()

        clock.tick(100)

if __name__ == '__main__':
    main()
导入pygame
导入时间
进口itertools
pygame.init()
屏幕宽度=1000
屏幕高度=650
screen=pygame.display.set_模式([屏幕宽度,屏幕高度])
屏幕填充((255、123、67))
pygame.draw.rect(屏幕,(0,255,188),(0,50,1000,650),0)
myfont=pygame.font.SysFont('无墨水',30)
background=screen.copy()
clock=pygame.time.clock()
stageon=True
sprites=pygame.sprite.Group()
职业玩家(pygame.sprite.sprite):
sprite=pygame.image.load(“Sprites/lee.png”)
定义初始化(自我,*组):
超级()
self.image=Player.sprite
self.rect=self.image.get_rect(左上方=(44550))
self.pos=pygame.Vector2(self.rect.topleft)
self.score=0
def更新(自我):
key=pygame.key.get_pressed()
距离=3
如果键[pygame.K_DOWN]:
自校正y+=距离
elif key[pygame.K_UP]:
自整y-=距离
如果键[pygame.K_RIGHT]:
self.rect.x+=dist
elif键[pygame.K_左]:
自校正x-=距离
玩家=玩家(精灵)
beatgroup=pygame.sprite.Group()
班级节拍(pygame.sprite.sprite):
定义初始化(自身、记号、图像):
super().\uuuu init\uuuu(beatgroup)
self.image=image
self.rect=self.image.get_rect()
self.pos=pygame.Vector2(730100)
self.path=itertools.cycle(((730100),(850,100),)
self.next_point=pygame.Vector2(next(self.path))
自身速度=2
self.ticks=200
def更新(自我):
移动=self.next_点-self.pos
move_length=move.length()
如果移动长度!=0:
move.normalize_ip()
移动=移动*自身速度
self.pos+=移动
key=pygame.key.get_pressed()
如果self.pos==(850,100):
self.kill()
#这就是问题所在
如果self.pos==(850100)并输入[pygame.K_DOWN]和self.image==pygame.image.load(“Sprites/DOWN.png”):
球员得分+=10
elif self.pos==(850100)和键[pygame.K_UP]和self.image==pygame.image.load(“Sprites/UP.png”):
球员得分+=10
elif self.pos==(850100)和键[pygame.K_LEFT]和self.image==pygame.image.load(“Sprites/LEFT.png”):
球员得分+=10
elif self.pos==(850100)和键[pygame.K_RIGHT]和self.image==pygame.image.load(“Sprites/RIGHT.png”):
球员得分+=10
如果move.length()==0或move_length=self.order[self.currentbeat]或self.currentbeat==0:
self.start\u time=pygame.time.get\u ticks()
拍(self.order[self.currentbeat],self.picorder[self.currentbeat])
self.currentbeat+=1
self.LastBeat=pygame.time.get_ticks()
类命中线(pygame.sprite.sprite):
定义初始化(自):
super().\uuuu init\uuuu(beatgroup)
self.image=pygame.image.load(“Sprites/hit-line.png”)
self.rect=self.image.get_rect(左上方=(873,60))
def更新(自我):
self.image.draw()
beatgen=Beat_gen([(820,pygame.image.load(“Sprites/left.png”)),(410,pygame.image.load(“Sprites/left.png”),(410,pygame.image.load(“Sprites/left.png”),
(410,pygame.image.load(“Sprites/right.png”),(410,pygame.image.load(“Sprites/left.png”),(410,pygame.image.load(“Sprites/right.png”),
(410,pygame.image.load(“Sprites/left.png”),(410,pygame.image.load(“Sprites/right.png”),(410,pygame.image.load(“Sprites/left.png”),
(410,pygame.image.load(“Sprites/right.png”),(410,pygame.image.load(“Sprites/left.png”),(410,pygame.image.load(“Sprites/right.png”),
(410,pygame.image.load(“Sprites/left.png”),(410,pygame.image.load(“Sprites/right.png”),(410,pygame.image.load(“Sprites/left.png”),
(410,pygame.image.load(“Sprites/right.png”))
def main():
在舞台上:
对于pygame.event.get()中的事件:
如果events.type==pygame.QUIT:
pygame.quit()
返回
sprites.update()
beatgroup.update()
屏幕光点(背景,(0,0))
精灵。绘制(屏幕)
beatgroup.draw(屏幕)
pygame.display.update()
时钟滴答(100)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
main()
另外,我测试分数是否上升的方法是,在我的原始代码中,分数显示在屏幕上。我还把它打印到控制台上。 为了证明这不是我糟糕的节奏游戏技能,我按住一个键一段时间(现在它只是向左向右)

我已经运行了我的代码好几次,试图找到它的问题,但我找不到它

如有任何解释,将不胜感激


谢谢:)

是未来的我!我是如何解决的,我补充道