游戏类模版框架_鼠标操控收集下落和方块型.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()

 

如需要查看完整代码,请扫码付款:

VIP免费查看

已有0人支付

本站所有作品,教程等皆为原创,版权所有。只供个人及单位内部研究使用,对外展示或传播必需经本站同意,且注明来自本站。培训机构等用本站资源培训学生,需经本站授权。一旦付款,表示同意本站知识付费原则:数字商品,不支持退款。亦可直接向微信号scratch8付款购买。入住QQ群:225792826 和爱好者共同交流,并且能下载免费提供的Python资源(需提供真实姓名才可入群)
李兴球的博客_Python创意编程技术前沿_pygame » 游戏类模版框架_鼠标操控收集下落和方块型.py
scratch

学本领,探索更大的世界!

李兴球博客 风火轮编程主页