[英]Creating a Blackjack Game in Python
我是编程的新手,我会加入这里提出问题,做出贡献(当我掌握更多知识时),基本上只是学习并弄清楚编程是否适合我。
我目前正在通过有关Udemy的课程学习Python,并且我正在一个具有里程碑意义的项目中创建二十一点游戏。 对我而言,唯一的规则是使用面向对象的编程并为Card和Deck之类的类创建类。
我看过一些有关OOP的教程,但是我对实现它们并不充满信心,所以我希望可以分享我写的内容,并希望通过此处的互动可以更好地理解。
首先,我制定了一个计划,将项目分解为较小的任务,因为这对我来说是不堪重负的。 这是我的计划:
用52张牌创建套牌
为每张卡分配数值(A可以为1或11)
洗牌
发牌手和玩家每手被送出2张牌
询问玩家是否要击打或站立
庄家必须打到17岁
比较“积分”以查看谁拥有更多积分
无论何时,如果有人超过21岁,该人将输掉比赛
我目前只能尝试弄清楚第一部分。 我基本上是在尝试使用OOP和for循环创建一个列表,其中包含所有52张卡,但似乎无法正确处理。
我在下面分享我的代码,这些代码是用Python 2编写的。有什么想法继续吗?
谢谢保罗
编辑#1:谢谢大家的评论和反馈。 我想现在离我越来越近了。 有人可以让我知道我是否做对了,以及如何打印我用来创建牌组的列表,以便能够看到列表中的52张卡片中的每张? 我尝试使用str方法,但看来我做错了。
import random
rank = [2,3,4,5,6,7,8,9,10,'Jack','Queen','King','Ace']
suit = ['Diamonds','Clubs','Hearts','Spade']
class Card(object):
def __init__(self,rank,suit):
self.rank = rank
self.suit = suit
def __str__(self):
return self.suit + self.rank
def grab_suit(self):
return self.suit
def grab_rank(self):
return self.rank
def draw(self):
print (self.suit + self.rank)
class Deck(object):
def __init__(self):
self.cards = []
for i in rank:
for j in suit:
self.cards.append(Card(i,j))
def __str__(self):
return self.cards()
通常在这里,像您这样的人会提出您要提出的特定问题,而不是“给我一些指示”,因此请准备好抱怨这个问题太广泛。 就是说,我会给您一些提示。
您已经在任何类之外定义了suit和rank数组(也已经翻转了它们的名称,但无论如何)。 那不是面向对象的。 我将它们放在Deck类中,因为这是使用它们的地方。 这样想:每张纸牌不需要知道所有可能的等级和西服,只需要知道它所属的牌组在创建时的等级和西服即可。
我不确定self.deck = self
发生了什么。 您想在那里做什么? 在下一行中,您具有self.deck = []
,并将用Card对象填充它。 听起来不错,但是,将局部变量命名为与其所属的类的名称相同并不是一个好主意。 这将变得令人困惑。 我建议称它为cards
,因为它将是一个充满卡片组的卡片数组。 您的循环看起来不错,但是就在这里: self.deck.append(Card)
您没有正确创建Card。 该卡需要知道您要分配给该特定卡的等级和西装。 我会让你自己去做。 祝好运 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.