电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

python實現(xiàn)21點小游戲

瀏覽:93日期:2022-06-21 09:59:03

用python實現(xiàn)21點小游戲,供大家參考,具體內(nèi)容如下

from random import shuffleimport randomimport numpy as npfrom sys import exit# 初始化撲克牌playing_cards = { '黑桃A': 1, '黑桃2': 2, '黑桃3': 3, '黑桃4': 4, '黑桃5': 5, '黑桃6': 6, '黑桃7': 7, '黑桃8': 8, '黑桃9': 9, '黑桃10': 10, '黑桃J': 10, '黑桃Q': 10, '黑桃K': 10, '紅桃A': 1, '紅桃2': 2, '紅桃3': 3, '紅桃4': 4, '紅桃5': 5, '紅桃6': 6, '紅桃7': 7, '紅桃8': 8, '紅桃9': 9, '紅桃10': 10, '紅桃J': 10, '紅桃Q': 10, '紅桃K': 10, '梅花A': 1, '梅花2': 2, '梅花3': 3, '梅花4': 4, '梅花5': 5, '梅花6': 6, '梅花7': 7, '梅花8': 8, '梅花9': 9, '梅花10': 10, '梅花J': 10, '梅花Q': 10, '梅花K': 10, '方塊A': 1, '方塊2': 2, '方塊3': 3, '方塊4': 4, '方塊5': 5, '方塊6': 6, '方塊7': 7, '方塊8': 8, '方塊9': 9, '方塊10': 10, '方塊J': 10, '方塊Q': 10, '方塊K': 10}# 撲克牌面poker_name = list(playing_cards.keys())# 撲克牌的數(shù)量poker_count = 1poker_list = poker_count*poker_name# 用于判斷手中的牌是否有A,再根據(jù)牌面判斷A是否取值1還是11four_a = {’黑桃A’, ’紅桃A’, ’梅花A’, ’方塊A’}# 計分器total_score = np.array([0, 0])# 記錄回合數(shù)game_round = 1def random_cards(poker_name_list): ''' 定義洗牌函數(shù):重新對牌進(jìn)行隨機排列 ''' shuffle(poker_name_list)def score_count(hand_poker): ''' 計算手中牌的分?jǐn)?shù) :param hand_poker:一個含有牌名的列表 :return: 手中牌 的分?jǐn)?shù)poker_score ''' # 聲明一個變量,記錄牌的總分?jǐn)?shù) poker_score = 0 # 標(biāo)記:判斷是否有A的標(biāo)記,默認(rèn)沒有 have_a = False # 計算手中牌的分?jǐn)?shù) for k in hand_poker:poker_score += playing_cards[k] # 判斷手中的牌是否含有A,再根據(jù)A的規(guī)則進(jìn)行分?jǐn)?shù)的計算 for i in hand_poker:if i in four_a: have_a = True breakelse: continue if have_a:if poker_score + 10 <= 21: poker_score = poker_score + 10 return poker_scoredef who_win(your_score, pc_score): ''' 判斷游戲的勝負(fù) :param your_score: 玩家分?jǐn)?shù) :param pc_score: 電腦分?jǐn)?shù) :return: 勝負(fù)的數(shù)組 ''' if your_score > 21 and pc_score > 21:print(’平局’)return np.array([0, 0]) elif your_score > 21 and pc_score <= 21:print(’對不起,玩家輸了’)return np.array([0, 1]) elif your_score <= 21 and pc_score > 21:print(’恭喜??!玩家勝利了’)return np.array([1, 0]) elif your_score <= 21 and pc_score <= 21:if your_score > pc_score: print(’恭喜??!玩家勝利了’) return np.array([1, 0])elif your_score < pc_score: print(’對不起,玩家輸了’) return np.array([0, 1])else: print(’平局!!’) return np.array([0, 0])def if_get_next_poker(): ''' 是否繼續(xù)要牌 ''' if_continue = input('是否繼續(xù)要下一張牌?(Y/N)>>>>:') if if_continue.upper() == 'Y':return get_one_poker() elif if_continue.upper() == 'N':print(’玩家停止叫牌’)return False else:print('輸入有誤,請重新輸入')return if_get_next_poker()def get_one_poker(): ''' 發(fā)牌函數(shù):隨機將poker_list里的牌取出一張 :return: ''' return poker_list.pop(random.randint(0, len(poker_list)-1))def continue_or_quit(): ''' 一輪游戲結(jié)束后,詢問玩家是否進(jìn)行下一輪 ''' if_next_round = input('是否進(jìn)行下一輪游戲(Y/N)>>>>:') if if_next_round.upper() == ’Y’:# 判斷撲克牌是否玩的了下一輪if len(poker_list) <= 15: print(’對不起,剩余牌數(shù)不足,無法進(jìn)行下一輪,游戲結(jié)束?!? exit(1)else: return True elif if_next_round.upper() == 'N':print('玩家不玩了。游戲結(jié)束?。?)exit(1) else:print('輸入有誤,請重新輸入')return continue_or_quit()def start_game_init_two_poker(poker_database): ''' 初始化游戲,給玩家和電腦隨機發(fā)兩張牌 :param poker_database: 牌堆 :return: 玩家和電腦的初始牌面列表 ''' return [poker_database.pop(random.randint(0, len(poker_list)-1)), poker_database.pop(random.randint(0, len(poker_list)-1))]def every_round(porker_list): ''' 每一輪游戲的流程 :param porker_list:牌堆 :return:游戲的獲勝者 ''' # 聲明一個變量,代表玩家手里的牌 your_hand_poker = [] # 聲明一變量,代表電腦手里的牌 pc_hand_poker = [] # 游戲開始,先從牌堆中取兩張牌 you_init_poker = start_game_init_two_poker(porker_list) pc_init_poker = start_game_init_two_poker(porker_list) # 展示玩家獲得的撲克 print(f'玩家所獲得的牌是:{you_init_poker[0]}和{you_init_poker[1]}') print(f'電腦所獲得的第一張牌是:{pc_init_poker[0]}') # 玩家和電腦得到所發(fā)的兩張撲克牌 your_hand_poker.extend(you_init_poker) pc_hand_poker.extend(pc_init_poker) # 計算初始撲克的分?jǐn)?shù) your_score = score_count(your_hand_poker) pc_score = score_count(pc_hand_poker) # 根據(jù)初始牌面分?jǐn)?shù),判斷是否能有21點,如果有直接使用判斷輸贏函數(shù) if your_score == 21 or pc_score == 21:print('初始牌中有21點了。')return who_win(your_score, pc_score) # 如果沒有,根據(jù)自己手中的牌,判斷是否要牌。 else:while True: get_new_poker = if_get_next_poker() # 玩家要牌 if get_new_poker != False:# 將新牌拿到手里并重新計算手里的牌的分?jǐn)?shù)your_hand_poker.append(get_new_poker)print(f'玩家手里的牌是{your_hand_poker}')your_score = score_count(your_hand_poker)if your_score > 21: print('玩家的牌已經(jīng)超過21點') print(f'電腦手里的牌是{pc_hand_poker}') return who_win(your_score, pc_score)else: continue # 玩家停止要牌,則電腦開始要牌 elif get_new_poker == False:# 電腦要牌規(guī)則一:只要比玩家分?jǐn)?shù)就要牌# while pc_score < your_score:# pc_new_poker = get_one_poker()# pc_hand_poker.append(pc_new_poker)# # 重新計算電腦手中的牌的分?jǐn)?shù)# pc_score = score_count(pc_hand_poker)# 電腦要牌規(guī)則二:當(dāng)電腦的手中牌的分?jǐn)?shù)落在區(qū)間[1:18]時,就一直要牌while pc_score in range(1, 19): pc_new_poker = get_one_poker() pc_hand_poker.append(pc_new_poker) # 重新計算電腦的分?jǐn)?shù) pc_score = score_count(pc_hand_poker)print(f'電腦手里的牌為{pc_hand_poker}')return who_win(your_score, pc_score) else:continue'''游戲調(diào)用主程序'''while True: print('游戲即將開始,祝你好運?。?!') input('按下【enter】開始游戲>>>') print(f'現(xiàn)在是第{game_round}輪游戲') # 洗牌 random_cards(poker_list) # 游戲開始 score = every_round(poker_list) # 計算總分 total_score = np.add(total_score, score) print(f’此輪游戲結(jié)束,目前比分:{total_score[0]}:{total_score[1]}’) game_round += 1 continue_or_quit()running result

