Python实现21点小游戏的示例代码

目录
  • 游戏玩法
  • 代码 - v1
    • 测试
  • 代码 - v2
    • 测试

游戏玩法

游戏玩法: 该游戏由 2 到 6 个人玩,使用除大小王之外的 52 张牌,

游戏者的目标是使手中的牌的点数之和不超过 21 点且尽量大。

有着悠久的历史。黑杰克简称为21点,1700年左右法国赌场就有这种21点的纸牌游戏。

1931年,当美国内华达州宣布赌博为合法活动时,21点游戏第一次公开出现在内华达州的赌场俱乐部,

15年内,它取代掷骰子游戏,而一举成为非常流行的赌场庄家参与的赌博游戏。

代码 - v1

import random

deck = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 11] * 4

random.shuffle(deck)

print(
    "                       **********************************************************                                    ")
print(
    "                                   Welcome to the game Casino - BLACK JACK (21点)!                                         ")
print(
    "                       **********************************************************                                    ")

d_cards = []  # Initialising dealer's cards
p_cards = []  # Initialising player's cards

while len(d_cards) != 2:
    random.shuffle(deck)
    d_cards.append(deck.pop())
    if len(d_cards) == 2:
        print('荷官有 X ', d_cards[1])

# Displaying the Player's cards
while len(p_cards) != 2:
    random.shuffle(deck)
    p_cards.append(deck.pop())
    if len(p_cards) == 2:
        print("你一共 ", str(sum(p_cards)) + "点 :",p_cards)

if sum(p_cards) > 21:
    print("你的点数:",p_cards)
    print("你输了 !\n  **************荷官 Wins !!******************\n")
    exit()

if sum(d_cards) > 21:
    print("荷官的点数:", d_cards)
    print("荷官输了 !\n   ************** You are the Winner !!******************\n")
    exit()

if sum(d_cards) == 21:
    print("荷官的点数:", d_cards)
    print("***********************荷官 is the Winner !!******************")
    exit()

if sum(d_cards) == 21 and sum(p_cards) == 21:
    print("*****************The match is tie 平手!!*************************")
    exit()

def dealer_choice():
    if sum(d_cards) < 17:
        while sum(d_cards) < 17:
            random.shuffle(deck)
            d_cards.append(deck.pop())

    print("你一共 " + str(sum(p_cards)) + "点 :", p_cards)
    print("荷官一共 " + str(sum(d_cards)) + "点 :", d_cards)

    if sum(p_cards) == sum(d_cards):
        print("***************The match is tie 平手!!****************")
        exit()

    if sum(d_cards) == 21:
        if sum(p_cards) < 21:
            print("***********************Dealer is the Winner !!******************")
        elif sum(p_cards) == 21:
            print("********************There is tie !!**************************")
        else:
            print("***********************Dealer is the Winner !!******************")

    elif sum(d_cards) < 21:
        if sum(p_cards) < 21 and sum(p_cards) < sum(d_cards):
            print("***********************Dealer is the Winner !!******************")
        if sum(p_cards) == 21:
            print("**********************Player is winner !!**********************")
        if sum(p_cards) < 21 and sum(p_cards) > sum(d_cards):
            print("**********************Player is winner !!**********************")

    else:
        if sum(p_cards) < 21:
            print("**********************Player is winner !!**********************")
        elif sum(p_cards) == 21:
            print("**********************Player is winner !!**********************")
        else:
            print("***********************Dealer is the Winner !!******************")

while sum(p_cards) < 21:

    k = input('Want to hit or stay?\n Press 1 for hit and 0 for stay ')
    if k == 1:
        random.shuffle(deck)
        p_cards.append(deck.pop())
        print('你的点数:' + str(sum(p_cards)), p_cards)
        if sum(p_cards) > 21:
            print('*************你输了 !*************\n Dealer Wins !!')
        if sum(p_cards) == 21:
            print('*******************你赢了 !!*****************************')

    else:
        dealer_choice()
        break

