骰宝游戏
豪赌21点
你的位置:| 骰宝游戏 > 博彩问答 > 豪赌21点

豪赌21点

发布日期:2022-04-05 03:08    点击次数:141

豪赌21点

先介绍下21点的游戏规则与流程:
1、玩家共两个角色:电脑和人类,电脑是庄家
2、游戏开始时,先给人类和电脑每个玩家分别发两张牌作为底牌,庄家底牌只漏一张
3、判断双方底牌是否直接为21点,如果其中一方为21点则直接判胜利,并在总分上加一分。如果双方都是21点,那就是平局,不得分。
4、当初始牌面上,没有直接出现21点骰宝技巧,人类玩家根据自己的牌面大小决定是否继续要牌。如果要牌,那就在牌堆中抽一张,再次询问是否要牌。如果人类牌面的总点数超过了21点,那就直接判输。
5、如果人类玩家停止要牌了,并且没有因为超过21点而被判输的情况下,则电脑要牌。电脑要牌这里,可以自己设计一个规则:比如电脑一直要牌,直到比人类玩家大才停止要牌。当然你也可以自己设定这个规则。
6、 电脑要完牌之后,直接判断人类玩家和电脑玩家的牌面大小判断胜负。
7、 完成一轮游戏的时候,可由人类玩家决定,是否继续玩下一轮
8、 牌堆中剩余的牌数不够玩一轮游戏的时候,游戏自动结束。
9、 计算规则: 2、3、4、5、6、7、8、9、10分别是正常的点数,J、Q、K都是10点
10、A比较特殊,首先把A当做1来计算,牌面总分数如果小于21,那么再把A当做11再计算一次,如果这个时候仍然小于21,那么A就当11算,如果这个时候牌面总分数大于了21,那么A就当1算。
下面是python实现的详细代码:
# coding: utf-8 -*- import random import numpy as np from random import shuffle # 定义扑克牌所表示的点数 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_names = list(playing_cards.keys()) # 用于判断手牌中是否有A poker_a = {'黑桃A', '红桃A', '梅花A', '方块A'} # 定义牌的数量 poker_count = 1 # 最终生成的牌 poker_list = poker_names * poker_count # 总分的计分器,numpy中的人数组和我们正常使用的数组差不多作用,这里数组中有两个元素,第一个代表玩家的分数,第二个代表电脑的分数 total_score = np.array([0, 0]) # 记录游戏是第几个汇合 game_round = 1 def random_card(pokers): """ 洗牌,重新对扑克牌进行随机排列 """ # 声明一个列表,用来存储洗过之后的牌 shuffle(pokers) return pokers def get_one_poker(pokers): """ 发牌:要牌的时候,需要从牌堆随机抽取一张牌 """ # 发一张牌,并在牌堆中删除这张牌 return pokers.pop() def score_count(hand_poker): """ 计算手里的牌的分数 """ # 计算牌的点数 has_a = False core = 0 for poker in hand_poker: core += playing_cards[poker] if poker in poker_a: has_a = True if has_a and core + 10 <= 21: core += 10 return core def who_win(your_poker, pc_poker): """ 判断是谁赢了 """ your_score = score_count(your_poker) pc_score = score_count(pc_poker) if your_score == 21 and pc_score == 21: print("你手上的牌为:", your_poker) print("电脑的牌为:", pc_poker) print("平局!") return np.array([1, 1]) elif your_score <= 21 and (pc_score > 21 or pc_score < your_score): print("你手上的牌为:", your_poker) print("电脑的牌为:", pc_poker) print("你赢了!") return np.array([1, 0]) else: print("你手上的牌为:", your_poker) print("电脑的牌为:", pc_poker) print("电脑赢了!") return np.array([0, 1]) def if_get_next_poker(pokers): """ 是否继续要牌 """ print("你手上的牌为:", pokers) input_message = input("是否继续要牌? y/n") if input_message.lower() == "y": return True else: return False def continue_or_quit(): """ 一轮游戏结束后,是继续还是结束 当牌堆里面牌的数目不足的时候,自动停止游戏 """ if len(poker_list) >= 4: input_message = input("是否开启下一轮? y/n") if input_message.lower() == "y": return True else: print("剩余的牌不够玩下一轮了,游戏结束") print("总比分:", total_score) return False def start_game_init_two_poker(poker_database): # 开局的时候,自动给玩家和电脑发两张牌 return [ poker_database.pop(random.randint(0, len(poker_database)-1)), poker_database.pop(random.randint(0, len(poker_database)-1)) ] def one_round(poker_list): """ 每一轮游戏的流程 """ your_poker = start_game_init_two_poker(poker_list) pc_poker = start_game_init_two_poker(poker_list) your_score = score_count(your_poker) pc_score = score_count(pc_poker) if your_score == 21 and pc_score == 21: print("你手上的牌为:", your_poker) print("电脑的牌为:", pc_poker) print("平局!") return np.array([1, 1]) elif your_score > 21: print("你手上的牌为:", your_poker) print("电脑的牌为:", pc_poker) print("电脑赢了") return np.array([0, 1]) elif pc_score > 21: print("你手上的牌为:", your_poker) print("电脑的牌为:", pc_poker) print("你赢了") return np.array([1, 0]) else: pass # 玩家要牌 while if_get_next_poker(your_poker): your_poker.append(poker_list.pop()) if score_count(your_poker) > 21: break # 电脑要牌,这里简单设定:只要牌数没有超过20.就继续要牌 while score_count(pc_poker) < 20: pc_poker.append(poker_list.pop()) return who_win(your_poker, pc_poker) input('游戏开始,祝你好运哦!按"回车"游戏正式开始\n') while True: print('游戏第{}轮 :'.format(game_round)) # 打印一下游戏的分隔符 print('*' * 60) # 洗牌 random_card(poker_list) # 一轮游戏开始 score = one_round(poker_list) # 计算总比分 total_score = np.add(total_score, score) print('目前比分为:玩家{}:电脑{}'.format(total_score[0], total_score[1])) game_round += 1 # 本轮结束,继续还是退出游戏 if not continue_or_quit(): break

>> 在名侦探柯南的出场人物中你最希望哪位与灰原哀成为CP..

>> 有哪些小众但是很好用的护肤品和化妆品..

>> 如何评价创造营2020第八期(下)「学长合作第三次公演舞台」..

>> 网赌只是玩家银行卡被冻结半年会被抓么还可能解冻银行卡么..

>> 哪个捕鱼游戏好浅谈波克是如何吸引用户..

>> 如果真的有僵尸它能在三秒钟之内把一个正常成年男子的血液吸干吗..

>> 博彩问答 玩789为什么那么容易喝酒..

>> 【恭喜】博狗玩家获得MGS平台全新游戏“幸运生肖“首位获奖者..

>> 博彩问答 清炸小鱼技巧..

>> 关于网赌的真实事件..