Python作业水桶小游戏
编写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作业水桶小游戏相关推荐
- python tkinter火柴人_用Python实现童年小游戏俄罗斯方块!别说还挺好玩!
原标题:用Python实现童年小游戏俄罗斯方块!别说还挺好玩! 前言 大三上学期的程序设计实训大作业,挑了其中一个我认为最简单的的<图书管理系统>来写.用python写是因为py有自带的G ...
- python手机版做小游戏代码大全-python简单小游戏代码 怎么用Python制作简单小游戏...
1.Python猜拳小游戏代码: 2.import random #导入随机模块 3. 4.num = 1 5.yin_num = 0 6.shu_num = 0 7.while num <= ...
- python写游戏脚本-使用Python写一个小游戏
引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下 ...
- python编程小游戏-使用Python写一个小游戏
引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下 ...
- python小游戏代码大全-python简单小游戏代码 怎么用Python制作简单小游戏
1.Python猜拳小游戏代码: 2.import random #导入随机模块 3. 4.num = 1 5.yin_num = 0 6.shu_num = 0 7.while num <= ...
- python设计拼图小游戏_教你用Python自制拼图小游戏,轻松搞定熊孩子
摘要:本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyth ...
- 教你用Python自制拼图小游戏,轻松搞定熊孩子
摘要:本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyth ...
- 使用python制作聊天框解谜游戏_使用Python写一个小游戏alien invasion!
最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下其中的 ...
- python拼图游戏编码_教你用Python自制拼图小游戏,轻松搞定熊孩子
摘要:本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyth ...
最新文章
- linux 使用sendmail发送邮件
- 学术圈要炸锅:论文作者和审稿人串通欺骗盲审,ACM Fellow发文痛斥!顶会“想中就中”...
- 路由器中虚拟服务器设置,路由器中虚拟服务器设置方法
- 不同虚拟局域网Vlan配置DHCP服务器
- 2002年呼伦贝尔之行照片
- asp.net url传值,弹窗
- CC2540低功耗的内幕
- [读书笔记]TCP/IP详解V1读书笔记-1
- 解析/etc/inittab 文件(转)
- UVA 10047 - The Monocycle BFS
- kvm网卡虚拟化之vdpa技术
- 手机展示海报就用它 再不要羡慕别人
- Python使用扩展库tqdm显示进度条
- AspNetPager的使用
- kettle数据同步从FTP服务器上下载文件
- 畅购第9天项目总结(Spring Security Oauth2 JWT)
- 计算机纸牌游戏攻略,Windows纸牌游戏怎么玩 玩法技巧攻略详解
- 如何快速分割多个视频,提取每个原音频单独保存
- HTML+CSS网页设计期末课程大作业 【茶叶文化网站设计题材】web前端开发技术 web课程设计 网页规划与设计
- matlab指派问题求法,MATLAB实例:Munkres指派算法
热门文章
- 运放放大倍数与db换算关系
- 计算机与网络安全类专业就业前景,乔治华盛顿大学网络安全与计算机科学专业介绍_网络安全与计算机科学专业排名及就业方向和前景-小站留学...
- 基于Python机器学习、深度学习技术提升气象、海洋、水文领域实践应用能力
- mysql获取本周一周日,上周一上周日日期及用到的NOW(),CURDATE(),KEEKDAY(date),DATE_SUB()函数
- 第八章软件构造的性能——构造性能的度量、原则与方法(java中的垃圾回收机制及算法)
- HLSL常用函数介绍
- 413报错(nginx :请求体大小超出最大限制)
- 【Tapd】30 人以内团队:申请永久免费的Tapd企业版步骤
- 龙芯服务器如何设置共享文件夹,龙芯多核处理器及虚拟机架构图解
- Html控件和Web控件的比较分析