Python----pygame一些基本函数的整理和简要说明

Pygame.display.set_mode()

设置相关屏幕模式

Pygame.display.Info()

生成屏幕相关信息

Pygame.display.set_ caption()

设置标题信息

Pygame.display.set_icon()

设置图标信息

Pygame.display.get_caption()

获得标题信息

窗口感知和刷新

 

Pygame.display.get_active()

窗口刷新

Pygame.display.flip()

 

Pygame.display.updata()

显示刷新

事件类型

 

Pygame.event.EventType()

事件类型只有属性,没有方法

 处理事件:

获取和删除事件

Pygame.event.get()

从事件队列中获得事件列表,即获得所有被队列的事件

Pygame.event.poll()

从事件队列中获得一个事件,事件获取将从事件队列删除

如果事件队列为空,返回 event.NOEVENT

Pygame.even.clear()

Pygame.even.clear(type)

从事件队列中删除事件,默认删除所有事件

和get()类似可以增加参数type删除某些类事件

操作事件队列

设置事件队列能够缓存事件的类型

Pygame.event.set_blocked(type or typelist)

控制哪些类型事件不允许被保存到事件队列中

Pygame.event.get_blocked(type)

测试某个事件类型是否被事件队列禁止

如果事件类型被禁止,返回True,否则False

Pygame.event.set_allowed(type or typelist)

控制哪些类型事件允许被保存到事件队列中

生成事件

自定义事件类型

Pygame.event.post(Event)

产生一个事件,并将其放入事件队列

一般用于放置用户自定义事件(pygame.USEREVEVT)

也可放置系统定义事件,鼠标键盘等,给定参数

Pygame.event.Event(type, dict)

创建一个给定类型事件。其中,事件的属性和值均采用字典类型复制,属性名采用字符串形式。

如果创建已有事件,属性需要一致

附带两个简单的例子:

 关于鼠标操作:

import pygame, sys

pygame.init()
icon = pygame.image.load('1.png')
pygame.display.set_icon(icon)

vInfo = pygame.display.Info()
# size = width, height = vInfo.current_w, vInfo.current_h
size = width, height = 600, 400
speed = [5, 5]
BLACK = 0, 0, 0
# screen = pygame.display.set_mode(size, pygame.RESIZABLE)
# screen = pygame.display.set_mode(size)
screen = pygame.display.set_mode(size, pygame.RESIZABLE)
pygame.display.set_caption("pygame壁球运动")
ball = pygame.image.load("PYG02-ball.gif")
ballrect = ball.get_rect()
fps = 100
fclock = pygame.time.Clock()
still = False

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit(1)
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                speed[0] = speed[0] if speed[0] == 0 else (abs(speed[0]) - 1) * int(speed[0]/abs(speed[0]))
            elif event.key == pygame.K_RIGHT:
                speed[0] = speed[0] + 1 if speed[0] > 0 else speed[0] - 1
            elif event.key == pygame.K_UP:
                speed[1] = speed[1] + 1 if speed[1] > 0 else speed[1] - 1
            elif event.key == pygame.K_DOWN:
                speed[1] = speed[1] if speed[1] == 0 else (abs(speed[1]) - 1) * int(speed[1] / abs(speed[1]))
            elif event.key == pygame.K_ESCAPE:
                sys.exit(1)
        elif event.type == pygame.VIDEORESIZE:
            size = width, height = event.size[0], event.size[1]
            screen = pygame.display.set_mode(size, pygame.RESIZABLE)
        elif event.type == pygame.MOUSEBUTTONDOWN:
            if event.button == 1:  # event 1左键2中键3右键
                still = True
        elif event.type == pygame.MOUSEBUTTONUP:
            still = False
            if event.button == 1:
                ballrect = ballrect.move(event.pos[0]-ballrect.left, event.pos[1]-ballrect.top)
        elif event.type == pygame.MOUSEMOTION:
            if event.buttons[0] == 1:  # 表示左键按下
                ballrect = ballrect.move(event.pos[0] - ballrect.left, event.pos[1] - ballrect.top)

    # ballrect = ballrect.move(speed[0], speed[1])
    if pygame.display.get_active() and not still:
        ballrect = ballrect.move(speed[0], speed[1])
    if ballrect.left < 0 or ballrect.right > width:
        speed[0] = -speed[0]
        if width < ballrect.right < ballrect.right + speed[0]:
            speed[0] = -speed[0]
    if ballrect.top < 0 or ballrect.bottom > height:
        speed[1] = -speed[1]
        if height < ballrect.bottom < ballrect.bottom + speed[1]:
            speed[1] = -speed[1]
    screen.fill(BLACK)
    screen.blit(ball, ballrect)
    pygame.display.update()
    fclock.tick(fps)

关于生成事件:

import pygame, sys

pygame.init()
screen = pygame.display.set_mode((600, 400))
pygame.display.set_caption("生成事件")
# 没帧刷新一次,并产生一个事件
fps = 1
fclock = pygame.time.Clock()
num = 1

while True:
    # 生成事件
    uevent = pygame.event.Event(pygame.KEYDOWN, {"unicode": 123, "key": pygame.K_SPACE, "mod": pygame.KMOD_ALT})
    pygame.event.post(uevent)
    num += 1
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit(1)
        elif event.type == pygame.KEYDOWN:
            if event.unicode == "":
                print("[keydown {}]".format(num), "#", event.key, event.mod)
            else:
                print("[keydown {}]".format(num), event.unicode, event.key, event.mod)
    pygame.display.update()
    fclock.tick(fps)

猜你喜欢

转载自blog.csdn.net/qq_40801709/article/details/88603430
今日推荐