前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python之pygame学习(2)

Python之pygame学习(2)

作者头像
萌海无涯
发布2019-08-09 13:56:45
1.6K0
发布2019-08-09 13:56:45
举报
文章被收录于专栏:萌海无涯萌海无涯

pygame学习

上次学会了初始化,这次来说下显示画面

初始化窗口或屏幕以进行显示

代码语言:javascript
复制
'''
 pygame.display.set_mode 一共三个参数,依次为:分辨率,显示模式,颜色位数;返回窗口数据
'''
pygame.display.set_mode(resolution, flags=0, depth=0, display=0): return Surface

这个函数创建一个显示画面,参数用来指定请求display的类型。实际创建的display会是系统支持的类型中与请求的尽可能一致的类型。

显示窗口设置的参数如下;resolution :参数是一个元祖,值为窗口的宽高flags :参数是显示模式(可以使用 ‘&’ 或者 '|’ 来一次设置两个, 传入0则使用默认值)

  • pygame.FULLSCREEN:创建画面全屏
  • pygame.DOUBLEBUF:使用HWSURFACE或OPENGL是加上这个标志
  • pygame.HWSURFACE:使用硬件加速,在使用FULLSCREEN
  • pygame.OPENGL:创建一个可以使用opengl的display(不太理解Open的作用)
  • pygame.RESIZABLE:的窗口可变大小
  • pygame.NOFRAME:窗口没有边框和控制条

depth:参数表示颜色的位数 你也可以添其他的,常见的有;

  • 8 bits 256 色
  • 15 bits 32,768 色
  • 16 bits 65,536 色
  • 24 bits 16.7 百万色
  • 32 bits 16.7 百万色

display:官网没找到说明

Surface返回的内容为<Surface(宽X高 SW)>

获取可用的全屏模式列表

代码语言:javascript
复制
pygame.display.list_modes(depth=0, flags=pygame.FULLSCREEN)

如果给定的参数没有显示模式可用,那么会返回一个空的列表,列表中的模式按照分辨率从大到小排列。如果返回-1表示任何分辨率都可以用(这可能是因为指定的是窗口模式)。如果depth是0,SDL会自动选择当前或最好的颜色深度。flags参数默认 是pygame.FULLSCREEN,你可以添加额外的选项。

为显示模式选择最佳颜色深度

代码语言:javascript
复制
pygame.display.mode_ok(size,flags = 0,depth = 0,display = 0) - > depth

选择一个最好的颜色深度

这 个函数使用和pygame.display.set_mode相同的参数。它用来确定请求的模式是否可用。如果指定的模式不能使用,它会返回0,否则它会 返回一个最佳的颜色深度,通常depth参数不会被使用。然而某些平台上支持多种颜色深度都同样好,传递这个参数用来指定哪个是更好的。最有用的 flags是pygame.HWSURFACE、pygame.DOUBLEBUF和pygame.FULLSCREEN。如果被请求的flags不能够 设置,函数会返回0。

代码语言:javascript
复制
   # 一般情况我们都只是设置一个固定大小的窗口
    # screen = pygame.display.set_mode(win)
    # 窗口全屏 窗口大小为0,0,分辨率与桌面分辨率相同
    # screen = pygame.display.set_mode((0,0),flags=pygame.FULLSCREEN)
    # 没有窗口图标
    # screen = pygame.display.set_mode(win,flags=pygame.HWSURFACE)
    # 使用‘&’来打开一个open窗口并且使用硬件加速
    # screen = pygame.display.set_mode(win,flags=pygame.OPENGL&pygame.DOUBLEBUF)
    # 使用的窗口可变大小
    # screen = pygame.display.set_mode(win,pygame.RESIZABLE)
    # 窗口没有边框和控制条
    # screen = pygame.display.set_mode(win,pygame.NOFRAME)
    # display 参数不明
    # screen = pygame.display.set_mode(win,display=1)
代码语言:javascript
复制
pygame.display.set_mode((100, 100))

类似我们建立一个画布

画布的尺寸是100 x 100

这里设置下窗口的标题

代码语言:javascript
复制
pygame.display.set_caption('标题内容!')

设置窗口的背景色

代码语言:javascript
复制
# RGB颜色设置,中间是个元祖
screen.fill((0, 0, 0))

今天的代码:

代码语言:javascript
复制
import pygame
from pygame.locals import *

def rungame():
    # 分辨率 800 * 600
    win = (800, 600)

    # 一般情况我们都只是设置一个固定大小的窗口
    screen = pygame.display.set_mode(win)
    # 窗口全屏 窗口大小为0,0,分辨率与桌面分辨率相同
    # screen = pygame.display.set_mode((0,0),flags=pygame.FULLSCREEN)
    # 没有窗口图标
    # screen = pygame.display.set_mode(win,flags=pygame.HWSURFACE)
    # 使用‘&’来打开一个open窗口并且使用硬件加速
    # screen = pygame.display.set_mode(win,flags=pygame.OPENGL&pygame.DOUBLEBUF)
    # 使用的窗口可变大小
    # screen = pygame.display.set_mode(win,pygame.RESIZABLE)
    # 窗口没有边框和控制条
    # screen = pygame.display.set_mode(win,pygame.NOFRAME)
    # display 参数不明
    # screen = pygame.display.set_mode(win,display=1)

    # 设置当前窗口标题
    pygame.display.set_caption('窗口学习!')

    print(screen)
    # 32位色全屏分辨率
    # list_modes = pygame.display.list_modes(depth=0, flags=pygame.FULLSCREEN)
    # print(list_modes)
    # 不指定都可用 返回-1
    list_modes = pygame.display.list_modes(depth=0, flags=0)
    print(list_modes)
    # 为显示模式选择最佳颜色深度
    depth = pygame.display.mode_ok(win,flags = 0,depth =0,display = 0) # 32
    print(depth)

    # 设置窗口背景色
    screen.fill((20, 20, 20))
    # 开启一个事件循环处理发生的事件
    while True:
        # 从消息队列中获取事件并对事件进行处理
        for event in pygame.event.get():
            if event.type == KEYDOWN:
                if event.key==K_q:
                    print('你按下了Q')
                    exit(0)
            # 鼠标点击了窗口的关闭按钮
            if event.type == pygame.QUIT:
                # 退出界面
                pygame.quit()
                print('你点了关闭!')
                exit(0)

        # 更新画面
        pygame.display.update()


def main():
    # 初始化导入的pygame中的模块
    pygame.init()
    rungame()


if __name__ == "__main__":
    main()
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 萌海无涯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 获取可用的全屏模式列表
  • 为显示模式选择最佳颜色深度
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档