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()
另外,我测试分数是否上升的方法是,在我的原始代码中,分数显示在屏幕上。我还把它打印到控制台上。
为了证明这不是我糟糕的节奏游戏技能,我按住一个键一段时间(现在它只是向左向右)
我已经运行了我的代码好几次,试图找到它的问题,但我找不到它
如有任何解释,将不胜感激
谢谢:)是未来的我!我是如何解决的,我补充道