zoukankan      html  css  js  c++  java
  • pygame学习点滴

    pygame分为四块

    引用/ 初始化/ 事件处理/ 窗口刷新

     普通版壁球游戏

     1 """
     2 引用部分
     3 """
     4 import pygame, sys
     5 
     6 
     7 """
     8 初始化部分
     9 """
    10 pygame.init()   # 初始化
    11 size = width, height = 600, 400  # 设置窗体大小
    12 screen = pygame.display.set_mode(size)  # 调用窗体
    13 pygame.display.set_caption("撞球")  # 设置窗体名称
    14 speed = [1, 1]  # 设置移动速度
    15 BGCOLOR = 23, 45, 23  # 利用RGB形式设置背景颜色
    16 ball = pygame.image.load('2.png')  # 增加一个图片对象
    17 ballrect = ball.get_rect()  # 为图像加一个外切矩形
    18 fps = 60  # 设置刷新帧率
    19 fclock = pygame.time.Clock()  # 设置clock对象
    20 
    21 
    22 
    23 while True:
    24 
    25     """
    26     事件处理部分
    27     """
    28     for event in pygame.event.get():  # 所有外部输入设备的操作都在这里
    29         if event.type == pygame.QUIT:
    30             sys.exit()
    31         elif event.type == pygame.KEYDOWN:
    32             if event.key == pygame.K_LEFT:
    33                 speed[0] = speed[0] if speed[0] == 0 else (abs(speed[0]) - 1) * int(speed[0] / abs(speed[0]))
    34             elif event.key == pygame.K_RIGHT:
    35                 speed[0] = speed[0] + 1 if speed[0] >= 0 else speed[0] - 1
    36             if event.key == pygame.K_DOWN:
    37                 speed[1] = speed[1] if speed[1] == 0 else (abs(speed[1]) - 1) * int(speed[1] / abs(speed[1]))
    38             elif event.key == pygame.K_UP:
    39                 speed[1] = speed[1] + 1 if speed[1] >= 0 else speed[1] - 1
    40 
    41     ballrect = ballrect.move(speed[0], speed[1])  # 设置外切矩形的运动速度
    42     if ballrect.left < 0 or ballrect.right >   # 左右到边界
    43         speed[0] = -speed[0]
    44     if ballrect.top < 0 or ballrect.bottom > height:  # 上下到边界
    45         speed[1] = -speed[1]
    46 
    47     """
    48     窗口刷新部分
    49     """
    50     screen.fill(BGCOLOR)  # 为窗口填充背景色
    51     screen.blit(ball, ballrect)  # 让球和外切矩形动起来
    52     pygame.display.update()  # 刷新窗口
    53     fclock.tick(fps)  # 设置刷行频率

    发现问题:

    如果把

    32     ballrect = ballrect.move(speed[0], speed[1])  # 设置外切矩形的运动速度
    33     if ballrect.left < 0 or ballrect.right >   # 左右到边界
    34         speed[0] = -speed[0]
    35     if ballrect.top < 0 or ballrect.bottom > height:  # 上下到边界
    36         speed[1] = -speed[1]


    这几行代码写到上面的for循环里面,整个游戏运行就会特别卡

    屏幕需求设置

    屏幕大小可改变pygame.RESIZABLE

    游戏全屏pygame.FULLSCREEN

    游戏无边框pygame.NOFRAME

    pygame.display.set_mode((1440, 900), pygame.FULLSCREEN)


    pygame.display.Info()

    current_w

    current_h

    当前窗口的宽度,高度

    更改标题栏内容和图标

    pygame.display.set_caption("撞球")  # 设置标题信息
    pygame.display.get_caption()  # 获得图标和标题信息
    pygame.display.set_icon()  # 设置图标信息


    窗口感知和刷新

    pygame.display.get_active() #判断窗口是否被最小化
    pygame.display.flip()  # 重新绘制所有窗口
    pygame.display.update()  # 重新绘制变化的元素

    窗口颜色:

    Color类

    rgba a表示透明度

    .normalize 归一到0-1之间

    图形绘制:

    draw类

    pygame.draw.rect(screen, color, rect, width=0)

  • 相关阅读:
    pat每日刷题计划--day70
    pat每日刷题计划--day69
    pat每日刷题计划--day68
    pat每日刷题计划--day67
    pat每日刷题计划--day66
    SpringBoot+MyBatis+MySQL读写分离
    SpringMVC源码分析
    ActiveMQ从入门到精通(三)
    ActiveMQ从入门到精通(二)
    ActiveMQ从入门到精通(一)
  • 原文地址:https://www.cnblogs.com/btxlc/p/10031384.html
Copyright © 2011-2022 走看看