python實現(xiàn)21點小游戲

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 跨境物流_美国卡派_中大件运输_尾程派送_海外仓一件代发 - 广州环至美供应链平台 | 吉祥新世纪铝塑板_生产铝塑板厂家_铝塑板生产厂家_临沂市兴达铝塑装饰材料有限公司 | 光伏支架成型设备-光伏钢边框设备-光伏设备厂家 | 超声波乳化机-超声波分散机|仪-超声波萃取仪-超声波均质机-精浩机械|首页 | 纳米二氧化硅,白炭黑,阴离子乳化剂-臻丽拾科技 | 南京泽朗生物科技有限公司 | 电地暖-电采暖-发热膜-石墨烯电热膜品牌加盟-暖季地暖厂家 | 电镀电源整流器_高频电解电源_单脉双脉冲电源 - 东阳市旭东电子科技 | 北京三友信电子科技有限公司-ETC高速自动栏杆机|ETC机柜|激光车辆轮廓测量仪|嵌入式车道控制器 | 济南菜鸟驿站广告|青岛快递车车体|社区媒体-抖音|墙体广告-山东揽胜广告传媒有限公司 | 福州时代广告制作装饰有限公司-福州广告公司广告牌制作,福州展厅文化墙广告设计, | 屏蔽服(500kv-超高压-特高压-电磁)-徐吉电气 | 优考试_免费在线考试系统_培训考试系统_题库系统_组卷答题系统_匡优考试 | 上海橡胶接头_弹簧减震器_金属软接头厂家-上海淞江集团 | 建筑资质代办_工程施工资质办理_资质代办公司_北京众聚企服 | 上海深蓝_缠绕机_缠膜机-上海深蓝机械装备有限公司 | 恒压供水控制柜|无负压|一体化泵站控制柜|PLC远程调试|MCGS触摸屏|自动控制方案-联致自控设备 | 电销卡_北京电销卡_包月电话卡-豪付网络| 上海租车公司_上海包车_奔驰租赁_上海商务租车_上海谐焕租车 | 南京和瑞包装有限公司| 在线钠离子分析仪-硅酸根离子浓度测定仪-油液水分测定仪价格-北京时代新维测控设备有限公司 | 托盘租赁_塑料托盘租赁_托盘出租_栈板出租_青岛托盘租赁-优胜必达 | 免费网站网址收录网_海企优网站推荐平台 | TPE_TPE热塑性弹性体_TPE原料价格_TPE材料厂家-惠州市中塑王塑胶制品公司- 中塑王塑胶制品有限公司 | 篷房[仓储-婚庆-展览-活动]生产厂家-江苏正德装配式帐篷有限公司 | 厚壁钢管-厚壁无缝钢管-小口径厚壁钢管-大口径厚壁钢管 - 聊城宽达钢管有限公司 | 济南展厅设计施工_数字化展厅策划设计施工公司_山东锐尚文化传播有限公司 | 杭州|上海贴标机-百科 | 股票入门基础知识_股票知识_股票投资大师_格雷厄姆网 | 洁净棚-洁净工作棚-无菌室-净化工程公司_北京卫护科技有限公司 | 北京森语科技有限公司-模型制作专家-展览展示-沙盘模型设计制作-多媒体模型软硬件开发-三维地理信息交互沙盘 | 干粉砂浆设备-干粉砂浆生产线-干混-石膏-保温砂浆设备生产线-腻子粉设备厂家-国恒机械 | 瓶盖扭矩仪(扭力值检测)-百科 | 便携式XPDM露点仪-在线式防爆露点仪-增强型烟气分析仪-约克仪器 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 | 浩方智通 - 防关联浏览器 - 跨境电商浏览器 - 云雀浏览器 | 自动气象站_农业气象站_超声波气象站_防爆气象站-山东万象环境科技有限公司 | 电脑知识|软件|系统|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网 | 耐酸泵,耐腐蚀真空泵,耐酸真空泵-淄博华舜耐腐蚀真空泵有限公司 精密模具-双色注塑模具加工-深圳铭洋宇通 | 除湿机|工业除湿机|抽湿器|大型地下室车间仓库吊顶防爆除湿机|抽湿烘干房|新风除湿机|调温/降温除湿机|恒温恒湿机|加湿机-杭州川田电器有限公司 | 交联度测试仪-湿漏电流测试仪-双85恒温恒湿试验箱-常州市科迈实验仪器有限公司 | 不锈钢水箱生产厂家_消防水箱生产厂家-河南联固供水设备有限公司 |