21点游戏python代码简单实现(含流程图和功能设计)

21点游戏python简单实现

规则简述

  1. 玩家共两个角色:电脑和人类,电脑是庄家

  2. 游戏开始时,先给人类和电脑每个玩家分别发两张牌作为底牌,庄家底牌只漏一张

  3. 判断双方底牌是否直接为21点,如果其中一方为21点则直接判胜利,并在总分上加一分。如果双方都是21点,那就是平局,不得分。

  4. 当初始牌面上,没有直接出现21点,人类玩家根据自己的牌面大小决定是否继续要牌。如果要牌,那就在牌堆中抽一张,然后再次判断胜负。如果人类牌面的总点数超过了21点,那就直接判输

  5. 如果人类玩家停止要牌了,并且没有因为超过21点而被判输的情况下,则电脑要牌。电脑要牌这里,可以自己设计一个规则:
    5.1 比如电脑一直要牌,直到比人类玩家大才停止要牌。
    5.2 根据牌堆中剩余牌的数量,计算赢的概率,然后设置一个阈值,超过阈值就要,低于就不要。
    5.3 …

  6. 循环4和5的步骤

  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算。

游戏流程图设计

流程图

功能设计

class poke

class dealer

  • field:
    • cards: 每一个荷官对应多副牌
  • function:
    • give_one_card(): 发牌

class Player

  • field:
    • name: 昵称
    • score: 总比分
    • points:计数器
    • cards_in_hand->list: 手牌
  • function:
    • who_win(player): 判断未提前结束下与其他玩家的胜负
    • now_count(): 计算当前牌数字
    • get(*cards): 将荷官发的牌加入手牌

代码实现

# usr/bin/env python3;
#-*-coding: utf-8-*
import random
from sys import exit

class Poke:
    '''
    Poke类用来初始化一个牌堆
    '''
    def __init__(self):
        self.cards = [[face, suite] for face in "♠♥♦♣" for suite in [1,2,3,4,5,6,7,8,9,10,'J','Q','K']]
        random.shuffle(self.cards)


class Dealer:
    '''
    Dealer类初始化一个荷官
    主要用来实现取牌和发牌的作用
    '''
    def __init__(self):
        self.cards = Poke().cards

    def give_one_card(self):
        '''
        给玩家发牌
        return: list
        '''
        if not self.cards:
            # 重新取一副牌并洗牌
            self.cards.extend(Poke().cards)
        
  • 10
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值