【问题标题】:Iterating through a Class using a Function使用函数迭代类
【发布时间】:2020-10-01 05:27:38
【问题描述】:

我创建了一个类来存储游戏中的玩家。我在循环中附加玩家的详细信息以创建对象。我对如何最好地存储当前播放器的详细信息(列表中的第一个)以及如何使用函数进入下一个播放器感到困惑。即第一名到第二名;第 2 到第 3 等等。使用字典而不是类会更好吗?任何想法都非常感谢。

class Player:  # Create a class and structure
    score = 0

    def __init__(self, pnum, name, score, round):
        self.pnum = pnum
        self.name = name
        self.score = score
        self.round = round


def CreatePlayers():

    a = int(input("Please enter the number of players\t "))

    player = []  # Create List Array

    for i in range(a):  # populate list using class
        player.append(Player(i, input("Enter Name:\t"), 0, 0))

    print("\n")

    for x in range(len(player)):  # print from class
        print(player[x].pnum, player[x].name, "\tScore:\t ", player[x].score,
              "\tRound:\t ", player[x].round)

    global current_player
    current_player = (player[0].pnum, player[0].name, player[0].score,
                      player[0].round)

【问题讨论】:

  • 您已经在遍历播放器以将它们打印出来。接下来你打算对每个玩家做什么?
  • 感谢您查看此内容。你是对的,我正在迭代打印玩家。抱歉不清楚。我的目的是创建基于骰子的游戏,当前玩家可以掷骰子直到他被淘汰,然后代码将前进到下一个玩家,使该玩家成为新的当前玩家。
  • 首先编写一个函数,该函数接受一个玩家并允许该玩家按照您的描述进行游戏。然后你可以考虑迭代所有玩家来玩。
  • 我认为这很有意义。谢谢。

标签: python function class iteration


【解决方案1】:

我可能误解了一些东西,但看起来您可以将 Player 对象分配给 current_player

# The current player will now be the first player
current_player = player[0]
# Iterate over all players in the order they're created:
for i in range(len(player)):
    current_player = player[i]
    print("Currently playing: player {}".format(i))
    current_player.some_method()

.some_method() 可以负责更新播放器的详细信息(如果需要)。

在您的代码中有点令人困惑的是,该数组被称为 player 而不是 players 或类似的名称。

【讨论】:

  • 非常感谢您的关注。你给了我一个关于如何进行的坚实想法。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2021-09-22
  • 2020-09-07
  • 1970-01-01
  • 2021-05-16
  • 2020-10-18
  • 2017-07-13
  • 2021-05-22
  • 2010-12-14
相关资源
最近更新 更多