测试

case-1

**********************************************************                                    
                                   Welcome to the game Casino - BLACK JACK (21点)!                                         
                       **********************************************************                                    
荷官有 X  3
你一共  9点 : [6, 3]
Want to hit or stay?
 Press 1 for hit and 0 for stay 1
你一共 9点 : [6, 3]
荷官一共 18点 : [5, 3, 10]
***********************Dealer is the Winner !!******************

case-2

**********************************************************                                    
                                   Welcome to the game Casino - BLACK JACK (21点)!                                         
                       **********************************************************                                    
荷官有 X  1
你一共  18点 : [8, 10]
Want to hit or stay?
 Press 1 for hit and 0 for stay 0
你一共 18点 : [8, 10]
荷官一共 17点 : [5, 1, 9, 2]
**********************Player is winner !!**********************

代码 - v2

import random

suits = ('Hearts', 'Diamonds', 'Spades', 'Clubs')
ranks = ('Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine', 'Ten', 'Jack', 'Queen', 'King', 'Ace')
values = {'Two': 2, 'Three': 3, 'Four': 4, 'Five': 5, 'Six': 6, 'Seven': 7, 'Eight': 8,
          'Nine': 9, 'Ten': 10, 'Jack': 10, 'Queen': 10, 'King': 10, 'Ace': 11}

playing = True

class Card:

    def __init__(self, suit, rank):
        self.suit = suit
        self.rank = rank

    def __str__(self):
        return self.rank + ' of ' + self.suit

class Deck:

    def __init__(self):
        self.deck = []
        for suit in suits:
            for rank in ranks:
                self.deck.append(Card(suit, rank))

    def __str__(self):
        deck_comp = ''
        for card in self.deck:
            deck_comp += '\n ' + card.__str__()

    def shuffle(self):
        random.shuffle(self.deck)

    def deal(self):
        single_card = self.deck.pop()
        return single_card

class Hand:

    def __init__(self):
        self.cards = []
        self.value = 0
        self.aces = 0  # to keep track of aces

    def add_card(self, card):
        self.cards.append(card)
        self.value += values[card.rank]
        if card.rank == 'Ace':
            self.aces += 1

    def adjust_for_ace(self):
        while self.value > 21 and self.aces:
            self.value -= 10
            self.aces -= 1

class Chips:

    def __init__(self):
        self.total = 100
        self.bet = 0

    def win_bet(self):
        self.total += self.bet

    def lose_bet(self):
        self.total -= self.bet

def take_bet(chips):
    while True:
        try:
            chips.bet = int(input('How many chips would you like to bet? '))
        except ValueError:
            print('Your bet must be an integer! Try again.')
        else:
            if chips.bet > chips.total or chips.bet <= 0:
                print(
                    "Your bet cannot exceed your balance and you have to enter a positive bet! Your current balance is: ",
                    chips.total)
            else:
                break

def hit(deck, hand):
    hand.add_card(deck.deal())
    hand.adjust_for_ace()

def hit_or_stand(deck, hand):
    global playing

    while True:
        x = input("Would you like to Hit or Stand? Enter '1' or '0' ")

        if x.lower() == '1':
            hit(deck, hand)

        elif x.lower() == '0':
            print("You chose to stand. Dealer will hit.")
            playing = False

        else:
            print("Wrong input, please try again.")
            continue
        break

def show_some(player, dealer):
    print("\nDealer's Hand:")
    print(" { hidden card }")
    print('', dealer.cards[1])
    print("\nYour Hand:", *player.cards, sep='\n ')

def show_all(player, dealer):
    print("\nDealer's Hand:", *dealer.cards, sep='\n ')
    print("Dealer's Hand =", dealer.value)
    print("\nYour Hand:", *player.cards, sep='\n ')
    print("Your Hand =", player.value)

def player_busts(player, dealer, chips):
    print("You are BUSTED !")
    chips.lose_bet()

