BasicGames Python 源码解析 01 AceyDucey

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: BasicGames Python 源码解析 01 AceyDucey

导入

import random


cards

# 定义卡牌面值和名称的映射
cards = {
    1: "1",
    2: "2",
    3: "3",
    4: "4",
    5: "5",
    6: "6",
    7: "7",
    8: "8",
    9: "9",
    10: "Jack",
    11: "Queen",
    12: "King",
    13: "Ace",
}


get_user_bet()

# 获取玩家输入的赌金
# 保证它是正数,并且小于等于可用资金
def get_user_bet(cash):
    while True:
        try:
            bet = int(input("What is your bet? "))
            if bet < 0:
                print("Bet must be more than zero")
            elif bet == 0:
                print("CHICKEN!!\n")
            elif bet > cash:
                print("Sorry, my friend but you bet too much")
                print(f"You only have {cash} dollars to bet")
            else:
                return bet
        except ValueError:
            print("Please enter a positive number")



draw_3cards()

# 无放回抽三张牌,保证第一张小于第二张
def draw_3cards():
    round_cards = list(cards.keys())
    random.shuffle(round_cards)
    card_a, card_b, card_c = round_cards.pop(), round_cards.pop(), round_cards.pop()
    if card_a > card_b:
        card_a, card_b = card_b, card_a
    return (card_a, card_b, card_c)


play_game()

# 游戏的主要逻辑
def play_game():
    """Play the game"""
    cash = 100
    while cash > 0:
        print(f"You now have {cash} dollars\n")
        print("Here are you next two cards")
        # 抽三张牌,展示前两张
        card_a, card_b, card_c = draw_3cards()
        print(f" {cards[card_a]}")
        print(f" {cards[card_b]}\n")
        # 玩家猜测第三张是否在前两张之间,并输入赌金
        bet = get_user_bet(cash)
        # 扣掉赌金,展示第三张
        cash -= bet
        print(f" {cards[card_c]}")
        # 检查猜测结果
        # 如果猜测正确,返还双倍赌金,否则什么也不做
        if card_a < card_c < card_b:
            print("You win!!!")
            cash += bet * 2
        else:
            print("Sorry, you lose")
    # 可用资金为 0,就结束游戏
    print("Sorry, friend, but you blew your wad")



main()

# 程序入口
def main():
    # 首先打印游戏介绍
    print("""
Acey-Ducey is played in the following manner
The dealer (computer) deals two cards face up
You have an option to be or not bet depending
on whether or not you feel the card will have
a value between the first two.
If you do not want to bet, input a 0
    """)
    while True:
        # 在循环中开始游戏
        play_game()
        # 游戏结束之后,询问玩家是否继续,不继续就跳出循环
        keep_playing = input("Try again? (yes or no) ").lower() in ["yes", "y"]
        if not keep_playing: break
    print("Ok hope you had fun")
if __name__ == "__main__": main()
相关文章
|
10天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
35 2
|
10天前
|
存储 安全 Linux
Golang的GMP调度模型与源码解析
【11月更文挑战第11天】GMP 调度模型是 Go 语言运行时系统的核心部分,用于高效管理和调度大量协程(goroutine)。它通过少量的操作系统线程(M)和逻辑处理器(P)来调度大量的轻量级协程(G),从而实现高性能的并发处理。GMP 模型通过本地队列和全局队列来减少锁竞争,提高调度效率。在 Go 源码中,`runtime.h` 文件定义了关键数据结构,`schedule()` 和 `findrunnable()` 函数实现了核心调度逻辑。通过深入研究 GMP 模型,可以更好地理解 Go 语言的并发机制。
|
16天前
|
算法 Python
Python 大神修炼手册:图的深度优先&广度优先遍历,深入骨髓的解析
在 Python 编程中,掌握图的深度优先遍历(DFS)和广度优先遍历(BFS)是进阶的关键。这两种算法不仅理论重要,还能解决实际问题。本文介绍了图的基本概念、邻接表表示方法,并给出了 DFS 和 BFS 的 Python 实现代码示例,帮助读者深入理解并应用这些算法。
28 2
|
23天前
|
消息中间件 缓存 安全
Future与FutureTask源码解析,接口阻塞问题及解决方案
【11月更文挑战第5天】在Java开发中,多线程编程是提高系统并发性能和资源利用率的重要手段。然而,多线程编程也带来了诸如线程安全、死锁、接口阻塞等一系列复杂问题。本文将深度剖析多线程优化技巧、Future与FutureTask的源码、接口阻塞问题及解决方案,并通过具体业务场景和Java代码示例进行实战演示。
40 3
|
25天前
|
测试技术 开发者 Python
深入浅出:Python中的装饰器解析与应用###
【10月更文挑战第22天】 本文将带你走进Python装饰器的世界,揭示其背后的魔法。我们将一起探索装饰器的定义、工作原理、常见用法以及如何自定义装饰器,让你的代码更加简洁高效。无论你是Python新手还是有一定经验的开发者,相信这篇文章都能为你带来新的启发和收获。 ###
15 1
|
25天前
|
设计模式 测试技术 开发者
Python中的装饰器深度解析
【10月更文挑战第24天】在Python的世界中,装饰器是那些能够为函数或类“添彩”的魔法工具。本文将带你深入理解装饰器的概念、工作原理以及如何自定义装饰器,让你的代码更加优雅和高效。
|
Linux C语言 开发者
源码安装Python学会有用还能装逼 | 解决各种坑
相信朋友们都看过这个零基础学习Python的开篇了
450 0
源码安装Python学会有用还能装逼 | 解决各种坑
|
4天前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!

推荐镜像

更多
下一篇
无影云桌面