嗨,我是一个位于纽约市的Web开发人员,记录了我与React,React Native和Python的旅程,所有人都可以看到。请关注我的dev.to profo或my twitter以获取更新,如果您有疑问,请随时接触。感谢您的支持!
这是一个有趣的。众所周知,我知道我一直在参加boot.dev后端编程在线课程,并且刚刚完成了与OOP相关的另一个模块。
在本课程中,我们创建了一个DeckOfCards
类,该类将扑克套装和手在其上定义为类变量。然后,我们定义构造函数,以制造52张独特的西装 +等级组合(例如“黑桃王牌”)的甲板(例如,card = ("Spade", "Ace")
)。
以下代码显示了类的开始,并在其上定义了这些类变量。
import random
class DeckOfCards:
SUITS = ["Hearts", "Diamonds", "Clubs", "Spades"]
RANKS = [
"Ace",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"Jack",
"Queen",
"King",
]
random
软件包也将导入以后使用。
现在,我们定义一个构造函数函数和一个create_deck
函数,以便实际上可以使用甲板。 create_deck
函数使用嵌套环为每个西装 +等级组合创建一个唯一的元组:
def __init__(self):
self.__cards = []
self.create_deck()
def create_deck(self):
for suit in self.SUITS:
for rank in self.RANKS:
new_card = (rank, suit)
self.__cards.append(new_card)
现在我们有了甲板,并且它存储在私有的__cards
实例变量中,我们可以创建一个函数,就像在真实的扑克中一样,将甲板放置。这利用random.shuffle()
方法来洗净到位的卡片列表。
def shuffle_deck(self):
random.shuffle(self.__cards)
最后,我们要做的就是处理一张卡以开始游戏。为此,我们检查甲板上是否剩下任何卡片,以及是否有顶级卡。顶级卡将是随机的,因为它被改组,就像在真正的扑克中一样:
def deal_card(self):
if (len(self.__cards) == 0):
return None
else:
top_card = self.__cards.pop(0)
return top_card
这是对面向对象的编程的力量的有趣演示,因为它利用类来执行所有行为并存储简单的扑克甲板所需的所有数据。
与功能性编程不同,该编程试图使程序更透明和可预测,并且与数据与数据的简单关系依赖于将数据和方法存储在类上的能力,以完成一系列任务。
如果您喜欢这样的项目,并且想了解更多信息,请查看我的Twitter @stonestwebdev,我会跟随!明天见另一个项目。