游戏类模版框架_鼠标操控收集下落和方块型.py

游戏类模版框架_鼠标操控收集下落和方块型.py

以下是部分代码预览:

"""游戏类模版框架_鼠标操控收集型.py,
本程序设计了一个Game类,展示如何组织一个游戏的逻辑。
好处是当游戏结束的条件满足时,可以非常方便的重新开始游戏。
"""
 
import pygame
import random
 
# --- 定义全局颜色常量 ---
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
 
SCREEN_WIDTH = 700
SCREEN_HEIGHT = 500 
 
class Block(pygame.sprite.Sprite):
    """这个类代表玩家收集的方块"""
 
    def __init__(self):
        """ 调用父类的初始化方法 """
        super().__init__()
        self.image = pygame.Surface([20, 20])
        self.image.fill(BLACK)
        self.rect = self.image.get_rect()
  
 
class Player(pygame.sprite.Sprite):
    """ 玩家类 """
    def __init__(self):
        super().__init__()
        self.image = pygame.Surface([20, 20])
        self.image.fill(RED)
        self.rect = self.image.get_rect()
 
 
class Game:
    """ Game类. """
 
    def __init__(self):
        """ 游戏的初始化方法,游戏中有得分,游戏是否结束等. """
 
        self.score = 0
        self.game_over = False
        self.font = pygame.font.SysFont("serif", 25)
 
        # 游戏的方块列表和所有角色列表
        self.block_list = pygame.sprite.Group()
        self.all_sprites_list = pygame.sprite.Group()
 
        # 创建方块
        for i in range(50):
            block = Block() 
            block.rect.x = random.randrange(SCREEN_WIDTH)
            block.rect.y = random.randrange(-300, SCREEN_HEIGHT)
 
            self.block_list.add(block)
            self.all_sprites_list.add(block)
 
        # 创建玩家,并加入到所有角色列表,方便统一update与draw
        self.player = Player()
        self.all_sprites_list.add(self.player)
 
  
    def display_frame(self, screen):
        """ 重画所有角色. """
        screen.fill(WHITE)   # 清背景为白色
 
        if self.game_over:   # 如果游戏结束 了,显示单击重启动游戏的字        
            text = self.font.render("Game Over, click to restart", True, BLACK)
            center_x = (SCREEN_WIDTH // 2) - (text.get_width() // 2)
            center_y = (SCREEN_HEIGHT // 2) - (text.get_height() // 2)
            screen.blit(text, [center_x, center_y])
 
        if not self.game_over:# 如果游戏没有结束         
            self.all_sprites_list.draw(screen)
 
        pygame.display.flip()
 
 
def main():
    """ 主要流程函数. """
    # 初始化派gei引擎
    pygame.init()
 
    size = [SCREEN_WIDTH, SCREEN_HEIGHT]
    screen = pygame.display.set_mode(size)
 
    pygame.display.set_caption("游戏类模版框架_鼠标操控收集型")
    pygame.mouse.set_visible(False)
 
    # 创建done用来结束while循环
    done = False
    clock = pygame.time.Clock()
 
    # 创建一个游戏实例
    game = Game()
 
    # 游戏主要循环
    while not done:
 
        # 处理所有事件
        done = game.process_events()
 
        # 游戏运行逻辑,更新坐标与检测碰撞,得分等
        game.run_logic()
 
        # 重画所有对象
        game.display_frame(screen)
 
        # 每秒显示60次(到了1/60秒就继续下一次循环
        clock.tick(60)
 
    # 关闭窗口结束
    pygame.quit()
 
if __name__ == "__main__":
    main()

 

如需要查看完整代码,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

李兴球

李兴球的博客是Python创意编程原创博客