广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python实现21点小游戏的示例代码
  • 457
分享到

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

2024-04-02 19:04:59 457人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录游戏玩法代码 - v1测试代码 - v2测试游戏玩法 游戏玩法: 该游戏由 2 到 6 个人玩,使用除大小王之外的 52 张牌, 游戏者的目标是使手中的牌的点数之和不超过 21

游戏玩法

游戏玩法: 该游戏由 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点游戏内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python实现21点小游戏的示例代码

本文链接: https://www.lsjlt.com/news/120415.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python实现21点小游戏的示例代码
    目录游戏玩法代码 - v1测试代码 - v2测试游戏玩法 游戏玩法: 该游戏由 2 到 6 个人玩,使用除大小王之外的 52 张牌, 游戏者的目标是使手中的牌的点数之和不超过 21 ...
    99+
    2022-11-11
  • python实现21点小游戏
    用python实现21点小游戏,供大家参考,具体内容如下 from random import shuffle import random import numpy as np from sys import...
    99+
    2022-06-02
    python 21点游戏
  • Python扑克牌21点游戏实例代码
    废话还是说太多了 直接上代码 import random import sys # 牌面列表 card_code = ['A', '2', '3', '4', '5', '6'...
    99+
    2022-11-12
  • Python实现小游戏的源代码示例
    这篇文章将为大家详细讲解有关Python实现小游戏的源代码示例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、21点数字小游戏展示:首先配置文件的源码:'''配置文件'&...
    99+
    2023-06-14
  • Python代码实现贪吃蛇小游戏的示例
    这篇文章给大家分享的是有关Python代码实现贪吃蛇小游戏的示例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。图示基本准备首先,我们需要安装pygame库,小编通过pip install pygame,很快就安装...
    99+
    2023-06-15
  • 基于Python实现24点游戏的示例代码
    目录1.前言2.思路3.代码1.前言 24数大家之前玩过没有? 规则:一副扑克牌抽走大王,小王,K,Q,J(有的规则里面会抽走10,本文一律不抽走),之后在牌堆里随机抽取四张牌,将这...
    99+
    2022-12-08
    Python 24点游戏 Python 24点 Python 游戏
  • 基于Python实现格斗小游戏的示例代码
    目录前言一、简易版本格斗二、炼狱角斗场格斗前言 格斗游戏,曾经是街机厅里最火爆的游戏之一,甚至可以把“之一”去掉,那个年代的格斗游戏 就是街机游戏的王。 如今...
    99+
    2023-03-02
    Python实现格斗游戏 Python格斗游戏 Python游戏
  • python小游戏实现代码
    早上逛CSDN首页就见到这么一篇教程。看了一下很有意思,就马上动手实现了一下。看看效果吧: 完整代码: # -*- coding: utf-8 -*- # 1 - Import library import pygame from ...
    99+
    2023-01-31
    小游戏 代码 python
  • Android实现老虎机小游戏代码示例
    用 Android studio软件写的一个老虎机小游戏 先上MainActivity.java 的代码。这里我用得定时器,本想用java线程,奈何安卓还不太会,应用会闪退。 p...
    99+
    2022-11-12
  • Matlab实现贪吃蛇小游戏的示例代码
    由于老师说如果拿MATLAB制作出游戏或者有趣的动画的话。。 平时成绩可以拿满分 于是。。开始尝试制作各种matlab小游戏 最初通过Alex的贪吃蛇学到了一些东西,然后制作了一个类...
    99+
    2022-11-13
  • Vue实现Chrome小恐龙游戏的示例代码
    目录前言复刻画面动画效果路面动画障碍物动画恐龙动画响应事件碰撞检测部署总结前言 几年前,Google 给 Chrome 浏览器加了一个有趣的彩蛋:如果你在未联网的情况下访问网页,会看...
    99+
    2022-11-13
  • Java实现接月饼小游戏的示例代码
    目录前言主要设计功能截图代码实现游戏启动类核心类画面绘制总结前言 《接月饼小游戏》是一个基于java的自制游戏,不要被月亮砸到,尽可能地多接月饼。 此小项目可用来巩固JAVA基础语法...
    99+
    2022-11-13
  • JS+Canvas实现接球小游戏的示例代码
    目录写在最前git地址成果展示实现思路详细说明写在最后写在最前 看了canvas的动画系列,已经抑制不住内心的冲动想写个小游戏了,还是那个套路——多写写,你才...
    99+
    2022-11-13
  • Vue实现红包雨小游戏的示例代码
    目录0 写在前面1 准备工作2 设计HTML+CSS样式3 设计JavaScript逻辑4 完整代码0 写在前面 红包也叫压岁钱,是过农历春节时长辈给小孩儿用红纸包裹的礼金。据传明清...
    99+
    2022-11-13
  • 基于Python实现牛牛套圈小游戏的示例代码
    目录前言一、环境配置二、代码展示三、效果展示前言 “幸运牛牛套圈圈”套住欢乐,圈住幸福,等你来挑战! 哈喽,大家上午好,我是你们的栗子同学,今天来给大家带来一...
    99+
    2023-02-13
    Python牛牛套圈游戏 Python套圈游戏 Python游戏
  • Python实现炸金花游戏的示例代码
    今天的第二个作品,哈哈哈哈,搞起来感觉还挺有意思的,不过代码里纸牌J,Q,K,A几个数字被我替换成了11,12,13,14......主要是没有想到简单的办法让其比较,索性都用数字了...
    99+
    2022-11-12
  • JS实现飞机大战小游戏的示例代码
    小编给大家分享一下JS实现飞机大战小游戏的示例代码,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!先制作好要做好的几步以及背景样式var canvas = document.getElement...
    99+
    2023-06-15
  • Matlab实现别踩白块小游戏的示例代码
    目录游戏效果游戏说明完整代码pianoKeys.m(主函数)getMusic.m(用于获取音乐数据)游戏效果 游戏说明 ‘A’,‘S&rsqu...
    99+
    2022-11-13
  • C语言实现扫雷小游戏的示例代码
    目录一、扫雷1.演示效果2.完整代码二、代码解析1.初始化雷盘2.打印雷盘3.布置雷4.排雷5.游戏函数主体6.菜单函数7.头文件、宏定义及主函数一、扫雷 扫雷小游戏主要是利用字符数...
    99+
    2022-11-13
    C语言扫雷游戏 C语言 扫雷 C语言 游戏
  • Python快速实现简易贪吃蛇小游戏的示例代码
    贪吃蛇(也叫做贪食蛇)游戏是一款休闲益智类游戏,有PC和手机等多平台版本。既简单又耐玩。该游戏通过控制蛇头方向吃蛋,从而使得蛇变得越来越长。  贪吃蛇游戏最初为单机模式,后...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作