编程菜鸟需要 OOP 建议
Programming Noob needs OOP advice
我一直在为 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-oriented-programming/
然后你可以阅读官方python文档:https://docs.python.org/3.7/tutorial/classes.html
以您的示例为例,制作面向 OOP 的二十一点游戏的一些技巧:
- 您的游戏需要一副纸牌,我认为 class 纸牌将是一个好的开始。
- 这个class应该包含卡片,你可以创建一个class代表卡片。您将在某处实例化 52 个对象并将它们存储在实例化的 Deck 中。
- 您可以在 Deck class 中创建方法来管理您的牌组。例如,洗牌或抽牌
- 然后你有一个游戏,二十一点。请记住,您可以将 classes Card and Deck 重复用于其他游戏。因此,关于 21 点规则的所有内容(例如,您的牌的价值)都应该在 21 点 class 中进行描述。在这里你可以实例化你的 52 张牌,因为其他游戏有时使用 less/more。然后执行游戏规则(轮流,谁赢,....)
- 您可能会创建一个 class 播放器来存储有关播放器的信息。
最后的建议,避免在代码中使用特殊字符
suits = ['♠','♣','♥','♦']
这会给你带来麻烦。
我一直在为 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-oriented-programming/
然后你可以阅读官方python文档:https://docs.python.org/3.7/tutorial/classes.html
以您的示例为例,制作面向 OOP 的二十一点游戏的一些技巧:
- 您的游戏需要一副纸牌,我认为 class 纸牌将是一个好的开始。
- 这个class应该包含卡片,你可以创建一个class代表卡片。您将在某处实例化 52 个对象并将它们存储在实例化的 Deck 中。
- 您可以在 Deck class 中创建方法来管理您的牌组。例如,洗牌或抽牌
- 然后你有一个游戏,二十一点。请记住,您可以将 classes Card and Deck 重复用于其他游戏。因此,关于 21 点规则的所有内容(例如,您的牌的价值)都应该在 21 点 class 中进行描述。在这里你可以实例化你的 52 张牌,因为其他游戏有时使用 less/more。然后执行游戏规则(轮流,谁赢,....)
- 您可能会创建一个 class 播放器来存储有关播放器的信息。
最后的建议,避免在代码中使用特殊字符
suits = ['♠','♣','♥','♦']
这会给你带来麻烦。