使用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-单元格之间和网格周围边框的像素厚度