Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我如何设置一个方法,其中一个传递的参数可能没有值?_Python_Methods_Return - Fatal编程技术网

Python 我如何设置一个方法,其中一个传递的参数可能没有值?

Python 我如何设置一个方法,其中一个传递的参数可能没有值?,python,methods,return,Python,Methods,Return,我提前道歉,因为我自己都不知道该怎么问这个问题。我基本上是一个自学成才的程序员,我在项目的某一部分中苦苦挣扎,该部分要求我将信息从一个方法传递到另一个方法,其中一个参数可能根本没有价值 这个项目是我正在做的一个游戏。一种两人游戏,是一个非常基本的pvp/掷骰子战斗系统。在这个游戏中,玩家可以拥有某些专长,为自己提供某些奖励,或对对手施加某些惩罚。一旦该专长被使用,就不能在同一场游戏中再次使用,并且只能在玩家的回合中选择该专长 比如说。专长“致残一击”将对对手的下一次掷骰施加-1惩罚,或者专长“泰

我提前道歉,因为我自己都不知道该怎么问这个问题。我基本上是一个自学成才的程序员,我在项目的某一部分中苦苦挣扎,该部分要求我将信息从一个方法传递到另一个方法,其中一个参数可能根本没有价值

这个项目是我正在做的一个游戏。一种两人游戏,是一个非常基本的pvp/掷骰子战斗系统。在这个游戏中,玩家可以拥有某些专长,为自己提供某些奖励,或对对手施加某些惩罚。一旦该专长被使用,就不能在同一场游戏中再次使用,并且只能在玩家的回合中选择该专长

比如说。专长“致残一击”将对对手的下一次掷骰施加-1惩罚,或者专长“泰坦一击”将对玩家的伤害施加+50%加成。因此,我知道我需要确保该玩家的“determineHit”方法同时包含两个“featUsed”函数。例如,如果玩家一决定使用致残一击,这显然不会对他的即时攻击产生任何影响,但会影响玩家二的攻击掷骰

问题是,专长是在玩家的回合中选择的。因此,很自然地,在开始时,当playerOne运行时,他的usedFeat方法将填充适当的数据,但playerTwo的方法将不包含任何内容

我在JSON中设置了完整的壮举列表。这个列表相当广泛,但我只在这里列出与示例相关的部分。正如您将在JSON中看到的,只需要壮举的名称和“动作”。名字显然就是名字,“动作”是用来以某种方式操纵玩家掷骰的数值

我还介绍了两种相关的方法,以及可能有用的注释

Feat JSON:

“泰坦之锤”:{
“状态”:“力量”,
“描述”:“你的下一次攻击造成50%以上的伤害,每次战斗只能使用一次。”,
“要求”:[13,10,0,0,“更大的破碎冲击”],
“状态”:“活动”,
“行动”:0.5
},
“致命一击”:{
“状态”:“力量”,
“desc”:“你用这样的力量打击你的对手,这会阻碍他们自己的反击尝试,给他们下一次攻击一个-1。”,
“要求”:[3,6,4,0,“无”,0],
“状态”:“活动”,
“行动”:-1
},
“改进的致残一击”:{
“状态”:“力量”,
“描述”:“在下次攻击中将致残一击提高到-3。”,
“要求”:[7,8,5,0,“致命一击”],
“状态”:“活动”,
“行动”:-3
},
“更大的致命一击”:{
“状态”:“力量”,
“描述”:“在下次攻击中将致残一击提高到-5。”,
“要求”:[9,9,6,0,“改进的致残打击”],
“状态”:“活动”,
“行动”:-5
方法向玩家询问拟使用的专长(注意:featDict是从加载和转储上述专长JSON的模块中提取的。另外请注意,有一个名为“pTwoFeatUsed(self)”的方法,基本上就是这段代码,仅适用于玩家2):

def PONEFEATED(自):
featDict=gameFeats.featDict()[0]
feat=“”
而专长!=“无”:
专长=输入(“您希望使用专长吗?(在此处键入专长的全名,或“无”):)
如果专长=‘力量攻击’或专长=‘战斗专长’或专长=‘防御战斗’或专长=‘受虐狂’:
打印(专长+“是被动专长,将在此之后确定。”)
elif feat在self.pOneInfo['feats take']中:
打印(featDict[0][feat][action'])
返回[feat,featDict[0][feat]['action']]
elif专长不在self中。pOneInfo['feats take']和feat!=“无”:
打印(“要么你没有这个专长,要么你没有正确地键入它”)
就像featUsed方法一样,有一个“determineHitPTwo”方法,它基本上是完全相同的代码,只用于playerTwo的攻击

def determineHitPOne(自):
pOneToHit=self.pOneInfo['hit']
pTwoAC=self.pTwoInfo['ac']
对于self.pOneInfo[“完成的壮举”]:
如果word==“电源攻击”:
self.pOnepMod=self.pOnePowerAttack()
如果单词==“战斗专长”:
self.pOnecMod=self.pOneCombatExpertise()
如果word==“防御战斗”:
self.pOnedMod=self.pOneDefensiveFighting()
如果word==“受虐狂”:
self.pOnemMod=self.pOneMasochist()
pMod=self.pOnepMod
cMod=self.pOnecMod
dMod=self.pOnedMod
mMod=self.ponemod
pTwodMod=self.pTwodMod
pTwomMod=self.pTwomMod
hit=random.randint(1,20)
总计=整数(命中+波内托命中-pMod+cMod-dMod+mMod)
打印(“滚动:”+str(命中)+“基部:”+str(击中)+“PA:”+str(pMod)+“CE:”+str(cMod)+“DF:”+str(dMod)+“MC:”+str(mMod))
totalAC=pTwoAC+pTwodMod-pTwomMod
打印(“P2 AC:+str(pTwoAC)+”DF:+str(pTwodMod)+”MC:+str(pTwomMod))
如果总计>=总计AC:
打印(self.playeron+“滚动”+str(total)+“击中AC”+str(totalAC)+“并且成功。”)
self.pTwodMod=0
self.pTwomMod=0
自我决定的magepone()
其他:
打印(self.playerTwo+“滚动一个”+str(total)+“击中一个AC”+str(totalAC)+“并未命中”。)
self.pTwodMod=0
self.pTwomMod=0
self.scoreboard()
我尝试过很多方法,我知道为传入参数设置默认值,但这似乎只适用于
def determineHitPOne(self, pOneFeatUsed=None, pTwoFeatUsed=None):
def pOneFeatUsed(self):
    featDict = gameFeats.featDict()[0]
    self.p1_last_feat = None
    while self.p1_last_feat is not None:
       self.p1_last_feat = input("Do you wish to use a feat? (type full name of feat here, or 'none'): ")
        if self.p1_last_feat == 'none':
            self.p1_last_feat = None
        elif self.p1_last_feat in ('power attack', 'combat expertise', 'defensive fighting', 'masochist'):
            print(self.p1_last_feat + " is a passive feat, and will be determined after this.")
        elif self.p1_last_feat in self.pOneInfo['feats taken']:
            print(featDict[0][self.p1_last_feat ]['action'])
            return [self.p1_last_feat , featDict[0][self.p1_last_feat ]['action']]
        else self.p1_last_feat not in self.pOneInfo['feats taken']:
            print("Either you do not have that feat, or you did not type it correctly")
def determineHitPOne(self):
    if self.p1_last_feat is None:
        pOneFeatUsed = ["none", 0]
    if self.p2_last_feat is None:
        pTwoFeatUsed = ["none", 0]