【问题标题】:Small issue in code execution, python card game simulation代码执行中的小问题,python纸牌游戏模拟
【发布时间】:2012-08-23 02:10:10
【问题描述】:

这可能与谁有关,

这是纸牌游戏模拟的一些代码。 (战争游戏)。当我运行它时,我收到此错误:

player0.append(player1[range(warcard1 + 1)] 
      ^
SyntaxError: invalid syntax

我不知道错误是什么,但也许这里有人知道。希望有人可以为我解决这个问题。当然,代码仍在进行中,所以如果有任何其他错误,我很乐意听到它们及其可能的解决方案。

import random

cards = ['ace', 'ace', 'ace', 'ace', '1', '1', '1', '1', '2', '2', '2', '2', '3', '3', '3', '3', '4', '4', '4', '4', '5', '5', '5', '5', '6', '6', '6', '6', '7', '7', '7', '7', '8', '8', '8', '8', '9', '9', '9', '9', '10', '10', '10', '10', 'jack', 'jack', 'jack', 'jack', 'queen', 'queen', 'queen', 'queen', 'king', 'king', 'king', 'king']

order = ['ace', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'jack', 'queen', 'king'] 

print "shuffling cards" 
random.shuffle(cards,random.random)
print "lets play"
player0 = [cards[i] for i in range(len(cards)) if i % 2 == 1]

player1 = [cards[i] for i in range(len(cards)) if i % 2 == 0]

while (len(player0) > 0 or len(player1) > 0):

    nextcard0 = player0[0]
    nextcard1 = player1[0]

    cardplayed0 = order.index(nextcard0)

    cardplayed1 = order.index(nextcard1)

    if cardplayed0 > cardplayed1:

        player0.append(nextcard0)
        player0.append(nextcard1)
        player0.remove(nextcard0)
        player1.remove(nextcard1)

    elif cardplayed0 < cardplayed1:

        player1.append(nextcard1)
        player1.append(nextcard0)
        player1.remove(nextcard1)
        player0.remove(nextcard0)

    elif cardplayed0 == cardplayed1:
        while warcardvalue0 == warcardvalue1:
            if len(player0) >= 4:
                warcard0 = 4
            elif len(player0) < 4:
                warcard0 = len(player0)

            if len(player1) >= 4:
                warcard1 = 4
            elif len(player1) < 4:
                warcard1 = len(player1)


            warcardvalue0 = order.index(warcard0)
            warcardvalue1 = order.index(warcard1)

            if warcardvalue0 > warcardvalue1:
                player0.append(player0[range(warcard0 + 1)]
                player0.append(player1[range(warcard1 + 1)] 
                player0.remove(player0[range(warcard0 + 1)]
                player1.remove(player1[range(warcard1 + 1)] 

            elif warcardvalue0 < warcardvalue1:
                player1.append(player1[range(warcard1 + 1)]
                player1.append(player0[range(warcard0 + 1)] 
                player1.remove(player1[range(warcard1 + 1)]
                player0.remove(player0[range(warcard0 + 1)] 
            else
                print "another war!" 


if len(player1) == 0:
    print "player1 won!"
elif len(player0) == 0:
    print "player0 won!"

【问题讨论】:

    标签: python simulation game-engine


    【解决方案1】:

    错误信息中指示的行

    player0.append(player1[range(warcard1 + 1)] 
                                               ^
    

    缺少结束)

    事实上,所有这些行都缺少右括号:

           if warcardvalue0 > warcardvalue1:
                player0.append(player0[range(warcard0 + 1)]
                player0.append(player1[range(warcard1 + 1)] 
                player0.remove(player0[range(warcard0 + 1)]
                player1.remove(player1[range(warcard1 + 1)] 
    
            elif warcardvalue0 < warcardvalue1:
                player1.append(player1[range(warcard1 + 1)]
                player1.append(player0[range(warcard0 + 1)] 
                player1.remove(player1[range(warcard1 + 1)]
                player0.remove(player0[range(warcard0 + 1)] 
    

    您可能需要查看您的代码以确保没有其他此问题的实例。

    另外,您可能会考虑(并且肯定会受益于)为您执行paren matching 的编辑器,并会提醒您注意类似的问题。我用了一个,绝对值得。

    如果您对此类编辑器感兴趣,可以从这里开始探索选项:Top 10 Best Text Editors With Brace Matching

    【讨论】:

    【解决方案2】:

    您在每个 append/remove 行上都缺少右括号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      • 2021-04-18
      • 1970-01-01
      • 2017-12-17
      • 2021-07-04
      相关资源
      最近更新 更多