【发布时间】:2013-10-07 15:37:42
【问题描述】:
我正在开发我的第一个 Python 游戏,但在开始之前,我正在研究一些教程并尝试修改它们。我发现了一个很棒的“宝石迷阵”风格的游戏,我正在尝试对其进行一些更改,但是我遇到了一个问题。
游戏通常使用七种不同的图像。当游戏开始时,它会以某种随机的顺序放置宝石,但它会检查以确保它没有将大量相同的宝石放在一起。
我想要做的是将图像数量大幅增加到 17 个。所有图像都正确加载,但是有些图像我想限制它们出现的次数。例如,我希望 gem1 到 gem3 成为更常见的 gem,而所有其他的都不会出现。我正在考虑做一些类似使用随机的事情。让它选择一个 1-5 之间的数字。如果选择 1-4,则会选择 gem1、gem2 或 gem3。如果选择 5,任何其他 gem 都会出现,但它始终需要遵循 possibleGems 代码,以确保一堆相同的图像不会出现在彼此旁边。关于如何使这项工作的任何想法?
我在对 gems 最重要的地方包含了一些教程代码。您也可以通过在 google 中搜索 gemgem.py 来查找完整的源代码。
possibleGems = list(range(len(GEMIMAGES)))
for offsetX, offsetY in ((0, -1), (1, 0), (0, 1), (-1, 0)):
# Narrow down the possible gems we should put in the
# blank space so we don't end up putting an two of
# the same gems next to each other when they drop.
neighborGem = getGemAt(boardCopy, x + offsetX, y + offsetY)
if neighborGem != None and neighborGem in possibleGems:
possibleGems.remove(neighborGem)
newGem = random.choice(possibleGems)
boardCopy[x][y] = newGem
dropSlots[x].append(newGem)
加载图片的代码
# Load the images
GEMIMAGES = []
for i in range(1, NUMGEMIMAGES+1):
gemImage = pygame.image.load('gem%s.png' % i)
if gemImage.get_size() != (GEMIMAGESIZE, GEMIMAGESIZE):
gemImage = pygame.transform.smoothscale(gemImage, (GEMIMAGESIZE, GEMIMAGESIZE))
GEMIMAGES.append(gemImage)
【问题讨论】:
标签: python random constraints pygame