Я работаю над своей первой игрой на Python, но прежде чем я начну, я работаю над некоторыми учебниками и пытаюсь их модифицировать. Я нашел отличную игру в стиле «bejeweled», в которую я пытаюсь внести некоторые изменения, однако я столкнулся с одной проблемой.Python Случайные условия
В игре обычно используются семь разных изображений. Когда игра начнется, она поместит драгоценные камни в несколько случайный порядок, но она проверит, чтобы убедиться, что она не помещает тонну одних и тех же драгоценных камней рядом друг с другом.
Что я хочу сделать, это значительно увеличить количество изображений до семнадцати. Все изображения загружаются правильно, однако некоторые изображения я хочу ограничить количество раз, когда они появляются. Например, я хочу, чтобы gem1 через gem3 был более распространенным камнем, в то время как все остальные не появлялись так часто. Я думаю о том, чтобы делать что-то вроде случайного. Выберите номер между 1-5. Если выбрано 1-4, будут выбраны либо gem1, gem2, либо gem3. Если выбрать 5, появится любой из других драгоценных камней, но всегда нужно следовать по коду возможного кода, чтобы убедиться, что рядом с ними не появляются куча одних и тех же изображений. Любые идеи о том, как сделать эту работу?
Я включил некоторый код учебника в места, которые являются самыми важными для драгоценных камней. Вы также можете найти полный исходный код, выполнив поиск gemgem.py в google.
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 и довольно новичок в программировании в целом, поэтому я потерялся, поскольку код такой, как это, принадлежит учебнику, которое я пытаюсь изменить. Кажется, что код хранит каждое изображение драгоценного камня в списке GEMIMAGES и присваивает каждому номеру. Затем он использует эти цифры для проверки правильности совпадения трех (или более). Я не могу понять, как применить этот подход и добавить его в учебную игру, не делая много изменений, которые, скорее всего, закончится тем, что я что-то сломаю. Любые советы о том, как поместить этот код в учебник, чтобы он работал? – Badge