• <li id="oiayd"><ruby id="oiayd"></ruby></li>

    <acronym id="oiayd"><strong id="oiayd"></strong></acronym>

    <acronym id="oiayd"></acronym>
    <track id="oiayd"><ruby id="oiayd"></ruby></track>
  • <track id="oiayd"><ruby id="oiayd"><menu id="oiayd"></menu></ruby></track>

  • 400-650-7353
    您所在的位置:首页 > IT干货资料 > python > 【Python基础知识】Pygame的基本使用——游戏循环和模板

    【Python基础知识】Pygame的基本使用——游戏循环和模板

    • 来源:优就业
    • 2021-09-28 09:44:34
    • 阅读()
    • 分享
    • 手机端入口

    每个游戏的核心控制流程都是循环,称为游戏循环。游戏循环不断地反复运行,完成使游戏正常运行所需的工作。每迭代一次游戏循环称为一帧。

    Pygame框架游戏循环中发生的事情可以分为三种不同的类别。

    ①事件:需要游戏做出响应的所有内容。例如,在键盘上按下的键,在鼠标上点击的键等。

    ②更新游戏:此框架上需要更改的所有内容。例如,如果角色悬空,那么需要使用重力将其拉下来;如果两个对象相遇,那么需要发生爆炸。

    ③渲染:将所有内容绘制在屏幕上。例如,播放器需要查看的背景、角色、菜单或其他任何内容,都必须在屏幕上正确的位置绘制。

    游戏循环的关键是控制整个游戏循环的运行速度,即FPS,它表示每秒的帧数,这意味着游戏循环每秒应该发生多少次。如果控制不好FPS,游戏就会运行得过快或过慢。

    (1)创建Pygame模版

    编写一个简单的Pygame程序,该程序除了打开游戏窗口并运行游戏循环外什么也不做。

    首先导入所需的Pygame库,并设置游戏的全局选项变量:

    1. import pygame 
    2.  
    3. WIDTH = 300   # 游戏窗口的宽度 
    4. HEIGHT = 420   # 游戏窗口的高度 
    5. FPS = 30   # 每秒的帧数 

    接下来创建游戏窗口:

    1. # 初始化Pygame并创建游戏窗口 
    2. pygame.init() 
    3. screen = pygame.display.set_mode((WIDTH, HEIGHT)) 
    4. pygame.display.set_caption('Demo Game')   # 设置游戏标题 
    5. clock = pygame.time.Clock() 

    先调用pygame.init()启动Pygame并将其初始化;再调用pygame.display.set_mode()创建游戏窗口screen,其参数是一个元组,表示该游戏窗口的宽度和高度;最后调用pygame.time.Clock()创建时钟对象clock,以便能够确保游戏按照设定好的FPS运行。

    然后开始编写游戏循环:

    1. # 游戏循环 
    2. running = True 
    3. while running: 
    4.     pass 

    这是游戏循环的框架代码,它是由变量running控制是否执行的while循环,如果希望游戏循环结束,那么只需将running设置为False即可。

    (2)渲染部分

    目前示例代码中仅仅演示的是用纯色填充屏幕。下面先介绍一下计算机对颜色的处理。

    计算机屏幕由像素组成,这些像素的颜色由三个颜色混合生成,这三个颜色就是三基色:红色(R),绿色(G)和蓝色(B)。每个颜色的发光强度决定了该像素的颜色,用0到255之间的一个整数来表示发光强度的大小,因此,RGB三个颜色中的每个都有256种亮度等级。可以通过三者的乘积,获得计算机中可以显示的颜色总数:256*256*256=16777216。

    在项目中定义一些颜色:

    1. BLACK = (000)   # 黑色 
    2. WHITE = (255255255)   # 白色 
    3. RED = (25500)   # 红色 
    4. GREEN = (02550)   # 绿色 
    5. BLUE = (00255)   # 蓝色 

    以上颜色由一个元组定义,元组中的项按照RGB排序,数值为颜色的亮度等级。

    给屏幕填充颜色,并使最近绘制的屏幕可见:

    1. screen.fill(WHITE) 
    2. pygame.display.flip() 

    (3)事件部分

    此时尝试运行程序,则会发现程序存在问题——无法关闭窗口,单击窗口右上角的“关闭”按钮无效。这是因为“单击窗口右上角的‘关闭’按钮”其实是一个事件,需要监听该事件并做出相应处理——退出游戏。

    事件可以随时发生。如果游戏在循环的更新或渲染过程中单击其他按钮怎么办?Pygame要做的是保存自上一帧以来发生的所有事件。这样,如果游戏快速将许多按钮混在一起,那么可以使所有按钮都有效。监听的事件是一个列表,可以使用一个for循环来查看它们:

    1. for event in pygame.event.get(): 
    2.     # 检查窗口是否关闭 
    3.     if event.type == pygame.QUIT: 
    4.         running = False 

    Pygame中有很多可以监听的事件,pygame.QUIT是单击窗口右上角的“关闭”时触发的事件,此时将running设置为False,游戏循环将终止。

    (4)控制FPS

    使用FPS来控制游戏的运行速度:

    1. while running: 
    2.     clock.tick(FPS) 

    tick()方法用于告诉Pygame循环所花的时间。变量FPS已经赋值为30,这意味着游戏循环每秒应该发生30次,即每帧持续1⁄30秒。

    (5)组装代码

    将上述代码组装起来,并在末尾添加pygame.quit()用于终止游戏:

    1. import pygame 
    2.  
    3. WIDTH = 300 
    4. HEIGHT = 420 
    5. FPS = 30 
    6.  
    7. # 定义颜色 
    8. WHITE = (255255255
    9. BLACK = (000
    10. RED = (25500
    11. GREEN = (02550
    12. BLUE = (00255
    13.  
    14. # 初始化pygame并创建游戏窗口 
    15. pygame.init() 
    16. pygame.mixer.init() 
    17. screen = pygame.display.set_mode((WIDTH, HEIGHT)) 
    18. pygame.display.set_caption('Demo Game'
    19. clock = pygame.time.Clock() 
    20.  
    21. # 游戏循环 
    22. running = True 
    23. while running: 
    24.     clock.tick(FPS) 
    25.     for event in pygame.event.get(): 
    26.         if event.type == pygame.QUIT: 
    27.             running = False 
    28.  
    29.     screen.fill(WHITE) 
    30.     pygame.display.flip() 
    31.  
    32. pygame.quit() 

    将上述代码进行保存,文件名为template.py,本书后文将使用该Pygame模板作为项目的起点。

    运行template.py,运行结果如图1所示。

    图1 Pygame模板运行结果

    文章“【Python基础知识】Pygame的基本使用——游戏循环和模板”已帮助

    更多内容

    >>本文地址:http://www.seyoho.com/zhuanye/2021/70178.html

    THE END  

    声明:本站稿件版权均属中公教育优就业所有,未经许可不得擅自转载。

    1 您的年龄

    2 您的学历

    3 您更想做哪个方向的工作?

    获取测试结果
    • 大前端大前端
    • 大数据大数据
    • 互联网营销互联网营销
    • JavaJava
    • Linux云计算Linux
    • Python+人工智能Python
    • 嵌入式物联网嵌入式
    • 全域电商运营全域电商运营
    • 软件测试软件测试
    • 室内设计室内设计
    • 平面设计平面设计
    • 电商设计电商设计
    • 网页设计网页设计
    • 全链路UI/UE设计UI设计
    • VR/AR游戏开发VR/AR
    • 网络安全网络安全
    • 新媒体与短视频运营新媒体
    • 直播带货直播带货
    • 智能机器人软件开发智能机器人
     

    快速通道fast track

    近期开班时间TIME

    日韩一级a片无卡顿

  • <li id="oiayd"><ruby id="oiayd"></ruby></li>

    <acronym id="oiayd"><strong id="oiayd"></strong></acronym>

    <acronym id="oiayd"></acronym>
    <track id="oiayd"><ruby id="oiayd"></ruby></track>
  • <track id="oiayd"><ruby id="oiayd"><menu id="oiayd"></menu></ruby></track>