编写Python程序,实现一个小游戏。 共有三个水桶,容量分别是8升、5升和3升,玩家可对每个水桶做如下操作: 按F或(f)键注满一个桶 按E或(e)键清空一个桶 按P或(p)键从一个桶向另一个桶倒水 按Q或(q)键退出游戏 当玩家使得任意一个水桶的水量是4升时,则玩家获胜,程序显示玩家操作的总步数并停止游戏。

# -*- coding: utf-8 -*-class Bucket:def __init__(self,volume):self.volume = volumeself.now_v = 0def Full_Bucket(self):self.now_v = self.volumedef Purge_Bucket(self):self.now_v = 0def Pour(self,other_Bucket):other_Bucket.now_v += self.now_vif other_Bucket.now_v > other_Bucket.volume:self.now_v = other_Bucket.now_v - other_Bucket.volumeother_Bucket.now_v = other_Bucket.volumeelse:self.now_v = 0def print_h(v1,now_v1,v2,now_v2,v3,now_v3):for i in range(1,v1+1):print("    "+str(v1+1 - i)+"|",end = "")for j in range(1,5):if v1+1-i > now_v1:print(" ",end = "")else:print("W",end = "")print("|",end = "")print("     ",end = "")if v1+1-i>v2:print(" ",end = "")else:print(str(v1+1 - i)+"|",end = "")for j in range(1,5):if v1+1-i > now_v2:print(" ",end = "")else:print("W",end = "")if v1+1-i>v2:print(" ",end = "")else:print("|",end = "")print("     ",end = "")if v1+1-i>v3:print(" ",end = "")else:print(str(v1+1 - i)+"|",end = "")for j in range(1,5):if v1+1-i > now_v3:print(" ",end = "")else:print("W",end = "")if v1+1-i>v3:print(" ",end = "")else:print("|",end = "")print("")print("    ",end = "")for i in range(1,4):print(" +",end = "")for j in range(1,5):print("-",end = "")print("+     ",end = "")print("")print("       ",end = "")print(str(v1)+"L"+"          "+str(v2)+"L"+"          "+str(v3)+"L")def print_bucket_v(b1,b2,b3):#print(str(b1.now_v)+" "+str(b2.now_v)+" "+str(b3.now_v))print_h(b1.volume,b1.now_v,b2.volume,b2.now_v,b3.volume,b3.now_v)def print_notice():print("你可以:")print(" (F)注满水桶")print(" (E)清空水桶")print(" (P)从一个通向另一个桶倒水")print(" (Q)退出")def Bucket_game(v1,v2,v3):print("水桶游戏开始............")print("目标三桶之一的水量为4L")B1 = Bucket(8)B2 = Bucket(5)B3 = Bucket(3)print_bucket_v(B1,B2,B3)count = 0while True:print_notice()enter = input().upper()if enter == 'F':enter = input("选择一个桶 8,5,3,或QUIT(Q):\n").upper()while enter:if enter == 'Q':breakelif enter == '8':B1.Full_Bucket()count+=1print_bucket_v(B1,B2,B3)breakelif enter == '5':B2.Full_Bucket()count+=1print_bucket_v(B1,B2,B3)breakelif enter == '3':B3.Full_Bucket()count+=1print_bucket_v(B1,B2,B3)breakelse:enter = input("您需要选择一个桶或Q退出:\n").upper()continueelif enter == 'E':enter = input("选择一个桶8,5,3,或QUIT(Q):\n").upper()while enter:if enter == 'Q':breakelif enter == '8':B1.Purge_Bucket()count+=1print_bucket_v(B1,B2,B3)breakelif enter == '5':B2.Purge_Bucket()count+=1print_bucket_v(B1,B2,B3)breakelif enter == '3':B3.Purge_Bucket()count+=1print_bucket_v(B1,B2,B3)breakelse:enter = input("您需要选择一个桶8,5,3,或Q退出:\n").upper()continueelif enter == 'P':enter = input("选择一个桶8,5,3,或QUIT(Q):\n").upper()while enter:if enter == 'Q':breakelif enter == '8':enter = input("选择一个被注入的桶5,3,或QUIT(Q):\n").upper()while enter:if enter == 'Q':breakelif enter == '5':B1.Pour(B2)count+=1breakelif enter == '3':B1.Pour(B3)count+=1breakelse:enter = input("您需要选择一个桶5,3,或Q退出:\n").upper()print_bucket_v(B1,B2,B3)if B1.now_v == 4 or B2.now_v == 4 or B3.now_v == 4:print("恭喜!,你一共用了"+str(count)+"步!")return Truebreakelif enter == '5':enter = input("选择一个被注入的桶8,3,或QUIT(Q):\n").upper()while enter:if enter == 'Q':breakelif enter == '8':B2.Pour(B1)count+=1breakelif enter == '3':B2.Pour(B3)count+=1breakelse:enter = input("您需要选择一个桶8,3,或Q退出:\n").upper()print_bucket_v(B1,B2,B3)if B1.now_v == 4 or B2.now_v == 4 or B3.now_v == 4:print("恭喜!,你一共用了"+str(count)+"步!")return Truebreakelif enter == '3':enter = input("选择一个被注入的桶8,5,或QUIT(Q):\n").upper()while enter:if enter == 'Q':breakelif enter == '8':B3.Pour(B1)count+=1breakelif enter == '5':B3.Pour(B2)count+=1breakelse:enter = input("您需要选择一个桶8,5,或Q退出:\n").upper()print_bucket_v(B1,B2,B3)if B1.now_v == 4 or B2.now_v == 4 or B3.now_v == 4:print("恭喜!,你一共用了"+str(count)+"步!")return Truebreakelse:enter = input("您需要选择一个桶8,5,3,或Q退出:\n").upper()continueelif enter == 'Q':print("谢谢,欢迎下次再来!")breakif __name__ == "__main__":Bucket_game(v1,v2,v3)

