私は最初の Python ゲームに取り組んでいますが、始める前に、いくつかのチュートリアルに取り組み、それらを変更しようとしています。私は素晴らしい「宝石をちりばめた」スタイルのゲームを見つけました。これに変更を加えようとしていますが、1 つの問題が発生しています。
ゲームは通常、7 つの異なる画像を使用しました。ゲームが開始されると、ジェムは多少ランダムな順序で配置されますが、同じジェムが大量に隣り合っていないことを確認しました。
私がやりたいことは、画像の数を 17 に大幅に増やすことです。すべての画像は正しく読み込まれますが、表示される回数を制限したい画像もあります。たとえば、gem1 から gem3 までをより一般的な gem にしたいのですが、他のすべての gem はそれほど頻繁には表示されません。私はランダムを使用するようなことを考えています。1 ~ 5 の数字を選択します。1 ~ 4 を選択すると、gem1、gem2、または gem3 のいずれかが選択されます。5 を選択すると、他の宝石が表示されますが、同じ画像が隣り合って表示されないように、常に possibleGems コードに従う必要があります。これを機能させる方法についてのアイデアはありますか?
gem にとって最も重要な場所にいくつかのチュートリアル コードを含めました。また、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)