<p>我有一个非常长的程序,为一个卡纳斯塔游戏,我正在写,在其中有一个变量,结束了玩家的回合,如果它等于某个值。然而,这个转弯会重复。在</p>
<p>我在类似这样的论坛上读过很多不同的文章和帖子,但这些似乎都不管用。我甚至有一个调试系统在if语句之前打印变量的值,变量是正确的值,但是if语句没有看到相同的值。在</p>
<p>我不能给出整个代码,但我不能给出整个代码。我使用的是python2.7.2,无法将文件与要导入的主文件分开。在</p>
<p>程序的第一行是:</p>
<pre><code>endTurn=1
</code></pre>
<p>当满足赢得游戏的条件时,将调用以下函数,但由于错误,我无法测试此函数是否有效。在</p>
^{pr2}$
<p>移动时调用以下函数。变量<code>decide</code>是<code>raw_input()</code>变量。在</p>
<pre><code>def move(player,decide):
global endTurn
theMove=decide.lower()
#if player says to end turn
if theMove=="end":
#until player discards something
discarded=0
while not discarded:
displayHand(player)
#ask player for discard
discard=int(raw_input(" Enter the list number of the card you wish to discard:"))-1
#if discard ID is in player's hand length
if not discard<0 and not discard>len(player["hand"])-1:
#add card to discard pile and remove from hand
discardPile.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(player["hand"][discard])
del(player["hand"][discard])
discarded=1
debug("Before changing, endTurn is %s"%str(endTurn))
endTurn = 0
debug("After changing, endTurn is %s"%str(endTurn))
if theMove=="new book":
newBook(player)
if theMove=="add to book":
addBook(player)
</code></pre>
<p>这里是转弯的终点。<code>turn(thePlayer)</code>重复该函数。debug语句显示正确的值0,但是<code>if</code>仍然读取1。它所在的函数顶部也有<code>global endTurn</code>。在</p>
<pre><code>debug("If ending turn, endTurn of %s should be 0."%str(endTurn))
if endTurn==1:
turn(thePlayer)
</code></pre>
<p>非常感谢任何帮助!在</p>
<p>编辑:代码在<a href="http://labs.codecademy.com/CV9z#:workspace" rel="nofollow">http://labs.codecademy.com/CV9z#:workspace</a>上可用。我要求任何查看代码的人都不要修改它,这样其他人就可以看到真正的代码。在</p>