def player_wins(player, dealer, chips):
    print("You are the winner!")
    chips.win_bet()

def dealer_busts(player, dealer, chips):
    print("Dealer has BUSTED !")
    chips.win_bet()

def dealer_wins(player, dealer, chips):
    print("Dealer is the winner!")
    chips.lose_bet()

def push(player, dealer):
    print("The match is tie !")

# GAMEPLAY
player_chips = Chips()

while True:

    print("\t              **********************************************************")
    print(
        "\t                       Welcome to the game Casino - BLACK JACK !                                                     ")
    print("\t              **********************************************************")
    print("\t                                   ***************")
    print("\t                                   * A           *")
    print("\t                                   *             *")
    print("\t                                   *      *      *")
    print("\t                                   *     ***     *")
    print("\t                                   *    *****    *")
    print("\t                                   *     ***     *")
    print("\t                                   *      *      *")
    print("\t                                   *             *")
    print("\t                                   *             *")
    print("\t                                   ***************")

    print('\nRULES: Get as close to 21 as you can but if you get more than 21 you will lose!\n  Aces count as 1 or 11.')

    deck = Deck()
    deck.shuffle()

    player_hand = Hand()
    player_hand.add_card(deck.deal())
    player_hand.add_card(deck.deal())

    dealer_hand = Hand()
    dealer_hand.add_card(deck.deal())
    dealer_hand.add_card(deck.deal())

    take_bet(player_chips)

    show_some(player_hand, dealer_hand)

    while playing:

        hit_or_stand(deck, player_hand)
        show_some(player_hand, dealer_hand)

        if player_hand.value > 21:
            player_busts(player_hand, dealer_hand, player_chips)
            break

    if player_hand.value <= 21:

        while dealer_hand.value < 17:
            hit(deck, dealer_hand)

        show_all(player_hand, dealer_hand)

        if dealer_hand.value > 21:
            dealer_busts(player_hand, dealer_hand, player_chips)

        elif dealer_hand.value > player_hand.value:
            dealer_wins(player_hand, dealer_hand, player_chips)

        elif dealer_hand.value < player_hand.value:
            player_wins(player_hand, dealer_hand, player_chips)

        else:
            push(player_hand, dealer_hand)

    print("\nYour current balance stands at", player_chips.total)

    if player_chips.total > 0:
        new_game = input("Would you like to play another hand? Enter '1' or '0' ")
        if new_game.lower() == '1':
            playing = True
            continue
        else:
            print(
                "Thanks for playing!\n \t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n \t      Congratulations! You won {} coins!\n\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n ".format(
                    player_chips.total))
            break
    else:
        print(
            "Oops! You have bet all your chips and we are sorry you can't play more.\nThanks for playing! Do come again to Casino BLACK JACK!")
        break

测试

	              **********************************************************
	                       Welcome to the game Casino - BLACK JACK !
	              **********************************************************
	                                   ***************
	                                   * A           *
	                                   *             *
	                                   *      *      *
	                                   *     ***     *
	                                   *    *****    *
	                                   *     ***     *
	                                   *      *      *
	                                   *             *
	                                   *             *
	                                   ***************

RULES: Get as close to 21 as you can but if you get more than 21 you will lose!
  Aces count as 1 or 11.
How many chips would you like to bet? 1

Dealer's Hand:
 { hidden card }
 Ten of Hearts

Your Hand:
 Six of Clubs
 Ten of Diamonds
Would you like to Hit or Stand? Enter '1' or '0' 0
You chose to stand. Dealer will hit.

Dealer's Hand:
 { hidden card }
 Ten of Hearts

Your Hand:
 Six of Clubs
 Ten of Diamonds

Dealer's Hand:
 Four of Hearts
 Ten of Hearts
 Two of Clubs
 Six of Hearts
Dealer's Hand = 22

Your Hand:
 Six of Clubs
 Ten of Diamonds
Your Hand = 16
Dealer has BUSTED !