Python作业水桶小游戏相关推荐

  1. python tkinter火柴人_用Python实现童年小游戏俄罗斯方块!别说还挺好玩!

    原标题:用Python实现童年小游戏俄罗斯方块!别说还挺好玩! 前言 大三上学期的程序设计实训大作业,挑了其中一个我认为最简单的的<图书管理系统>来写.用python写是因为py有自带的G ...

  2. python手机版做小游戏代码大全-python简单小游戏代码 怎么用Python制作简单小游戏...

    1.Python猜拳小游戏代码: 2.import random #导入随机模块 3. 4.num = 1 5.yin_num = 0 6.shu_num = 0 7.while num <= ...

  3. python写游戏脚本-使用Python写一个小游戏

    引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下 ...

  4. python编程小游戏-使用Python写一个小游戏

    引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下 ...

  5. python小游戏代码大全-python简单小游戏代码 怎么用Python制作简单小游戏

    1.Python猜拳小游戏代码: 2.import random #导入随机模块 3. 4.num = 1 5.yin_num = 0 6.shu_num = 0 7.while num <= ...

  6. python设计拼图小游戏_教你用Python自制拼图小游戏,轻松搞定熊孩子

    摘要:本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyth ...

  7. 教你用Python自制拼图小游戏,轻松搞定熊孩子

    摘要:本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyth ...

  8. 使用python制作聊天框解谜游戏_使用Python写一个小游戏alien invasion!

    最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下其中的 ...

  9. python拼图游戏编码_教你用Python自制拼图小游戏,轻松搞定熊孩子

    摘要:本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyth ...

最新文章

  1. linux 使用sendmail发送邮件
  2. 学术圈要炸锅:论文作者和审稿人串通欺骗盲审,ACM Fellow发文痛斥!顶会“想中就中”...
  3. 路由器中虚拟服务器设置,路由器中虚拟服务器设置方法
  4. 不同虚拟局域网Vlan配置DHCP服务器
  5. 2002年呼伦贝尔之行照片
  6. asp.net url传值,弹窗
  7. CC2540低功耗的内幕
  8. [读书笔记]TCP/IP详解V1读书笔记-1
  9. 解析/etc/inittab 文件(转)
  10. UVA 10047 - The Monocycle BFS
  11. kvm网卡虚拟化之vdpa技术
  12. 手机展示海报就用它 再不要羡慕别人
  13. Python使用扩展库tqdm显示进度条
  14. AspNetPager的使用
  15. kettle数据同步从FTP服务器上下载文件
  16. 畅购第9天项目总结(Spring Security Oauth2 JWT)
  17. 计算机纸牌游戏攻略,Windows纸牌游戏怎么玩 玩法技巧攻略详解
  18. 如何快速分割多个视频,提取每个原音频单独保存
  19. HTML+CSS网页设计期末课程大作业 【茶叶文化网站设计题材】web前端开发技术 web课程设计 网页规划与设计
  20. matlab指派问题求法,MATLAB实例:Munkres指派算法

热门文章

  1. 运放放大倍数与db换算关系
  2. 计算机与网络安全类专业就业前景,乔治华盛顿大学网络安全与计算机科学专业介绍_网络安全与计算机科学专业排名及就业方向和前景-小站留学...
  3. 基于Python机器学习、深度学习技术提升气象、海洋、水文领域实践应用能力
  4. mysql获取本周一周日,上周一上周日日期及用到的NOW(),CURDATE(),KEEKDAY(date),DATE_SUB()函数
  5. 第八章软件构造的性能——构造性能的度量、原则与方法(java中的垃圾回收机制及算法)
  6. HLSL常用函数介绍
  7. 413报错(nginx :请求体大小超出最大限制)
  8. 【Tapd】30 人以内团队:申请永久免费的Tapd企业版步骤
  9. 龙芯服务器如何设置共享文件夹,龙芯多核处理器及虚拟机架构图解
  10. Html控件和Web控件的比较分析