diff --git a/my_game.py b/my_game.py index cffc540..c736281 100644 --- a/my_game.py +++ b/my_game.py @@ -9,6 +9,14 @@ class Block(pygame.sprite.Sprite): self.rect=self.image.get_rect() self.rect.x=1000 self.rect.y=500-self.rect.height + +class Player(pygame.sprite.Sprite): + def __init__(self,image): + super().__init__() + self.image=image + self.rect=self.image.get_rect() + self.rect.x=150 + self.rect.y=400 pygame.init() # 初始化 # 创建一个窗口 screen = pygame.display.set_mode((1000, 600)) @@ -32,6 +40,8 @@ y = 400 jumpState = "runing" t = 30 time=0 +gamestate=True + block_list=pygame.sprite.Group() while True: for event in pygame.event.get(): @@ -43,49 +53,58 @@ while True: if event.key == locals.K_SPACE: jumpState = "up" - if jumpState == "up": # 起跳状态 - if t > 0: - y -= t - t -= 2 - else: - jumpState = "down" - if jumpState == "down": # 降落状态 - if t <= 30: - y += t - t += 2 - else: - jumpState = "runing" - t =30 - # 悟空造型 - wukong = hero[index] + wukong =Player(hero[index]) if jumpState == "runing": # 跑步状态下 index += 1 if index >= 5: index = 0 - # 将背景图画上去 - shan_x -=2 - if shan_x <-1000: - shan_x=0 - screen.blit(background, (shan_x, 0)) # 远处背景 - lu_x -=8 - if lu_x <-1000: - lu_x=0 - screen.blit(road, (lu_x, 500)) # 路 - screen.blit(wukong, (150, y)) # 悟空 + + if gamestate==True: + if jumpState == "up": # 起跳状态 + if t > 0: + y -= t + wukong.rect.y=y + t -= 2 + else: + jumpState = "down" + if jumpState == "down": # 降落状态 + if t <= 30: + y += t + wukong.rect.y=y + t += 2 + else: + jumpState = "runing" + t =30 + + + # 将背景图画上去 + shan_x -=2 + if shan_x <-1000: + shan_x=0 + screen.blit(background, (shan_x, 0)) # 远处背景 + lu_x -=8 + if lu_x <-1000: + lu_x=0 + screen.blit(road, (lu_x, 500)) # 路 + screen.blit(wukong.image, (150, y)) # 悟空 - time+=1 - if time>=60: - time=0 - num=random.randint(0,50) - if num>20: - aa=Block(bush,cacti,stone) - block_list.add(aa) - for sprite in block_list: - sprite.rect.x-=8 - screen.blit(sprite.image, (sprite.rect.x, sprite.rect.y)) - if sprite.rect.x<=0-sprite.rect.width: - sprite.kill() - # 刷新画面 - pygame.display.update() - FPS.tick(60) \ No newline at end of file + time+=1 + if time>=60: + time=0 + num=random.randint(0,50) + if num>20: + aa=Block(bush,cacti,stone) + block_list.add(aa) + for sprite in block_list: + sprite.rect.x-=8 + screen.blit(sprite.image, (sprite.rect.x, sprite.rect.y)) + if sprite.rect.x<=0-sprite.rect.width: + sprite.kill() + if pygame.sprite.collide_rect(wukong,sprite): + gameover=pygame.image.load('gameover.png') + screen.blit(gameover,(400,200)) + gamestate=False + # 刷新画面 + pygame.display.update() + FPS.tick(60) \ No newline at end of file