From cea6ab923c0c247c36d13a83eb48abb47aed35bc Mon Sep 17 00:00:00 2001
From: BellCodeEditor <bellcode_dev@bell.ai>
Date: Sat, 22 Jan 2022 16:31:50 +0800
Subject: [PATCH] save project

---
 my_game.py | 141 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------
 1 file changed, 72 insertions(+), 69 deletions(-)

diff --git a/my_game.py b/my_game.py
index cd63944..726fbd0 100644
--- a/my_game.py
+++ b/my_game.py
@@ -6,96 +6,99 @@ pygame.init()  # 初始化
 # 创建一个窗口
 screen = pygame.display.set_mode((1000, 600))
 FPS = pygame.time.Clock()  # pygame时钟,控制游戏速度(帧数)
-pygame.display.set_caption("悟空酷跑")
 # 载入图片
 background = pygame.image.load('bg.png')    # 背景
 road = pygame.image.load('road.png')      # 路
 stone = pygame.image.load('stone.png')      # 石头
 cacti = pygame.image.load('cacti.png')      # 仙人掌
-bush = pygame.image.load('bush.png')      # 灌木丛
-hero = [pygame.image.load('hero1.png'),
-        pygame.image.load('hero2.png'),
-        pygame.image.load('hero3.png'),
-        pygame.image.load('hero4.png'),
-        pygame.image.load('hero5.png')]
+apple = pygame.image.load('bush.png')      # 灌木丛
+gameover = pygame.image.load('gameover.png')
 
-#构建的精灵类,继承自Sprite类,主要用于后续做碰撞体积检测
 class Block(pygame.sprite.Sprite):
     def __init__(self,image1,image2,image3):
+        super().__init__()
         self.image = random.choice([image1,image2,image3])
         self.rect = self.image.get_rect()
         self.rect.x = 1000
         self.rect.y = 500 - self.rect.height
 
-obstacle = Block(bush, stone, cacti)
+class WuKong(pygame.sprite.Sprite):
+    def __init__(self,wukong_img):
+        self.image = wukong_img
+        self.rect = self.image.get_rect()
+        self.rect.x = 150
+        self.rect.y = 400
 
-index = 0   
-y = 400
-jumpState = "runing" #悟空状态  分为:running  up  down
-t = 30   #跳跃速度
+list_group = pygame.sprite.Group()
 
-# obstacle = random.choice([bush, stone, cacti])  #产生障碍物
-# rect = obstacle.get_rect()
-# rect.x = 1000
-# rect.y = 500 - rect.height
+# 关卡1 实现悟空跑步效果
+# 逻辑:绘制图画时,不断切换悟空图片
+hero = [pygame.image.load('hero1.png'),pygame.image.load('hero2.png'),pygame.image.load('hero3.png')
+,pygame.image.load('hero4.png'),pygame.image.load('hero5.png')]       #加载悟空图片
+index = 0 
+jumpStatus = 'running'
+
+wukong = WuKong(hero[index])
+t = 30
 
-road_x = 0
 background_x = 0
+road_x = 0
+
+gameState = 1
+
 time = 0
 while True:
+    if background_x < -1000:
+        background_x = 0
+    if road_x < -1000:
+        road_x = 0
     for event in pygame.event.get():
         if event.type == locals.QUIT:
             # 接收到退出事件后退出程序
             exit()
-        if event.type == locals.KEYDOWN:
-            if jumpState == "runing":
-                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]
-    if jumpState == "runing":       # 跑步状态下
-        index += 1
-        if index >= 5:
-            index = 0
-    # 将背景图画上去
-    road_x -= 8
-    background_x -= 5
-    if road_x <= -1000:
-        road_x = 0
-    if background_x <= -1000:
-        background_x = 0
-    screen.blit(background, (background_x, 0))     # 远处背景
-    screen.blit(road, (road_x, 500))     # 路
-    screen.blit(wukong, (150, y))     # 悟空
-
-    time += 1
-    if time >= 60:
-        time = 0
-        num = random.randint(0,50)
-        if num > 20:
-            obstacle = Block(bush, cacti, stone)
-            list
-          # 障碍物消失
-        # 创建障碍物对象
-        obstacle = Block(bush, cacti, stone)
+        if event.type == locals.KEYDOWN and jumpStatus == 'running': #键盘按下
+            if event.key == locals.K_SPACE:
+                jumpStatus = 'up'
+    if gameState  == 1:
+        if jumpStatus == 'up':
+            if t>0:
+                wukong.rect.y -= t
+                t -= 2
+            else:
+                jumpStatus = 'down'
+        if jumpStatus == 'down':
+            if t<=30:
+                wukong.rect.y += t
+                t += 2
+            else:
+                jumpStatus = 'running'
+                t = 30
+        if jumpStatus == 'running':
+            index += 1
+            if index == 5:
+                index = 0
 
-    obstacle.rect.x -= 8
-    screen.blit(obstacle.image, (obstacle.rect.x, obstacle.rect.y)) 
-    # 刷新画面
-    pygame.display.update()
-    FPS.tick(30)
\ No newline at end of file
+        background_x -= 5
+        road_x -= 8
+        # 将背景图画上去
+        screen.blit(background, (background_x, 0))
+        screen.blit(road, (road_x, 500))
+        screen.blit(hero[index], (150, wukong.rect.y))       #绘制悟空
+        time += 1
+        if time >= 60:
+            time = 0
+            num = random.randint(0,60)
+            if num>30:
+                obstacle = Block(stone,cacti,apple)
+                list_group.add(obstacle)
+        for temp in list_group:
+            temp.rect.x -= 8
+            screen.blit(temp.image, (temp.rect.x, temp.rect.y))
+            if(pygame.sprite.collide_rect(wukong,temp)):
+                screen.blit(gameover, (350, 200))
+                gameState = 0
+            if temp.rect.x < 0 - temp.rect.width:
+                temp.kill()
+        # 刷新画面
+        pygame.display.update()
+        FPS.tick(60)
\ No newline at end of file
--
libgit2 0.25.0