Your current balance stands at 101
Would you like to play another hand? Enter '1' or '0' 0
Thanks for playing!
 	$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
 	      Congratulations! You won 101 coins!
	$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

到此这篇关于Python实现21点小游戏的示例代码的文章就介绍到这了,更多相关Python 21点游戏内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Pygame实战练习之纸牌21点游戏

    导语 ​ 昨天不是周天嘛? 你们在家放松一般都会做什么呢? 周末逛逛街,出去走走看电影......这是你们的周末. 程序员的周末就是在家躺尸唐诗躺尸,偶尔加班加班加班,或者跟着几个朋友在家消遣时间打打麻将,扑克牌玩一下! ​ 尤其是放长假[ps:也没啥假,长假就是过年]在老家的时候,亲戚尤其多,七大姑八大姨的一年好不容易聚一次,打打麻将跟扑克这是常有的事儿,联络下感情这是最快的方式~ 说起打扑克,我们经常就是玩儿的二百四.炸金花.三个打一个那就是叫啥名字来着,容我想想...... ​ ​话说真词

  • Python扑克牌21点游戏实例代码

    废话还是说太多了 直接上代码 import random import sys # 牌面列表 card_code = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'] # 花色列表 card_symbol = ['', '', '', ''] # 游戏初始化 def init(player_count): # 根据玩家数来生成玩家记牌器 player_group = [[] for _ in range(play

  • python实现21点小游戏

    用python实现21点小游戏,供大家参考,具体内容如下 from random import shuffle import random import numpy as np from sys import exit # 初始化扑克牌 playing_cards = { "黑桃A": 1, "黑桃2": 2, "黑桃3": 3, "黑桃4": 4, "黑桃5": 5, "黑桃6": 6

  • Python实现21点小游戏的示例代码

    目录 游戏玩法 代码 - v1 测试 代码 - v2 测试 游戏玩法 游戏玩法: 该游戏由 2 到 6 个人玩,使用除大小王之外的 52 张牌, 游戏者的目标是使手中的牌的点数之和不超过 21 点且尽量大. 有着悠久的历史.黑杰克简称为21点,1700年左右法国赌场就有这种21点的纸牌游戏. 1931年,当美国内华达州宣布赌博为合法活动时,21点游戏第一次公开出现在内华达州的赌场俱乐部, 15年内,它取代掷骰子游戏,而一举成为非常流行的赌场庄家参与的赌博游戏. 代码 - v1 import ra

  • 基于Python实现开心消消乐小游戏的示例代码

    目录 前言 一.准备 1.1 图片素材 1.2 音频素材 二.代码 2.1 导入模块 2.2 游戏音乐设置 2.3 制作树类 2.4 制作鼠标点击效果 2.5 制作出现元素 2.6 数组 2.7 制作人物画板 三.效果展示(仅部分) 3.1 初始页面 3.2 第一关画面 3.3 失败画面 3.4 第十关画面 穿过云朵升一级是要花6个金币的,有的时候金币真的很重要 前言 嗨喽,大家好呀!这里是魔王~ 一天晚上,天空中掉下一颗神奇的豌豆种子,正好落在了梦之森林的村长屋附近. 种子落地后吸收了池塘的水

  • Python快速实现简易贪吃蛇小游戏的示例代码

    贪吃蛇(也叫做贪食蛇)游戏是一款休闲益智类游戏,有PC和手机等多平台版本.既简单又耐玩.该游戏通过控制蛇头方向吃蛋,从而使得蛇变得越来越长. 贪吃蛇游戏最初为单机模式,后续又陆续推出团战模式.赏金模式.挑战模式等多种玩法. 另外还有一种名为“贪吃蛇”钻井测井技术,是运用旋转导向系统.随钻测井系统等的油气田定向钻井.随钻测井技术,可完成海上“丛式井”和复杂油气层的开采需求,大幅降低油气田开发综合成本. 依然是基于pygame库,pip install pygame安装即可 完整代码如下: # 导入

  • Matlab实现别踩白块小游戏的示例代码

    目录 游戏效果 游戏说明 完整代码 pianoKeys.m(主函数) getMusic.m(用于获取音乐数据) 游戏效果 游戏说明 ‘A’,‘S’,‘D’,F’按键代表四条通路(点击S开始),按错按钮或黑块接触底限均为失败. 完整代码 分两个m文件,应放在同一文件夹 pianoKeys.m(主函数) function pianoKeys %======================%======== [v1,notes,fs]=getMusic;%读取音乐 %=================

  • Python实现智能贪吃蛇游戏的示例代码

    目录 前言 基本环境配置 实现效果 实现代码 前言 我想大家都玩过诺基亚上面的贪吃蛇吧,本文将带你一步步用python语言实现一个snake小游戏. 基本环境配置 版本:Python3 系统:Windows 相关模块:pygame pip install pygame安装即可 实现效果 实现代码 import random, pygame, sys from pygame.locals import * import time ''' ''' FPS = 1 ##WINDOWWIDTH = 64

  • Java实现接月饼小游戏的示例代码

    目录 前言 主要设计 功能截图 代码实现 游戏启动类 核心类 画面绘制 总结 前言 <接月饼小游戏>是一个基于java的自制游戏,不要被月亮砸到,尽可能地多接月饼. 此小项目可用来巩固JAVA基础语法,swing的技巧用法. 主要设计 设计游戏界面,用swing实现 设计背景 设计得分物体-月饼,碰到加一分 设计障碍物-月亮,碰到会死亡 监听鼠标的左右键,用来控制篮子左右移动 设计积分系统 将resource文件夹设为resource(Project Manage中可以设置),因为要用里面的图

  • Matlab实现贪吃蛇小游戏的示例代码

    由于老师说如果拿MATLAB制作出游戏或者有趣的动画的话.. 平时成绩可以拿满分 于是..开始尝试制作各种matlab小游戏 最初通过Alex的贪吃蛇学到了一些东西,然后制作了一个类似的俄罗斯方块在课堂上展示的(都是动的方块嗯哒). 后来自己也尝试写着玩了一些其他版本的贪吃蛇,并做出了一些改进. 补动图: 没错这就有点类似贪吃蛇大作战里的蛇啦 然后做出的改进包括: 在关闭窗口时不报错的设置,因为用了timer这个函数,在关闭图像时他会报错,我们就可以加入一个回调函数: set(gcf,'tag'

  • 基于Unity3D实现3D迷宫小游戏的示例代码

    目录 一.前言 二.构思 三.正式开发 3-1.搭建场景 3-2.设置出入口 3-3.添加角色 3-4.实现角色移动 3-5.出入口逻辑 四.总结 一.前言 闲来无事,从零开始整个<3D迷宫>小游戏. 本篇文章会详细介绍构思.实现思路,希望可以帮助到有缘人. 二.构思 首先,要实现一个小游戏,心里肯定要有一个大概的想法,然后就是将想法完善起来. 我的想法就是一个用立体的墙搭建的迷宫,然后控制人物在迷宫中移动,最后找到出口,就这么简单. 当然,这是一个雏形,比如可以加点音效.背景.关卡.解密等.

  • Vue实现红包雨小游戏的示例代码

    目录 0 写在前面 1 准备工作 2 设计HTML+CSS样式 3 设计JavaScript逻辑 4 完整代码 0 写在前面 红包也叫压岁钱,是过农历春节时长辈给小孩儿用红纸包裹的礼金.据传明清时期,压岁钱大多数是用红绳串着赐给孩子.民国以后,则演变为用红纸包裹.中国的红包传统民族文化在民间如此,社区.公司也奉行如仪.除了春节以外,在其他喜庆场合,例如婚礼.新店开张等亦有送红包的习俗. 本期迎新春专题用代码制作一个 红包雨小游戏 ,效果如下所示.看完本文相信你也可以完成这样一个小游戏设计. 1

随机推荐