From ede769d62e773ebb5ddde0f343badd52f7580610 Mon Sep 17 00:00:00 2001 From: BellCodeEditor <bellcode_dev@bell.ai> Date: Sun, 2 Jan 2022 15:09:55 +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 | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ record.txt | 1 + road.png | Bin 0 -> 35577 bytes score.wav | Bin 0 -> 177486 bytes settings.json | 3 +++ stone.png | Bin 0 -> 11542 bytes 16 files changed, 158 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 settings.json 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..14928f3 --- /dev/null +++ b/my_game.py @@ -0,0 +1,154 @@ +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 + 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"), +] +basic_font = pygame.font.Font("STKAITI.TTF",18) +score_audio=pygame.mixer.Sound('score.wav') +index = 0 +y = 400 +jumpState = "runing" +t = 30 +roadx = 0 +bg_x = 0 +time = 0 +gamestate = True +block_list = pygame.sprite.Group() +score=0 +speed=10 +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名"] + thr=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" + if gamestate == True: + speed=10+score//3 + # 悟空造型 + wukong = Player(hero[index]) + if jumpState == "runing": # 跑步状态下 + index += 1 + if index >= 5: + index = 0 + 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 + + # 将背景图画上去 + screen.blit(background, (bg_x, 0)) # 远处背景 + screen.blit(road, (roadx, 500)) # 路 + roadx -= speed + bg_x -= 4 + if roadx <= -1000: + roadx = 0 + if bg_x <= -1000: + bg_x = 0 + screen.blit(wukong.image, (150, y)) # 悟空 + time += 1 + if time >= 60: + num = random.randint(0, 100) + if num > 40: + obstacle = Block(bush, cacti, stone) + block_list.add(obstacle) + time = 0 + for prop in block_list: + prop.rect.x -= speed + screen.blit(prop.image, (prop.rect.x, prop.rect.y)) + if prop.rect.x <= 0 - prop.rect.width: + prop.kill() + if pygame.sprite.collide_rect(wukong, prop): + gameover = pygame.image.load("gameover.png") + screen.blit(gameover, (400, 200)) + gamestate = False + if score>thr: + if score >one: + record["第3名"]=two + record["第2名"]=one + record["第1名"]=score + elif score>two and score<one: + record["第3名"]=two + record["第2名"]=score + else: + record["第3名"]=score + content=json.dumps(record,ensure_ascii=False) + with open('record.txt','w',encoding='utf-8') as f: + f.write(content) + else: + if (prop.rect.x+prop.rect.width)<wukong.rect.x: + score+=prop.score + prop.score=0 + if score>old_score: + score_audio.play() + old_score=score + scoreSurf=basic_font.render('score:'+str(score),True,(255,255,255)) + screen.blit(scoreSurf,(880,20)) + scoreSurf=basic_font.render("第1名:"+str(one),True,(255,255,255)) + screen.blit(scoreSurf,(880,50)) + scoreSurf=basic_font.render("第2名:"+str(two),True,(255,255,255)) + screen.blit(scoreSurf,(880,80)) + scoreSurf=basic_font.render("第3名:"+str(thr),True,(255,255,255)) + screen.blit(scoreSurf,(880,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..02ba4ad --- /dev/null +++ b/record.txt @@ -0,0 +1 @@ +{"第1名": 17, "第2名": 15, "第3名": 7} \ 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/settings.json b/settings.json new file mode 100644 index 0000000..324d91c --- /dev/null +++ b/settings.json @@ -0,0 +1,3 @@ +{ + "python.formatting.provider": "black" +} \ No newline at end of file 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