From 5564a51e7476b99f1bb6bddd4de373835dd06e05 Mon Sep 17 00:00:00 2001
From: BellCodeEditor <bellcode_dev@bell.ai>
Date: Sat, 2 Jan 2021 16:33:59 +0800
Subject: [PATCH] save project

---
 STKAITI.TTF  | Bin 0 -> 12736196 bytes
 bg.png       | Bin 0 -> 204719 bytes
 bush.png     | Bin 0 -> 14869 bytes
 cacti.png    | Bin 0 -> 5718 bytes
 gameover.png | Bin 0 -> 49729 bytes
 hero1.png    | Bin 0 -> 12662 bytes
 hero2.png    | Bin 0 -> 11134 bytes
 hero3.png    | Bin 0 -> 11546 bytes
 hero4.png    | Bin 0 -> 11737 bytes
 hero5.png    | Bin 0 -> 12149 bytes
 my_game.py   | 155 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 record.txt   |   1 +
 road.png     | Bin 0 -> 35577 bytes
 score.wav    | Bin 0 -> 177486 bytes
 stone.png    | Bin 0 -> 11542 bytes
 15 files changed, 156 insertions(+)
 create mode 100644 STKAITI.TTF
 create mode 100644 bg.png
 create mode 100644 bush.png
 create mode 100644 cacti.png
 create mode 100644 gameover.png
 create mode 100644 hero1.png
 create mode 100644 hero2.png
 create mode 100644 hero3.png
 create mode 100644 hero4.png
 create mode 100644 hero5.png
 create mode 100644 my_game.py
 create mode 100644 record.txt
 create mode 100644 road.png
 create mode 100644 score.wav
 create mode 100644 stone.png

diff --git a/STKAITI.TTF b/STKAITI.TTF
new file mode 100644
index 0000000..5044116
Binary files /dev/null and b/STKAITI.TTF differ
diff --git a/bg.png b/bg.png
new file mode 100644
index 0000000..662f787
Binary files /dev/null and b/bg.png differ
diff --git a/bush.png b/bush.png
new file mode 100644
index 0000000..6c34bd7
Binary files /dev/null and b/bush.png differ
diff --git a/cacti.png b/cacti.png
new file mode 100644
index 0000000..8948716
Binary files /dev/null and b/cacti.png differ
diff --git a/gameover.png b/gameover.png
new file mode 100644
index 0000000..be7c4ca
Binary files /dev/null and b/gameover.png differ
diff --git a/hero1.png b/hero1.png
new file mode 100644
index 0000000..3186839
Binary files /dev/null and b/hero1.png differ
diff --git a/hero2.png b/hero2.png
new file mode 100644
index 0000000..57df460
Binary files /dev/null and b/hero2.png differ
diff --git a/hero3.png b/hero3.png
new file mode 100644
index 0000000..8106fa1
Binary files /dev/null and b/hero3.png differ
diff --git a/hero4.png b/hero4.png
new file mode 100644
index 0000000..11317cf
Binary files /dev/null and b/hero4.png differ
diff --git a/hero5.png b/hero5.png
new file mode 100644
index 0000000..cc205f2
Binary files /dev/null and b/hero5.png differ
diff --git a/my_game.py b/my_game.py
new file mode 100644
index 0000000..ef0bf94
--- /dev/null
+++ b/my_game.py
@@ -0,0 +1,155 @@
+import pygame
+from pygame import locals
+import random
+import json
+pygame.init()  # 初始化
+
+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
+        self.score = 1
+
+class Player(pygame.sprite.Sprite):     # 悟空
+    def __init__(self, image):
+        super().__init__()
+        # 加载悟空精灵图像
+        self.image = image
+        # image的get_rect()方法,可以返回pygame.Rect(0,0,图像宽,图像高)的对象
+        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("悟空酷跑")
+# 载入图片
+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')]
+coin = pygame.mixer.Sound('score.wav')
+index = 0   
+y = 400
+jumpState = "runing"
+t = 35
+road_x = 0
+bg_x = 0
+time = 0
+gamestate = True
+speed = 8
+block_list =pygame.sprite.Group()   # 创建精灵组
+score = 0 #分数
+scorefont = pygame.font.Font('STKAITI.TTF',20)
+old_score=score
+with open('record.txt','r',encoding='utf-8') as f:
+    content=f.read()
+    record=json.loads(content)
+    one=record["第1名"]
+    two=record["第2名"]
+    three=record["第3名"]
+while True:
+    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"
+    
+    # 悟空造型
+    wukong = Player(hero[index])
+    if jumpState == "runing":       # 跑步状态下
+        index += 1
+        if index >= 5:
+            index = 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 <= 35:
+                y += t
+                wukong.rect.y = y
+                t += 2
+            else:
+                jumpState = "runing"
+                t =35
+        # 将背景图画上去
+        bg_x -= 1
+        if bg_x<=-1000:
+            bg_x = 0
+        screen.blit(background, (bg_x, 0))      # 远景
+
+        road_x -=speed
+        if road_x<=-1000:
+            road_x = 0
+        screen.blit(road, (road_x, 500))       # 道路
+
+        screen.blit(wukong.image, (150, y))     # 悟空
+
+        time += 1
+        if time >= 60:      # 创建障碍物精灵
+            time = 0
+            num = random.randint(0,50)
+            if num > 20:
+                obstacle = Block(bush,cacti,stone)  
+                block_list.add(obstacle)
+        for sprite in block_list:       # 遍历、展示障碍物精灵
+            sprite.rect.x -= speed
+            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
+                if score>one:
+                    record["第1名"]=score
+                    record["第2名"]=one
+                    record["第3名"]=two
+                elif score>two:
+                    record["第2名"]=score
+                    record["第3名"]=two
+                else:
+                    record["第3名"]=score
+                record=json.dumps(record,ensure_ascii=False)
+                with open("record.txt","w",encoding="utf-8") as s:
+                    s.write(record)
+            else:
+                if (sprite.rect.x + sprite.rect.width) < wukong.rect.x:    #越过障碍
+                    score += sprite.score
+                    sprite.score = 0
+                    speed+=score//3
+        if score>old_score:
+            coin.play()
+        scoreFont=scorefont.render("分数:"+str(score),True,(255,255,255))
+        screen.blit(scoreFont,(880,20))
+        screenSurf = scorefont.render("第1名:"+str(one),True,(255,255,255))
+        screen.blit(screenSurf,(800,50))
+        screenSurf = scorefont.render("第2名:"+str(two),True,(255,255,255))
+        screen.blit(screenSurf,(800,80))
+        screenSurf = scorefont.render("第3名:"+str(three),True,(255,255,255))
+        screen.blit(screenSurf,(800,110))
+        # 刷新画面,
+        pygame.display.update()
+        FPS.tick(60)
\ No newline at end of file
diff --git a/record.txt b/record.txt
new file mode 100644
index 0000000..8c4e657
--- /dev/null
+++ b/record.txt
@@ -0,0 +1 @@
+{"第1名": 1, "第2名": 0, "第3名": 0}
\ No newline at end of file
diff --git a/road.png b/road.png
new file mode 100644
index 0000000..ba258f4
Binary files /dev/null and b/road.png differ
diff --git a/score.wav b/score.wav
new file mode 100644
index 0000000..7f9b293
Binary files /dev/null and b/score.wav differ
diff --git a/stone.png b/stone.png
new file mode 100644
index 0000000..7c17fd2
Binary files /dev/null and b/stone.png differ
--
libgit2 0.25.0