所以,我的工作,你用它来创建单词和获得积分字母一个基本的文字游戏,发给你一个“手”(Dictionary对象)。
这种“手”在一些功能的使用的参数:计算玩家的分数,更新的字母数在手的球员已经使用的一个或多个字母之后,显示的手,检查玩家的字的有效性,等等
从我读过的一切,我知道我应该避免,如果我能全局变量(虽然我还没有完全知道为什么)。
所以,我可以用什么样的一般做法为一些使用“手”作为一个参数的功能呢?
所以,我的工作,你用它来创建单词和获得积分字母一个基本的文字游戏,发给你一个“手”(Dictionary对象)。
这种“手”在一些功能的使用的参数:计算玩家的分数,更新的字母数在手的球员已经使用的一个或多个字母之后,显示的手,检查玩家的字的有效性,等等
从我读过的一切,我知道我应该避免,如果我能全局变量(虽然我还没有完全知道为什么)。
所以,我可以用什么样的一般做法为一些使用“手”作为一个参数的功能呢?
这就是所谓的对象。 创建一个类与共享状态,并且共享状态的功能。
之所以这样,是不是全局变量更好的是,它是一个更受限制的版本,同样的概念 - 你可以清楚地看到哪些功能正在操纵这些变量,文档(和执行)的预期不变量的那些变量。 全局变量它最终被很容易有哪些有关于共享变量的状态有不同的期望的功能。
它也可以让你有同一对象的多个副本,因此而不必投你的变量集合和集合的成员之间的关联,你有对象的集合,它使你的代码更简单。 它是那么简单的事情,只有通过你所定义的函数来处理这些对象 。
使用类encapusulation ...见下文......游戏知道双手
class Hand:
def __init__(self):
num_cards = 7
self.cards = ["a" for i in range(num_cards)]
class Game:
def __init__(self,num_hands=2):
self.hands = [Hand() for i in range(num_hands)]
self.current_turn = 0
def play(self):
self.hands[self.current_turn].play()
self.current_turn = (self.current_turn+1)%len(self.hands)
这是Python 3中的代码; 在Python 2类应该从派生object
。
......虽然他们并不需要。 如果他们不这样做,他们会失去某些功能