游戏结束设计_游戏类模板框架.py

"""游戏结束设计_游戏类模板框架.py
"""
 
import pygame
 
# 定义颜色常量
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
 
pygame.init()            # 初始化派gei引擎
 
# 创建屏幕对象
size = [700, 500]
screen = pygame.display.set_mode(size)
 
pygame.display.set_caption("游戏类模板框架_游戏结束设计,风火轮少儿编程")
 
# 当用户单击了关闭按钮时此变量会为真
done = False
 
# 用来设定画面刷新率
clock = pygame.time.Clock()

# 新建矩形对象
rectobj = pygame.Rect(300,200,50,50)

# 矩形每帧水平和垂直移动的距离
dx = 5
dy = 5
 
# 字体对象,用来写字的
font = pygame.font.Font(None, 36)
 
# 触发游戏结束的逻辑变量
game_over = False
 
# -------- 游戏主循环 -----------
while not done:
 
    # --- 事件处理
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True
        # 下面是用单击鼠标来结束游戏,在自己的游戏中可以用其它方
        # 法来结束,如得分等于0或游戏主角死亡等。
        elif event.type == pygame.MOUSEBUTTONDOWN:
            game_over = True    # 按下鼠标,如果还有其它条件则加上,让这个变量为真 
    
    # 如果游戏没有结束,则让角色们交互,如移动坐标,进行碰撞检测等,
    # 下面是让一个矩形荡来荡去的代码
    if not game_over:
        # 以水平和垂直速度改变矩形的x和y坐标
        rectobj.x += dx
        rectobj.y += dy 
 
        # 碰到“边缘”就反弹。
        if rectobj.y > 450 or rectobj.y < 0: dy = dy * -1
        if rectobj.x > 650 or rectobj.x < 0: dx = dx * -1
 
    # 接下来是画一帧,首先填充背景
    screen.fill(BLACK)
 
    # 然后在screen上画矩形
    if not game_over:
       pygame.draw.rect(screen, GREEN, rectobj)
 
    if game_over:
        # 游戏结束了,显示Game Over
        text = font.render("Game Over", True, WHITE) 
    else:
        # 游戏没结束,显示单击来结束游戏
        text = font.render("Click to end game", True, WHITE)
        
    text_rect = text.get_rect()
    text_x = screen.get_width() / 2 - text_rect.width / 2
    text_y = screen.get_height() / 2 - text_rect.height / 2
    screen.blit(text, [text_x, text_y])
 
    # fps为60(每秒显示60帧)
    clock.tick(60)
 
    # 最终要把所画的显示出来
    pygame.display.flip()
 
 
pygame.quit()