python - 编程菜鸟需要 OOP 建议
问题描述
我一直在为 python 中的一个项目制作二十一点游戏,并且已经制作了一副纸牌(见下文)。但我想改用对象来改进它,因为我认为我会帮助我更多地提高我的技能。
我想知道是否有人知道如何,或者我可以在哪里获得一些资源来帮助我学习 OOP(如果这会产生任何场景,对不起,如果不是我是新手)。
import random
deck = []
hand = []
def MakeDeck(deck):
suits = ['♠','♣','♥','♦']
values = ['A',2,3,4,5,6,7,8,9,10,'J','Q','K']
for suit in suits:
for value in values:
deck.append((value,suit))
def DrawCard(deck, hand):
card1 = random.choice(deck)
deck.remove(card1)
card2 = random.choice(deck)
deck.remove(card2)
hand.append(card1)
hand.append(card2)
print("Your hand:\n", hand)
MakeDeck(deck)
DrawCard(deck, hand)
解决方案
试试这个:https ://realpython.com/python3-object-orientated-programming/
然后你可以阅读官方 python 文档:https ://docs.python.org/3.7/tutorial/classes.html
对于您的示例,制作面向 OOP 的二十一点游戏的一些技巧:
- 你的游戏需要一副纸牌,我认为一副牌会是一个好的开始。
- 这个类应该包含卡片,你可以创建一个代表卡片的类。您将在某处实例化 52 个对象并将它们存储在实例化的 Deck 中。
- 你可以在你的 Deck 类中创建方法来管理你的 Deck。例如,洗牌或抽牌
- 然后你有一个游戏,二十一点。请记住,您可以将您的课程 Card 和 Deck 重复用于其他游戏。所以关于二十一点规则的一切(例如,你的牌的值)都应该在 BlackJack 类中描述。在这里,您可以实例化您的 52 张牌,因为其他游戏有时会使用更少/更多。然后执行游戏规则(回合,谁赢,......)
- 您可能会创建一个 Player 类来存储有关玩家的信息。
最后一条建议,避免代码中出现特殊字符
suits = ['♠','♣','♥','♦']
这会给你带来麻烦。
推荐阅读
- excel - 复制范围并在循环中相乘
- javascript - Auth0:获取用户组的数据
- math - 我应该怎么做才能在 Octave 上绘制小波?
- dask - 从 Dask 数组中选择多个切片的最佳方法
- jpa - 在使用 EclipseLink 的构造函数表达式中使用 NULL 时出现 NullPointerException
- java - Android MediaRecorder kotlin 以更好的质量录制视频
- php - 替换 PHP 中的字符串 - 不适用于更长的字符串
- excel - 调用方法或确定方法是否有效/存在?
- mysql - 如何向 MariaDB 中的现有 JSON 对象添加新对象?
- c# - 用于在表中存储日期的字符串由于未知原因正在转换 int