Skip to content
  • P
    Projects
  • G
    Groups
  • S
    Snippets
  • Help

Administrator / pygame_lesson7_diy4

  • This project
    • Loading...
  • Sign in
Go to a project
  • Project
  • Repository
  • Issues 0
  • Merge Requests 0
  • Pipelines
  • Wiki
  • Snippets
  • Members
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • Files
  • Commits
  • Branches
  • Tags
  • Contributors
  • Graph
  • Compare
  • Charts
Switch branch/tag
  • pygame_lesson7_diy4
  • my_game.py
Find file
BlameHistoryPermalink
  • BellCodeEditor's avatar
    save project · bd299c82
    BellCodeEditor committed 3 years ago
    bd299c82
my_game.py 3.72 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
import pygame
from pygame import locals
import random
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
score=0
y=400
class Block2(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时钟,控制游戏速度(帧数)
zaw_list=pygame.sprite.Group()
# 载入图片
font=pygame.font.Font('STKAITI.ttf',18)

background = pygame.image.load('bg.png')    # 背景
road = pygame.image.load('road.png')      # 路
stone = pygame.image.load('stone.png')      # 石头
cacti = pygame.image.load('cacti.png')      # 仙人掌
apple = 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')]
index = 0 
pygame.display.set_caption('悟空酷跑')
a=0
t=30
zaw=Block(stone,cacti,apple)
wukong_1=Block2(hero[0])
wukong='running'
#z=random.choice([stone,cacti,apple])
#rect=stone.get_rect()
#z_x=1000
time=0
road_x=0
bg_x=0
gameover=False
while True:  
    for event in pygame.event.get():
        if event.type == locals.QUIT:
            # 接收到退出事件后退出程序
            exit()
        if event.type==locals.KEYDOWN:
            if event.key==locals.K_SPACE and wukong=='running':
                wukong='up'
    
    if gameover==False:
        if wukong=='running':
            wukong_1=Block2(hero[a])
            a+=1
            if a>=5:
                a=0
        if wukong=='up':
            if t>0:   
                y-=t                                                                         
                wukong_1.rect.y=y
                t-=2
            else:
                wukong='down'
        if wukong=='down':
            if t<=30:
                y+=t
                wukong_1.rect.y=y
                t+=2
            else:
                wukong='running'
                t=30
                #y=400
        
        
        # 将背景图画上去
        screen.blit(background, (bg_x, 0))
        screen.blit(road, (road_x, 500))
        screen.blit(wukong_1.image, (150, y))
        
        #z_x-=8
        text=font.render('分数:'+str(score),True,(255,255,255))
        screen.blit(text,(900,50))
        road_x-=10
        bg_x-=1
        #if zaw.rect.x<= 0-zaw.rect.width:
        time+=1
        if time>=60:
            time=0
            num=random.randint(0,50)
            if num>20:
                zaw=Block(stone,cacti,apple)
                zaw_list.add(zaw)
        for i in zaw_list:    
            i.rect.x-=10
            screen.blit(i.image, (i.rect.x, 500-i.rect.height))
            if i.rect.x<=0-i.rect.width:
                i.kill()
            if pygame.sprite.collide_rect(wukong_1,i):
                gmover=pygame.image.load('gameover.png')
                screen.blit(gmover,(400,250))
                gameover=True
            else:
                if i.rect.x<wukong_1.rect.x:
                    score+=i.score
                    i.score=0
                    
            #z=random.choice([stone,cacti,apple])
            #rect=stone.get_rect()
            #z_x=1000

        if road_x<-1000:
            road_x=0
        if bg_x<-1000:
            bg_x=0
        # 刷新画面
        pygame.display.update()
        FPS.tick(60)