diff --git a/my_game.py b/my_game.py index d29ea50..61c403c 100644 --- a/my_game.py +++ b/my_game.py @@ -11,7 +11,13 @@ 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# 创建一个窗口 screen = pygame.display.set_mode((1000, 600)) FPS = pygame.time.Clock() # pygame时钟,控制游戏速度(帧数) pygame.display.set_caption("悟空酷跑") @@ -32,8 +38,9 @@ jumpState = "runing" t = 30 bg_x=0 road_x=0 -obstacle = Block(bush,cacti,stone) - +gamestate=True +#obstacle = Block(bush,cacti,stone) +block_list=pygame.sprite.Group() while True: for event in pygame.event.get(): @@ -60,27 +67,60 @@ while True: t =30 # 悟空造型 - wukong = hero[index] + wukong = Player(hero[index]) if jumpState == "runing": # 跑步状态下 index += 1 if index >= 5: index = 0 - bg_x-=1 - if bg_x<=-1000: - bg_x=0 + 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 + bg_x-=1 + if bg_x<=-1000: + bg_x=0 # 将背景图画上去 - screen.blit(background, (bg_x, 0)) # 远处背景 - road_x-=8 - if road_x<=-1000: - road_x=0 - screen.blit(road, (road_x, 500)) # 路 - screen.blit(wukong, (150, y)) # 悟空 + screen.blit(background, (bg_x, 0)) # 远处背景 + road_x-=8 + if road_x<=-1000: + road_x=0 + screen.blit(road, (road_x, 500)) # 路 + screen.blit(wukong, (150, y)) # 悟空 - if obstacle.rect.x <= 0-obstacle.rect.width: # 障碍物消失 + if obstacle.rect.x <= 0-obstacle.rect.width: # 障碍物消失 # 创建障碍物对象 - obstacle = Block(bush,stone,cacti) - obstacle.rect.x -= 8 - screen.blit(obstacle.image, (obstacle.rect.x, obstacle.rect.y)) + obstacle = Block(bush,stone,cacti) + obstacle.rect.x -= 8 + obstacle.draw() + time+=1 + if time>=60: + r=random.randint(0,100) + if r>40: + obstacle=Block(bush,cacti,stone) + block_list.add(obstacle) + time=0 + for prop in block_list: + prop.rect.x-=8 + screen.blit(obstacle.image, (obstacle.rect.x, obstacle.rect.y)) + if prop.rect.x<=0-prop.rect.width: + prop.kill() + if pygame.sprite.collide_rect(wukong,sprite): + gameover=pygame.image.load("gameover.png") + screen.blit(gameover,(400,200)) + gamestate=False + print(len(block_list)) # 刷新画面 - pygame.display.update() - FPS.tick(60) \ No newline at end of file + pygame.display.update() + FPS.tick(60) \ No newline at end of file