zoukankan      html  css  js  c++  java
  • pygame--窗口操作

    pygame.display.list_modes()    #返回本机所支持的窗口大小--列表

    [(1920, 1080), (1680, 1050), (1600, 900), (1440, 900), (1400, 1050), (1366, 768), (1360, 768), (1280, 1024), (1280, 960), (1280, 800), (1280, 768), (1280, 720), (1280, 600), (1152, 864), (1024, 768), (800, 600), (640, 480), (640, 400), (512, 384), (400, 300), (320, 240), (320, 200)]

    练习:通过F1键在满屏和窗口之间进行切换

    import pygame
    
    pygame.init()  #游戏初始化的设置,他应该在游戏代码编写的最前边
    screen = pygame.display.set_mode((960, 600))  #创建窗口以进行显示;screen定义了一个游戏的屏幕,后续游戏场景中的游戏对象,都要在这个screen上绘制
    #参数一:640和480是宽度和高度
    #参数二:标志位:具体意思见下表,如果不用什么特性,就指定0
    #              0             用户设置的窗口大小
    #
    pygame.FULLSCREEN 创建一个全屏窗口 # pygame.DOUBLEBUF 创建一个“双缓冲“窗口,建议在HWSURFACE或OPENGL时使用 # pygame.HWSURFACE 创建一个硬件加速窗口,必须和FULLSCREEN同时使用 # pygame.OPENGL 创建一个OPENGL渲染的窗口 # pygame.RESIZABLE 创建一个可以改变大小的窗口 # pygame.NOFRAME 创建一个没有边框的窗口 #参数三:色深 pygame.display.set_caption("窗口大小变换") #设置当前游戏窗口的标题 fullscreen = False background =pygame.image.load('2.jpg') #加载图片 while True: for event in pygame.event.get(): #pygame.event.get() 游戏中的事件 if event.type == pygame.QUIT: #如果事件类型是退出 exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_F1: fullscreen = not fullscreen if fullscreen: screen = pygame.display.set_mode((960, 600), pygame.FULLSCREEN) else: screen = pygame.display.set_mode((960, 600), 0) screen.blit(background, (0, 0)) #把图片加到窗口 pygame.display.update() #更新窗口
    import pygame
    
    pygame.init()
    SCREEN_SIZE = (640, 480)
    screen = pygame.display.set_mode(SCREEN_SIZE,pygame.RESIZABLE)
    
    pygame.display.set_caption("窗口大小变换")
    fullscreen = False
    background =pygame.image.load('2.jpg')
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                exit()
            if event.type == pygame.VIDEORESIZE:   #如果窗口大小发生了变化
                SCREEN_SIZE=event.size   #返回当前窗口大小--元组(宽,高)
                print(event.size)
                screen = pygame.display.set_mode(SCREEN_SIZE, pygame.RESIZABLE)
    
    
                pass
        screen.blit(background, (0, 0))
        pygame.display.update()

    如果你想创建一个硬件显示(surface会存放在显存里,从而有着更高的速度),但必须和全屏一起用:

    screen = pygame.display.set_mode(SCREEN, HWSURFACE | FULLSCREEN) 

     当然你完全可以把双缓冲(更快)DOUBLEBUF也加上,这就是一个很nice的游戏显示了,不过记得你要使用pygame.display.flip()来刷新显示。pygame.display.update()是将数据画到前面显示,而这个是交替显示的意思

    稍微说一下双缓冲的意思,可以做一个比喻:我的任务就是出黑板报,如果只有一块黑板,那我得不停的写,全部写完了稍微Show一下就要擦掉重写,这样一来别人看的基本都是我在写黑板报的过程,看到的都是不完整的黑板报;如果我有两块黑板,那么可以挂一块给别人看,我自己在底下写另一块,写好了把原来的换下来换上新的,这样一来别人基本总是看到完整的内容了。双缓冲就是这样维护两个显示区域,快速的往屏幕上换内容,而不是每次都慢慢地重画。

    还有OPENGL模式,这是一个得到广泛应用的3D加速显示模式。不过一旦使用了这个模式,pygame中的2D图像函数就不能使用了

    screen.fill((255,255,255))  #用指定颜色填充窗口

  • 相关阅读:
    javascript库之Mustache库使用说明
    Android开发之底部导航栏标准
    Android开发之欢迎界面标准
    c和c++如何把一个整数转化为string
    stringstream用法
    实战c++中的string系列--std:vector 和std:string相互转换(vector to stringstream)
    C++11使用make_shared的优势和劣势
    C++11 并发指南五(std::condition_variable 详解)
    C++17 std::shared_mutex的替代方案boost::shared_mutex
    std::shared_mutex和std::mutex的性能对比(banchmark)
  • 原文地址:https://www.cnblogs.com/liming19680104/p/13036368.html
Copyright © 2011-2022 走看看