我是編程新手,我在這裏提問,貢獻(當我有更多的知識時),基本上只是學習和弄清楚編程是否適合我。在Python中創建二十一點遊戲
我目前正在通過Udemy課程學習Python,並且正在開發一個里程碑項目來創建21點遊戲。唯一的規則是我使用面向對象的編程,併爲Card和Deck等事物創建類。
我看過一些關於面向對象的教程,但我仍然沒有信心實現它們,所以我希望我可以分享我寫的內容,並希望通過這裏的交互有更好的理解。
首先,我制定了一個計劃,將項目分解爲更小的任務,因爲這對我來說是壓倒性的。這是我的計劃是什麼:
創建52張
指定數值的甲板每張卡(ACE可以是1或11)
洗牌
經銷商和玩家每人交2張牌作爲開始
詢問玩家是否他/她想要擊球或站在
經銷商必須打,直到他達到17
比較「點」,看看誰擁有更多的
在任何時候,如果有人超過21,那人失去
我目前被困在試圖找出第一部分。我基本上試圖用OOP和循環創建一個包含所有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()
python有指針嗎? –
我認爲他的意思是建議中的指針...... – nutmeg64
不需要明確地從對象中派生出卡片,改成'class Card()'。通過調用Card來獲取卡片,就像一個帶參數的函數(除了self),所以將'self.deck.append(Card)'改成'self.deck.append(Card(i,j))' –