用Python實(shí)現(xiàn)21點(diǎn)小游戲(簡(jiǎn)易)

小游戲程序業(yè)務(wù):

由于我不會(huì)玩21點(diǎn),寫出來的程序有點(diǎn)瑕疵~ 謝謝理解
21點(diǎn)游戲規(guī)則與流程:
  • 玩家共兩個(gè)角色:電腦和人類底哗,電腦是莊家
  • 判斷雙方底牌是否直接為21點(diǎn),如果其中一方為21點(diǎn)則直接判勝利
  • 如果人類牌面的總點(diǎn)數(shù)超過了21點(diǎn)前标,那就直接判輸
  • 如果玩家停止要牌了,并且沒有超過21點(diǎn)的情況下距潘,則電腦根據(jù)概率要牌炼列。
  • 電腦要完牌之后,直接判斷人類玩家和電腦玩家的牌面大小判斷勝負(fù)音比。
  • 完成一輪游戲的時(shí)候俭尖,可由人類玩家決定,是否繼續(xù)玩下一輪
  • 牌堆中剩余的牌數(shù)不夠玩一輪游戲的時(shí)候洞翩,由玩家決定是否重新取牌稽犁。
  • 計(jì)算規(guī)則: 2、3骚亿、4已亥、5、6来屠、7陷猫、8秫舌、9、10分別是正常的點(diǎn)數(shù)绣檬,J足陨、Q、K都是10點(diǎn)
  • A比較特殊娇未,A可以做為1或11墨缘。
代碼展示
import time
import random


def welcome_game():
    print('歡迎光臨21點(diǎn)小游戲')
    time.sleep(1)   # 休眠1秒
    print('祝您玩的愉快')
    game_cmd()

# 判斷是否游戲
def game_cmd():
    f_command = input('是否進(jìn)入游戲?y(進(jìn)入)/n(退出)')
    if f_command == 'y':
        game_start()
    elif f_command == 'n':
        print('期待您的下次光臨')
        quit()
    else:
        print('輸入錯(cuò)誤,請(qǐng)查證后再次輸入')
        game_cmd()

# 新?lián)淇伺屏斜?def card_list():
    f_list = ['J','Q','K','A']*4
    card_list =[i for i in range(2,11)]*4
    card_list.extend(f_list)
    # 打亂撲克牌順序
    random.shuffle(card_list)
    return card_list

# 概率控制
def computer_p(score):
    # 前面的數(shù)占總數(shù)的百分比
    p =  (21-score)/13
    # 如果符合這些情況零抬,就繼續(xù)要牌镊讼,否則返回0
    if p > 1/4 and score < 13 or p > 1/3 and score <16 or p > 1/2 and score <17 or p > 3/4 and score <18:
        x = 1
    else :
        x = 0
    return x

# 計(jì)算得分
def sorce(score_list):
    score = 0
    num = score_list.count('A')
    for i in score_list:
        if i == 'J' or i =='Q' or i == 'K':
            score += 10
        elif i == 'A':
            score += 1
        else:
            score += i
    # 21點(diǎn)最多加1個(gè)10分
    if num >= 1 and score < 12:
        return score+10
    else:
        return score

# 判斷函數(shù)
def pd_fun(new_card_list):

    if len(new_card_list) > 8:
        again_cmd = input('請(qǐng)選擇是否繼續(xù)?y/n')
        if again_cmd == 'y':
            x = True
            person = []
            computer = []
            return x, person, computer
        else:
            quit()
    else:
        again_cmd = input('請(qǐng)選擇是否繼續(xù)平夜?y/n')
        print('我要重新取牌了')
        if again_cmd == 'y':
            game_start()
        else:
            quit()

# 開始游戲
def game_start():
    person = []
    computer = []
    # 取出一副順序隨機(jī)的撲克牌
    new_card_list = card_list()
    person_score = 0
    computer_score = 0
    x = 1
    while x:
        # 選擇是否要牌
        Pcmd = input('請(qǐng)選擇是否要牌?:y/n')
        Ccmd = '1'
        if Pcmd =='y':
            # 取出的牌和剩余牌數(shù)
            card= new_card_list.pop(-1)
            person.append(card)
            person_score = sorce(person)
            print('你的牌為:', person)
            print('點(diǎn)數(shù)和為:', person_score)
            if person_score > 21:
                print('你輸了蝶棋!')

                # 調(diào)用函數(shù)判斷是否繼續(xù)玩
                x,person,computer = pd_fun(new_card_list)
        else:
            Pcmd = 'n'

        if computer_p(sorce(computer)) == 1:
            card = new_card_list.pop(-1)
            computer.append(card)
            computer_score = sorce(computer)
            #print('電腦牌為:', computer)
            #print('點(diǎn)數(shù)和為:', computer_score)
            if computer_score > 21:
                print('電腦輸了')

                x,person,computer = pd_fun(new_card_list)
        else:

            Ccmd = 'n'

        if Pcmd == 'n' and Ccmd == 'n':
            if person_score > computer_score:
                print('你的牌面:{},電腦牌面{},你贏了!'.format(person,computer))
            elif person_score == computer_score:
                print('你的牌面:{},電腦牌面{},平局!'.format(person,computer))
            else:
                print('你的牌面:{},電腦牌面{},電腦贏!'.format(person,computer))
            x,person,computer = pd_fun(new_card_list)


if __name__ == '__main__':
    welcome_game()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市忽妒,隨后出現(xiàn)的幾起案子玩裙,更是在濱河造成了極大的恐慌,老刑警劉巖段直,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吃溅,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡鸯檬,警方通過查閱死者的電腦和手機(jī)决侈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來喧务,“玉大人赖歌,你說我怎么就攤上這事」睿” “怎么了亲桥?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵俱两,是天一觀的道長(zhǎng)来庭。 經(jīng)常有香客問我橄霉,道長(zhǎng)吟温,這世上最難降的妖魔是什么宽菜? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任葵姥,我火速辦了婚禮紊浩,結(jié)果婚禮上旭等,老公的妹妹穿的比我還像新娘酌呆。我一直安慰自己,他們只是感情好搔耕,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布隙袁。 她就那樣靜靜地躺著痰娱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪菩收。 梳的紋絲不亂的頭發(fā)上梨睁,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音娜饵,去河邊找鬼坡贺。 笑死,一個(gè)胖子當(dāng)著我的面吹牛箱舞,可吹牛的內(nèi)容都是我干的遍坟。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼晴股,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼愿伴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起电湘,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤隔节,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后胡桨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體官帘,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年昧谊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了刽虹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡呢诬,死狀恐怖涌哲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情尚镰,我是刑警寧澤阀圾,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站狗唉,受9級(jí)特大地震影響初烘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜分俯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一肾筐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧缸剪,春花似錦吗铐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽典阵。三九已至,卻和暖如春镊逝,著一層夾襖步出監(jiān)牢的瞬間壮啊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工撑蒜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留他巨,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓减江,卻偏偏與公主長(zhǎng)得像染突,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子辈灼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容