簡體   English   中英

我如何使用一個變量的值在python中調用另一個變量?

[英]How can i use the value of one variable to call another in python?

因此,我現在在pygame中工作,確保所有內容都停留在屏幕上正確位置的唯一方法是檢查每個可能的位置,直到找到適合正在處理圖片的位置為止。 然后,對下一張圖片執行相同操作,直到所有內容加載完畢。

因為pygame每秒以行數運行,所以我的代碼需要盡可能短。

我想知道的是,我是否可以接受我的dessert_rand變量,並根據其值直接在語句中使用它來調用某個變量。 例如:

screen.blit(wood, (spot_(wood_rand)x, spot_(wood_rand)y).

我知道格式不正確,但這是我想要做的一般想法。 這將使我可以將目前需要的12條線縮短到1條。

    wood_rand = randint(1,6)

    spot_1x = 0
    spot_1y = 200

    spot_2x = 100
    spot_2y = 350

    spot_3x = 300
    spot_3y = 350

    spot_4x = 400
    spot_4y = 200

    spot_5x = 300
    spot_5y = 50

    spot_6x = 100
    spot_6y = 50

    spot_7x = 200
    spot_7y = 200

    #Wondering if there's a way to make this all shorter...

    #Somthing like this would work.
    #screen.blit(dessert, (spot_(dessert_rand)x, spot_(dessert_rand)y)

    if wood_rand == 1:
        screen.blit(wood, (spot_1x, spot_1y))
    elif wood_rand == 2:
        screen.blit(wood, (spot_2x, spot_2y))
    elif wood_rand == 3:
        screen.blit(wood, (spot_3x, spot_3y))
    elif wood_rand == 4:
        screen.blit(wood, (spot_4x, spot_4y))
    elif wood_rand == 5:
        screen.blit(wood, (spot_5x, spot_5y))
    elif wood_rand == 6:
        screen.blit(wood, (spot_6x, spot_6y))

您知道清單嗎? 看起來您可能有一個包含元組的spot列表:

spot = [(0, 200), (100, 350), ...]

然后,您可以將整個if - elseif鏈替換為:

screen.blit(wood, spot[wood_rand - 1])

請注意- 1 :Python中的列表基於0。 隨機分配時最好考慮到這一點:

wood_rand = randint(0,5)
screen.blit(wood, spot[wood_rand])

(順便說一句, 甜點vs.沙漠 ,這告訴我你的意思是后者。)

如果您有七個圖像,並且想要將它們隨機分配到七個不同的屏幕位置,請將位置放入列表中的元組,然后使用random.shuffle將它們隨機化:

import random
spots = [(0, 200), (100, 350), (300, 350), (400, 200), (300, 50), (100, 50), (200, 200)]
spots = random.shuffle(spots)

然后,您可以簡單地將圖像一個接一個地放置在它們的位置:

screen.blit(wood, spots[0]) 
screen.blit(brick, spots[1])
screen.blit(wheat, spots[2])

等等

或更簡潔(或更“ Pythonic”):

images = [wood, brick, wheat, image4, image5, image6, image7]

for i, image in enumerate(images):
    screen.blit(image, spots[i])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM