我是关于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()
结果如下所示:
现在我想要实现的是当我鼠标点击其中一个单元格时,应用图像选择效果(阴影,颜色,......任何东西)
问题是我不知道如何获取/指向显示的单元格以及如何在鼠标单击时对其应用炫酷效果。
如果有人可以在这里给予帮助,我会非常感激。
非常感谢!