使用pygame绘制网格的基本模块

Gritt的Python项目详细描述


(砂砾基于jordan zanata的pyGrid

gritty的目的是提供一个易于使用的网格组件 小型电网(约100x100)的合理性能。

grity支持自定义单元格属性,包括默认值和强制函数, 并试图为同时操作多个单元格提供一个简单的界面。

试试看!

导入多截面模块并单击并拖动:

import gritty.demos.multi_select

只需导入其他任何演示就可以了,看看Gritty能为您做些什么。

用法

典型的网格设置通常如下:

#!/usr/bin/env python

import pygame
from gritty import grid

# Set up args and kwargs

pygame.init()
grid = Grid(*args, **kwargs)
grid_pos = (0, 0)
screen = pygame.display.set_mode(grid.render_dimensions)

while True:
    # Do stuff to the grid
    screen.blit(grid.surface, grid_pos)

注意while循环中的grid.surface缓存网格表面, 并且只重绘自上次呈现以来已更改的单元格。

网格初始化

网格有4个必需的参数-行数、列数、单元格宽度(以像素为单位)和单元格高度(以像素为单位)除此之外,还可以指定单元格颜色、单元格边框颜色、单元格边框大小和单元格半径的值。所有这些都是可选的,并将使用Grid.__init__()中指定的默认设置。请注意,这些是网格属性和单元格属性默认值的混合-有关如何使用它们的详细信息,请参阅以下各节

在上一节中,“设置args和kwargs”可能看起来像这样:

rows = 20
columns = 20
cell_width = 25
cell_height = 25
COLOR_OFF = (000, 000, 255)
COLOR_ON = (255, 255, 51)

args = [
    rows,
    columns,
    cell_width,
    cell_height
]

kwargs = {
    'cell_color_default': COLOR_OFF,
    'cell_border_color': (000, 000, 000),
    'cell_border_size': 3,
    'cell_radius': 5,
}

pygame.init()
grid = Grid(*args, **kwargs)

以上大部分都可以在demos文件夹中的basic_grid函数中找到,该函数为每个demos设置一个基本网格。

单元格属性

属性默认值

grid.cell_attr保存单元格属性的默认值列表。 请注意,您仍然可以调整单元格的任意属性,而无需添加默认的ot grid.cell_attr。但是,空单元格将没有该属性的值

添加、删除或更新默认值将在下次渲染曲面时触发完全重绘。

要更改默认颜色:

grid = Grid(10, 10, 2, 2)
grid.cel_attr['color'] = [255, 0, 0]  # Set default color to red

添加“alive”属性,例如用于生命游戏:

grid = Grid(10, 10, 2, 2)
grid.cell_attr['alive'] = False  # By default, cells are dead

属性强制函数

颜色值可以指定为(R,G,B)或(R,G,B,A)我们可以添加一个拦截强制函数,而不是在每次获取或设置值时手动检查长度。默认情况下,包含以下颜色强制功能:

def coerce_alpha(input):
    '''Default to full opacity'''
    if len(input) == 3:
        input = list(input)
        input.append(255)
    return input

grid = Grid(10, 10, 2, 2)
grid.cell_attr_coercion_funcs['color'] = coerce_alpha
grid[1,1].color = (0, 1, 2)
print grid[1,1]

目前,set和get都使用一个强制函数,因此,如果函数将颜色的红色值加倍,则在设置时将其加倍,并将get的返回值加倍这个功能还没有完全设计出来,所以它可能会有很大的变化(或者被完全删掉)

网格属性

更改网格属性将在下次渲染曲面时触发完全重绘。请注意,grid.hit_check将立即使用新值-请确保在绘制网格之后检查输入,以便测试的鼠标交互与正确的维度相对应。

网格属性为:

  • rows-网格中的单元格行数
  • columns-网格中单元格的列数
  • cell_width-单元格的像素宽度(内部,无边框)
  • cell_height-单元格的像素高度(内部,无边框)
  • cell_border_size-单元格之间和网格周围边框的像素厚度

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用Jena获取类上的OWL限制   我需要用javadoc记录每一个方法还是java中的“main”方法?   ssl我的Java密钥库中需要什么?   java如何在安卓中实现视图寻呼机适配器?   java LibreOffice 4.4.3在不同服务器上使用jodconverter访问文档   Selenium Webdriver(Java)脚本之间的时间延迟   混合使用路径参数和请求参数的java Rest API   爪哇超级。基类中的toString()方法?   java IntelliJ Idea 2019.2与NPW崩溃   java replaceAll不适用于以下查询   java递归相关:两个数的乘积   java在屏幕/活动之间切换,无需按钮   java试图在GridBagLayout中对齐JcheckBox   java安全远程密码协议SRP和Spring安全