处理来自2d列表的显示的blitted图像

时间:2017-01-16 21:49:36

标签: python pygame

我是关于pygame的新手,我需要帮助操作表面上的blitted图像。

首先,我有2个函数生成一个2d列表,其值为1到4:

def realNumber(proba):
randomNumber = random.random()

x1, x2, x3 = proba[0], proba[1], proba[2]

if randomNumber < x1:
    return 4
if x1 < randomNumber and randomNumber < x2:
    return 3
if x2 < randomNumber and randomNumber < x3:
    return 2
else:
    return 1

def gameBoard(n, proba):
matrix = [[realNumber(proba) for x in range(n)] for y in range(n)] 
return matrix

然后我使用该列表并使用pygame:

显示它
import sys, pygame, bases, possible, merge
pygame.init()

# Init vars
mapSize = 5
xPos = 288
yPos = 265
proba=(0.05,0.30,0.6)
size = width, height = 1088, 607
gameBoard = gameBoard(mapSize, proba)
screen = pygame.display.set_mode(size)
surface = pygame.image.load("images/surface-5x5.png")
numOne = pygame.image.load("images/1.png")
numTwo = pygame.image.load("images/2.png")
numThree = pygame.image.load("images/3.png")
numFour = pygame.image.load("images/4.png")
cells = {
    1: numOne,
    2: numTwo,
    3: numThree,
    4: numFour
}
cellSize = 32

然后我创建了一个绘制gameBoard网格的函数:

def drawGrid():
for col in range(mapSize):
    for row in range(mapSize):
        surface.blit(cells[gameBoard[col][row]], (yPos + row*cellSize, xPos + col*cellSize, cellSize, cellSize))

最后我将结果加载到主循环中:

while 1:
for event in pygame.event.get():
    if event.type == pygame.QUIT: sys.exit()
    elif event.type == pygame.MOUSEBUTTONDOWN:
        pos = pygame.mouse.get_pos()

screen.blit(surface, (0, 0))
pygame.display.update()

drawGrid()

结果如下所示:

enter image description here

现在我想要实现的是当我鼠标点击其中一个单元格时,应用图像选择效果(阴影,颜色,......任何东西)

问题是我不知道如何获取/指向显示的单元格以及如何在鼠标单击时对其应用炫酷效果。

如果有人可以在这里给予帮助,我会非常感激。

非常感谢!

0 个答案:

没有答案