此任务是根据游戏角色确定两个属性,力量和技能之间的差异。这个过程是:
这必须重复,直到strength属性等于或低于0,但是,这部分我不能这样做,我知道如何循环,但这总是通过询问用户是否希望再次进行来完成。
c1sc=random.randint(1,6)
c2sc=random.randint(1,6)
if c1sc > c2sc:
c1st=c1st+strengthmodifier
c2st=c2st-strengthmodifier
c1sk=c1sk+skillmodifier
c2sk=c2sk-skillmodifier
print('Character 1, your strength attribute is: '+(str(c1st))+' and your skill attribute is: '+(str(c1sk)))
print('Character 2, your strength attribute is: '+(str(c2st))+' and your skill attribute is: '+(str(c2sk)))
elif c2sc > c1sc:
c1st=c1st-strengthmodifier
c2st=c2st+strengthmodifier
c1sk=c1sk-skillmodifier
c2sk=c2sk+skillmodifier
print('Character 1, your strength attribute is: '+(str(c1st))+' and your skill attribute is: '+(str(c1sk)))
print('Character 2, your strength attribute is: '+(str(c2st))+' and your skill attribute is: '+(str(c2sk)))
else:
print('It\'s a draw, no changes were made.')
if c1sk < 0:
c1sk=0
elif c2sk < 0:
c2sk=0
if c1st < 0:
print('Character 1 died. Game over.')
elif c2st < 0:
print('Character 2 died. Game over.')
请帮忙!
答案 0 :(得分:1)
让我向您介绍while
循环。如果指定的条件为true或false,则在希望发生某些事情时使用此方法。
我简要编辑了你的代码。
导入随机
def main():
player1=20
player2=12
strength=(20-10)/5
strength_mod=int(strength)
while player1>0 and player2>0:
dice1=random.randint(1,6)
dice2=random.randint(1,6)
if dice1>dice2:
player1+=strength_mod
player2-=strength_mod
print("Player 1 strength is: ", player1)
print("Player 2 strength is: ", player2)
elif dice1<dice2:
player2+=strength_mod
player1-=strength_mod
print("Player 1 strength is: ", player1)
print("Player 2 strength is: ", player2)
main()
我给了玩家1和2个初始值,可以根据自己的喜好进行更改。为了向下舍入,我创建了另一个变量并将强度更改为整数。
答案 1 :(得分:0)
添加另一个循环来进行缩减...
c1sc=random.randint(1,6)
c2sc=random.randint(1,6)
if c1sc > c2sc:
while c2st > 0 and c2sk > 0:
c1st=c1st+strengthmodifier
c2st=c2st-strengthmodifier
c1sk=c1sk+skillmodifier
c2sk=c2sk-skillmodifier
print('Character 1, your strength attribute is: '+(str(c1st))+' and your skill attribute is: '+(str(c1sk)))
print('Character 2, your strength attribute is: '+(str(c2st))+' and your skill attribute is: '+(str(c2sk)))
elif c2sc > c1sc:
while c1st > 0 and c1sk > 0:
c1st=c1st-strengthmodifier
c2st=c2st+strengthmodifier
c1sk=c1sk-skillmodifier
c2sk=c2sk+skillmodifier
print('Character 1, your strength attribute is: '+(str(c1st))+' and your skill attribute is: '+(str(c1sk)))
print('Character 2, your strength attribute is: '+(str(c2st))+' and your skill attribute is: '+(str(c2sk)))
else:
print('It\'s a draw, no changes were made.')
if c1sk < 0:
c1sk=0
elif c2sk < 0:
c2sk=0
if c1st < 0:
print('Character 1 died. Game over.')
elif c2st < 0:
print('Character 2 died. Game over.')
当然,有更简洁的方式来写这个。这仍然不理想,但代码减少......
c1sc=random.randint(1,6)
c2sc=random.randint(1,6)
if c1sc != c2sc:
while c1st > 0 and and c2st > 0:
c1st += strengthmodifier if c1sc > c2sc else -1 * strengthmodifier
c2st += strengthmodifier if c1sc < c2sc else -1 * strengthmodifier
c1sk += skillmodifier if c1sc > c2sc else -1 * skillmodifier
c2sk += skillmodifier if c1sc < c2sc else -1 * skillmodifier
print('Character 1, your strength attribute is: '+(str(c1st))+' and your skill attribute is: '+(str(c1sk)))
print('Character 2, your strength attribute is: '+(str(c2st))+' and your skill attribute is: '+(str(c2sk)))
c1sk = math.max(c1sk, 0) # Clamp skill to a minimum of 0
c2sk = math.max(c2sk, 0) # ...
if c1st < c2st:
print('Character 1 died. Game over.')
else:
print('Character 2 died. Game over.')
else:
print('It\'s a draw, no changes were made.')
最后,假设每轮都重新滚动......
while c1st > 0 and and c2st > 0:
c1sc=random.randint(1,6)
c2sc=random.randint(1,6)
if c1sc != c2sc:
c1st += strengthmodifier if c1sc > c2sc else -1 * strengthmodifier
c2st += strengthmodifier if c1sc < c2sc else -1 * strengthmodifier
c1sk += skillmodifier if c1sc > c2sc else -1 * skillmodifier
c2sk += skillmodifier if c1sc < c2sc else -1 * skillmodifier
print('Character 1, your strength attribute is: '+(str(c1st))+' and your skill attribute is: '+(str(c1sk)))
print('Character 2, your strength attribute is: '+(str(c2st))+' and your skill attribute is: '+(str(c2sk)))
else:
print('It\'s a draw, no changes were made.')
c1sk = math.max(c1sk, 0) # Clamp skill to a minimum of 0
c2sk = math.max(c2sk, 0) # ...
if c1st < c2st:
print('Character 1 died. Game over.')
else:
print('Character 2 died. Game over.')
答案 2 :(得分:0)
这样你就可以得到图片:(伪代码)
while (c2sk > 0 && c1sk > 0)
//do complete everything up until the if statements
if c1st <0
print "c1st died"
elif c2st <0
print "c2st died"
不确定这是否正是您正在寻找的。如果c2sk和c1sk应该在每次进入循环时被随机重新分配。