pygame尖锋时刻pygame方块跳跃小游戏
"""尖锋时刻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()