原諒我,如果這只是一個超級簡單的解決方案,因爲我對Python很新穎。現在我試圖製作一個基本的視頻遊戲,並且爲了節省空間,我決定爲一次戰鬥遇到一個模塊 - 這樣當我爲每次遭遇編寫代碼時所要做的就是運行該模塊中的函數,只需要寫出敵人的獨特變量。但是,代碼需要知道玩家的HP,或者玩家擁有什麼樣的武器。我試圖在函數模塊中的變量之前放置global
,但它當然不起作用,因爲它引用了模塊中的全局變量,而不是主要的遊戲文件。還是有另一種方式去解決這個問題?如果你需要我附上我的代碼,我會很樂意這樣做。讓模塊文件使用全局變量?
編輯:繼承模塊中的代碼(稱爲combat
)。我希望它做的是主文件的代碼只是說:
combat.combat(3, "mysterious creature", 12, 2, 4, 3, "claws", 5, 0)
其中,關閉基於我粗淺的認識,是我編輯的變量對每個oppoent,從該行的模塊文件了。
def combat(enemylevel, enemyname, enemyhp, enemydefense, enemystrength,
enemyattack, enemyweaponattack, enemygp, run):
基於你們的困惑我猜我正在做一些非常基本的錯誤。請原諒我的(最有可能)cringey和ineffecient代碼編寫:
import random
import math
def combat(enemylevel, enemyname, enemyhp, enemydefense, enemystrength,
enemyattack, enemyweaponattack, enemygp, run):
global xp
global hp
global maxhp
global gp
global weapon_attack
global weapon
levelandname = "level" , enemylevel, enemyname
print("You draw your weapon and prepare for battle. You are fighting a",
levelandname, ".")
while enemyhp > 0:
if enemyhp > 0:
print()
attackorrun = input("Do you wish to attack or run? ")
if attackorrun == "attack" or "a":
print("You" , weapon_attack , "your" , weapon, "at the",
enemyname) # this is where the first error happens,
# says weapon_attack isn't defined.
attackroll = random.randint(1, 20)
attackroll = (attackroll+(math.floor(attack/2)))
我可能仍然留下的東西不清楚,請隨時告訴我別的做某件事,或者問我一些東西。
你瞭解了哪些功能?如果沒有,請閱讀功能。你需要函數,而不是全局變量。 – user2357112
是的,你可以請你出示你的代碼嗎?或者至少有一些功能模塊 – rassar
等,你正在使用函數?在第一次閱讀時,我認爲你只是將所有模塊的代碼放在頂層。在這種情況下,你應該閱讀函數參數,這是告訴一個函數需要知道的事情的標準方法。 – user2357112