加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

在Python中实现Blackjack

发布时间:2020-12-20 13:00:33 所属栏目:Python 来源:网络整理
导读:我正在为 python编写二十一点代码,我希望有人能告诉我如何制作它: 识别某人键入的内容,即“点击”或“站立”并做出相应的反应. 计算玩家的得分是多少,以及它是一个ace和一个千斤顶,并自动获胜. 好的,这是我到目前为止所得到的. "This imports the random ob
我正在为 python编写二十一点代码,我希望有人能告诉我如何制作它:

>识别某人键入的内容,即“点击”或“站立”并做出相应的反应.
>计算玩家的得分是多少,以及它是一个ace和一个千斤顶,并自动获胜.

好的,这是我到目前为止所得到的.

"This imports the random object into Python,it allows it to generate random numbers."
import random
print("Hello and welcome to Sam's Black Jack!")
input("Press <ENTER> to begin.")
card1name = 1
card2name = 1
card3name = 1
card4name = 1
card5name = 1

"This defines the values of the character cards."
Ace = 1
Jack = 10
Queen = 10
King = 10

decision = 0

"This generates the cards that are in your hand and the dealer's hand to begin with.
card1 = int(random.randrange(12) + 1)
card2 = int(random.randrange(12) + 1)
card3 = int(random.randrange(12) + 1)
card4 = int(random.randrange(12) + 1)
card5 = int(random.randrange(12) + 1)

total1 = card1 + card2

"This makes the value of the Ace equal 11 if the total of your cards is under 21"
if total1 <= 21:
    Ace = 11

"This defines what the cards are"
if card1 == 11:
    card1 = 10
    card1name = "Jack"
if card1 == 12:
    card1 = 10
    card1name = "Queen"
if card1 == 13:
    card1 = 10
    card1name = "King"
if card1 == 1:
    card1 = Ace
    card1name = "Ace"

elif card1:
    card1name = card1

if card2 == 11:
    card2 = 10
    card2name = "Jack"
if card2 == 12:
    card2 = 10
    card2name = "Queen"
if card2 == 13:
    card2 = 10
    card2name = "King"
if card2 == 1:
    card2 = Ace
    card2name = "Ace"

elif card2:
    card2name = card2

if card3 == 11:
    card3 = 10
    card3name = "Jack"
if card3 == 12:
    card3 = 10
    card3name = "Queen"
if card3 == 13:
    card3 = 10
    card3name= "King"
if card3 == 1:
    card3 = Ace
    card3name = "Ace"

elif card3:
    card3name = card3

if card4 == 11:
    card4 = 10
    card4name = "Jack"
if card4 == 12:
    card4 = 10
    card4name = "Queen"
if card4 == 13:
    card4 = 10
    card4name = "King"
if card4 == 1:
    card4 = Ace
    card4name = "Ace"

elif card4:
    card4name = card4

if card5 == 11:
    card5 = 10
    card5name = "Jack"
if card5 == 12:
    card5 = 10
    card5name = "Queen"
if card5 == 13:
    card5 = 10
    card5name = "King"
if card5 == 1:
    card5 = Ace
    card5name = "Ace"

elif card5:
    card5name = card5
"This creates the totals of your hand"
total2 = card1 + card2
total3 = card1 + card2 + card3

print("You hand is ",card1name," and",card2name)
print("The total of your hand is",total2)
decision = input("Do you want to HIT or STAND?").lower()

"This is the decision for Hit or Stand"
if 'hit' or 'HIT' or 'Hit' in decision:
    decision = 1
    print("You have selected HIT")
    print("Your hand is ",",card2name,card3name)
    print("The total of your hand is",total3)

if 'STAND' or 'stand' or 'Stand' in decision:
    print("You have selected STAND")

"Dealer's Hand"
dealer = card4 + card5
print()
print("The dealer's hand is",card4name,card5name)

if decision == 1 and dealer < total3:
    print("Congratulations,you beat the dealer!")

if decision == 1 and dealer > total3:
    print("Too bad,the dealer beat you!")

好的,没关系,我修好了:D

我只是将命中和支架改为是或否

if total2 < 21:
    decision = input("Do you want to hit? (Yes or No)")

    "This is the decision for Hit or Stand"
    if  decision == 'Yes':
        print("You have selected HIT")
        print("Your hand is ",card3name)
        print("The total of your hand is",total3)

    if decision == 'No':
            print("You have selected STAND")

解决方法

这可以帮助您入门:

http://docs.python.org/library/random.html

http://docs.python.org/library/strings.html

http://docs.python.org/library/stdtypes.html

http://docs.python.org/reference/index.html

我看到你添加了一些代码;非常好.

考虑一下需要存在的程序部分.您将需要一些“卡片”的表示 – 卡片具有重要的功能,例如它们的价值,它们的套装等.鉴于卡片,您应该能够分辨它的价值,无论是Jack还是Ace或者2的心.阅读Python中的“类”以开始使用它.

您还将获得一张牌 – 您的经销商目前持有的牌以及您的牌手当前持有的牌. “手”是一组卡片,您(程序员)可以添加新卡片(当卡片发出时).您可能希望使用包含这些数组的“列表”或“数组”或“类”来执行此操作.一只手也有一个值,通常是卡值的总和,但是如你所知,Aces是特殊的(它们可以是1或11),所以你需要用一些“if语句”正确处理这种情况.

你也会有一个甲板;甲板是一个特殊的集合 – 它在启动时只有52张牌,而且没有一张牌重复(你当然可以使用几个牌来玩,但这是你以后可以解决的一个复杂因素).你如何填充这样的牌组?你的程序将要从牌组中“处理” – 所以你需要一种方法来跟踪哪些牌已经发给玩家.

那是很多东西.尝试用简单的句子写下你的程序需要做的所有逻辑,而不用担心Python.这称为“伪代码”.这不是一个真正的程序,它只是一个计划,你将要做什么 – 它对地图有用的方式很有用.如果你去的地方你去过100次,你不需要地图,但是如果你开车到某个城镇,你从来没去过,你要先计划你的路线,然后才能到达在方向盘后..

使用您的伪代码更新您的问题,以及您已经(或将要做出)将伪代码转换为Python的任何尝试.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读