pygame尖锋时刻pygame方块跳跃小游戏

版权声明:所有文章皆为李兴球先生原创,转载请注明出处,否则保留权利,追究责任。 https://blog.csdn.net/avskya/article/details/81301998

"""尖锋时刻pygame方块跳跃小游戏
   小方块只能跳,从屏幕最右边不定时出现一些尖尖的三角形...


"""

import pygame
from pygame.locals import *
from random import randint

pygame.init()
screen = pygame.display.set_mode((480,360))
pygame.display.set_caption("尖锋时刻方块跳跃小游戏 作者:李兴球")

class Block():
    def __init__(self,x,y,width,height,color):
        self.image = pygame.Surface((width,height))
        self.image.fill(color)
        self.rect = self.image.get_rect()
        self.rect.x = x
        self.rect.y = y
        self.yspeed =0
        self.delete = 0         #碰到三角形就把它标为1
    def move(self):
        self.rect.y = self.rect.y  + self.yspeed
        if self.rect.y<280:
            
            self.yspeed = self.yspeed + 1
        else:
            self.yspeed = 0
        
    def jump(self):
        self.yspeed = -18

    def draw(self):
        screen.blit(self.image,self.rect)
class Triangle():
    def __init__(self,width,height,color):
        self.image = pygame.Surface((width,height))
        self.image.set_colorkey((0,0,0))
        pointlist = [(width//2,0),(0,height),(width,height)]
        pygame.draw.polygon(self.image,color,pointlist)
        self.rect = self.image.get_rect()
        self.rect.x = randint(50,200) +480
        self.rect.y = 260
        self.xspeed = randint(-15,-7)
        self.delete = 0
    def move(self):
        self.rect.x = self.rect.x + self.xspeed
        
    def draw(self):
        screen.blit(self.image,self.rect)

    def 碰到(self,square):
        if self.rect.colliderect(square.rect):
            return True
        else:
            return False
        
def 播放背景音乐():
   
    pygame.mixer.music.load("纯音乐 - 快节奏欢快音乐.mp3")
    pygame.mixer.music.play(-1,0)
        
def main():
    背景= pygame.image.load("blue sky.png")
    封面= pygame.image.load("封面设计.png")
    哭脸= pygame.image.load("哭脸.png")
    
    小方块= Block(50,100,50,50,(0,55,255))
    三角形列表=[]
    clock = pygame.time.Clock()
    运行中 = True
    # 自定义事件
    尖锋出现事件 = pygame.USEREVENT + 1      # 事件本质上就是整数常量。比 USEREVENT 小的数值已经对应内置事件,因此任何自定义事件都要比 USEREVENT 大
    pygame.time.set_timer(尖锋出现事件, 950) # 暂定每隔 950 毫秒 触发

    字体= pygame.font.Font("C:/windows/fonts/msyh.ttf",38)
    字体图 = 字体.render("游戏结束",True,(255,0,0))

    pygame.mixer.init()
    结束音效 = pygame.mixer.Sound("失败.wav")
    播放背景音乐()


    #以下是加的封面代码
    运行中= True
    while 运行中:

        for event in pygame.event.get(): 
            if event.type ==QUIT:运行中 = False
            if event.type == KEYDOWN:
                if event.key == K_SPACE:
                    运行中 = False

        screen.blit(封面,(0,0))
        pygame.display.update() 
        clock.tick(60)


    运行中= True
    while 运行中:

        for event in pygame.event.get(): 
            if event.type ==QUIT:运行中 = False
            if event.type ==KEYDOWN:
                if event.key ==K_UP and 小方块.rect.y>280 and 小方块.delete==0:
                    小方块.jump()
            if event.type ==尖锋出现事件:
                三角形列表.append(Triangle(50,100,(255,5,28)))
                pygame.time.set_timer(尖锋出现事件, randint(960,1600)) # 更改为随机时间 触发
                
        screen.blit(背景,(0,0))
        if 小方块.delete==0:
           小方块.move()
           小方块.draw()

        for tri in 三角形列表:
            if tri.delete==0:
                tri.move()
                if tri.碰到(小方块):小方块.delete =1                  
                tri.draw()
                if tri.rect.right<0:tri.delete=1
            else:
                三角形列表.remove(tri)

        if 小方块.delete ==1:结束音效.play();运行中=False
        pygame.display.update()
        
        clock.tick(60)

    #结束界面
    运行中 = True
    while 运行中:
        for event in pygame.event.get(): 
            if event.type ==QUIT:运行中 = False
        screen.blit(背景,(0,0))
        screen.blit(哭脸,(170,100))
        screen.blit(字体图,(170,50))
        pygame.display.update()
        clock.tick(30)
    pygame.quit()

if __name__=="__main__":
    main()

    
        
 

猜你喜欢

转载自blog.csdn.net/avskya/article/details/81301998