:apachecn/python-code-anal

导入

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 betexcept 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_areturn (card_a, card_b, card_c)

play_game()

# 游戏的主要逻辑
def play_game():"""Play the game"""cash = 100while 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 -= betprint(f" {cards[card_c]}")# 检查猜测结果# 如果猜测正确,返还双倍赌金,否则什么也不做if card_a < card_c < card_b:print("You win!!!")cash += bet * 2else: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: breakprint("Ok hope you had fun")if __name__ == "__main__": main()

BasicGames Python 源码解析 01 AceyDucey相关推荐

  1. BasicGames Python 源码解析 02 Amazing

    :apachecn/python-code-anal 这个游戏会接收用户输入的长和宽,动态生成一个迷宫. 改进自 Frank Palazzolo 的版本. 导入 import random impor ...

  2. android 输入法如何启动流程_android输入法02:openwnn源码解析01—输入流程

    android 输入法 02:openwnn 源码解析 01-输入流程 之后要开始 android 日文输入法的测试,因此现在开始研究 android 输入法.之前两 篇文章已经对 android 自 ...

  3. Python源码解析:内存管理(DEBUG模式)的几个理解点

    写了这多贴子,顺带写点自己的感想吧!其实很多贴子在写的时候很踌躇,比如这次打算写的python内存管理,因为内存管理都比较琐碎,在软件架构里,也是很容易出问题的地方,涉及的细节内容非常多,要写好写明白 ...

  4. Attention is all you need pytorch实现 源码解析01 - 数据预处理、词表的构建

    我们今天开始分析著名的attention is all you need 论文的pytorch实现的源码解析. 由于项目很大,所以我们会分开几讲来进行讲解. 先上源码:https://github.c ...

  5. Python源码解析-整数与引用计数器

    文章目录 简介 PyLongObject 大小整数 大小整数的区分 小整数池初始化 整数对象的创建 计数回收机制 本文基于Python3.10.4. 简介 在Python源码中,整数这个概念是通过Py ...

  6. python 源码解析 object 定义的介绍

    在python的世界中一切皆对象,所有的子类都是继承自同一个父类,object 那object 到底是什么呢? 来看源码定义 typedef struct _object {_PyObject_HEA ...

  7. android输入法01:SoftKeyboard源码解析01

      本文主要介绍android自带输入法实例SoftKeyboard的源码,共分为两篇:第一篇为SoftKeyboard框架概述,第二篇为源码注释. 1.IMF简介 一个IMF结构中包含三个主要的部分 ...

  8. mysql网关源码_Soul API网关源码解析 01

    目标 本地搭建soul开发调试环境 Intellij Idea准备 soul v2.3.0源码环境搭建 mysql/h2 jdk1.8.x 本地编译源码,然后运行soul-admim 和soul-bo ...

  9. Linux0.11内核源码解析01

    系统整体布局 第一部分:进入内核前的苦力活 第二部分:大战前期的初始化工作 第三部分:一个新进程的诞生 第四部分:shell 程序的到来 第五部分:从一个命令的执行看操作系统各模块的运作 第六部分:操 ...

最新文章

  1. RocketMQ 实战 集群监控平台搭建
  2. 学习C语言的理由-别问我为什么,会用C语言,就是NB
  3. 【HDOJ】3006 The Number of set
  4. 2019年自考计算机应用基础(实践),2019年自考计算机应用基础模拟题及答案(8)...
  5. MongoDb连接表的查询
  6. 线性表——顺序表的应用
  7. 超越cookie - 使用DOM sessionStorage和localStorage来保存更多信
  8. linux中的环境变量作用
  9. 《统计学习方法》——提升算法
  10. mysql 大树据表update很慢
  11. python基本网络爬虫代码_Python实现网页爬虫基本实现代码解读
  12. WIN7下打开telnet工具
  13. XP3 Dumper GUI
  14. linux抓包工具分析工具下载,Linux下抓包工具tcpdump以及分析包的工具wireshark
  15. python自动修图软件_Ai修图软件|Ai修图神器SC-FEGAN下载(人脸照片涂鸦编辑) 免费版_数码资源网...
  16. python画卡通兔子_卡通兔子的建模教程(完成整个图形曲面的创建)
  17. 《如何搭建小微企业风控模型》第三节 风控模型概览
  18. 常用工具~teamviewer~请检查您的互联网连接 一般情况下您会使用代理
  19. 修改文件后缀直接改变文件属性
  20. 模拟cmos集成电路(10)

热门文章

  1. (77)FPGA时序违例及解决办法-面试必问(一)(第16天)
  2. (16)System Verilog联合体union详解
  3. STM32CAN外设使用
  4. stm32 断路功能和互补输出
  5. linux 手动控制cpu转速,Linux 手动计算CPU使用率
  6. oracle报sp20042,oracle中ora-04301故障处理
  7. 源码编译php mysql_linux下apache+mysql+php开发环境纯源代码编译搭建(转)
  8. php添加用户信息进入数据库,dedecms用户将信息插入数据库
  9. 跨系统服务器data,跨服务器的数据整合方法及系统 Cross-server data integration method and system...
  10. 获取并编译linux源码,linux – 从源代码编译软件:如何收集依赖项列表?