风云编程python基础语法(2)
目录
八、人机小游戏
1、明确项目目标
2、分解过程,拆解项目
3、逐步执行,代码实现
1.0 版本+计时器time.sleep(sec)
2.0版本+随机生成random.randint(a,b)
3.0版本
4、简化字符串的连接
1)格式符%+类型码
2)format()函数
5、新增功能:3局过后,是否再来一盘
八、人机小游戏
项目实操:学会用封装函数编写程序,考察函数、列表、字典。
1、明确项目目标
1)随机生成玩家和敌人的属性,同时互相攻击,直至一方血量小于零。
2)这样的战斗会持续三局,采取三局两胜制,最后输出战斗结果,公布获胜方。
2、分解过程,拆解项目
1.0:自定属性,人工PK
2.0:随机属性,自动PK
3.0:打印战果,三局两胜
3、逐步执行,代码实现
1.0 版本+计时器time.sleep(sec)
显示玩家和敌人属性→PK过程展示,双方血量变化→显示pk结果
print('【玩家】\n血量:100\n攻击:50') # 自定义玩家角色的血量和攻击,用换行符'\n'来优化视觉
print('------------------------') # 辅助功能,起到视觉分割的作用,让代码的运行结果更清晰print('【敌人】\n血量:100\n攻击:30')
print('------------------------')print('你发起了攻击,【敌人】剩余血量50') # 人工计算敌人血量:100-50=50
print('敌人向你发起了攻击,【玩家】剩余血量70') # 人工计算玩家血量:100-30=70
print('------------------------')print('你发起了攻击,【敌人】剩余血量0') # 双方同时攻击,若血量出现小于等于0,游戏结束
print('敌人向你发起了攻击,【玩家】剩余血量40')
print('-----------------------')print('敌人死翘翘了,你赢了!') # 打印结果
计时器time.sleep(sec)
time.sleep(1.5)就表示停留1.5秒再运行后续代码
import time #通常import语句会写到代码的开头print('【玩家】\n血量:100\n攻击:50')
print('------------------------')
time.sleep(1.5)
#暂停1.5秒,再继续运行后面的代码print('【敌人】\n血量:100\n攻击:30')
print('------------------------')
time.sleep(1.5)
#同上print('你发起了攻击,【敌人】剩余血量50')
print('敌人向你发起了攻击,【玩家】剩余血量70')
print('------------------------')
time.sleep(1.5)print('你发起了攻击,【敌人】剩余血量0')
print('敌人向你发起了攻击,【玩家】剩余血量40')
print('-----------------------')
time.sleep(1.5)print('敌人死翘翘了,你赢了!')
2.0版本+随机生成random.randint(a,b)
随机生成玩家和敌人属性→显示属性→PK过程展示,自动攻击扣血
随机生成[a,b]范围内的整数,random.randint(a,b)
import time,randomplayer_life = random.randint(100,150)
player_attack = random.randint(30,50)
enemy_life = random.randint(100,150)
enemy_attack = random.randint(30,50) print('【玩家】\n'+'血量:'+str(player_life)+'\n攻击:'+str(player_attack))
print('------------------------')
time.sleep(1)
print('【敌人】\n'+'血量:'+str(enemy_life)+'\n攻击:'+str(enemy_attack))
print('------------------------')
time.sleep(1)while (player_life >0) and (enemy_life > 0):player_life = player_life - enemy_attack enemy_life = enemy_life - player_attack print('你发起了攻击,【玩家】剩余血量'+str(player_life))#player_life是整数,所以拼接时要先用str()转换print('敌人向你发起了攻击,【敌人】剩余血量'+str(enemy_life))print('------------------------')time.sleep(1.5)# 为了体现出战斗回合,这里停顿1.5秒
3.0版本
游戏开始→随机生成属性→显示属性→PK过程展示→输出单局结果(循环3次)→输出三局两胜结果→游戏结束
import time,randomplayer_victory = 0
enemy_victory = 0for i in range(1,4):time.sleep(2) # 让局与局之间有较明显的有时间间隔print(' \n——————现在是第'+str(i)+'局——————') # 作为局的标记player_life = random.randint(100,150)player_attack = random.randint(30,50)enemy_life = random.randint(100,150)enemy_attack = random.randint(30,50)# 展示双方角色的属性print('【玩家】\n'+'血量:'+str(player_life)+'\n攻击:'+str(player_attack))print('------------------------')time.sleep(1)print('【敌人】\n'+'血量:'+str(enemy_life)+'\n攻击:'+str(enemy_attack))print('------------------------')time.sleep(1)# 双方PKwhile player_life > 0 and enemy_life > 0:player_life = player_life - enemy_attackenemy_life = enemy_life - player_attackprint('你发起了攻击,【玩家】剩余血量'+str(player_life))print('敌人向你发起了攻击,【敌人】剩余血量'+str(enemy_life))print('-----------------------')time.sleep(1.5)#打印最终战果if player_life > 0 and enemy_life <= 0:player_victory += 1print('敌人死翘翘了,你赢了!')elif player_life <= 0 and enemy_life > 0:enemy_victory += 1print('悲催,敌人把你干掉了!')else:print('哎呀,你和敌人同归于尽了!')if player_victory > enemy_victory :time.sleep(1)print('【最终结果:你赢了!】')
elif enemy_victory > player_victory:print('【最终结果:你输了!】')
else: print('【最终结果:平局!】')
4、简化字符串的连接
1)格式符%+类型码
%s字符串,%f浮点数,%d整数
2)format()函数
format()函数用大括号{}占位,不用区分类型码
对比
print('【玩家】\n'+'血量:'+str(player_life)+'\n攻击:'+str(player_attack))
print('【玩家】\n血量:%s \n攻击:%s' % (player_life,player_attack))
print('【玩家】\n血量:{}\n攻击:{}'.format(player_life,player_attack))
5、新增功能:3局过后,是否再来一盘
import time,random
#随机生成属性
player_victory=0
enemy_victory=0while True:for i in range(1,4):print('\n-------现在是第'+str(i)+'局-------')player_life=random.randint(100,150)player_attack=random.randint(30,50)enemy_life=random.randint(100,150)enemy_attack=random.randint(30,50)print('【玩家】\n血量:{}\n攻击:{}'.format(player_life,player_attack))print('--------------------------------------')time.sleep(1)print('【敌人】\n血量:{}\n攻击:{}'.format(enemy_life,enemy_attack))print('--------------------------------------')time.sleep(1)#双方PKwhile (player_life>0) and (enemy_life>0):player_life-=enemy_attackenemy_life-=player_attackprint ('你发起了攻击,【敌人】剩余血量{}'.format(enemy_life))print ('敌人向你发起了攻击,【玩家】剩余血量{}'.format(player_life))print ('--------------------------------------')time.sleep(1.5)#打印结果if player_life<0 and enemy_life>0:enemy_victory+=1print('哎呀,你没了。')elif player_life>0 and enemy_life<0:player_victory+=1print('恭喜你!取得胜利!')else:print('哦豁,你和敌人同归于尽了。')time.sleep(1)if player_victory>enemy_victory:print('\n【最终结果:你赢了】')elif player_victory<enemy_victory:print('\n【最终结果:你输了】')else:print('\n【最终结果:平局】')time.sleep(1)a=input('你想再来一局吗?请按n键离开游戏,按其他任意键继续游戏。')if a=='n':break
风云编程python基础语法(2)相关推荐
- 风云编程python基础语法(8)|| 完结
目录 十八.思维课-用编程能力解决实际问题 流程图 产品设计 如何提需求 如何设计解决方案 练习 (1)"不知道吃什么" (2)滚动的广告牌 十九. 目标 阶段1.0:输入固定 ...
- 风云编程python基础语法(3)
目录 九.编程学习的两大瓶颈 1.知识学完就忘 2.缺乏解题能力 练习:九九乘法表 十.函数 1.函数的定义 2.定义和调用函数 3.参数的类型 4.return语句 5.变量作用域 练 ...
- 风云编程python基础语法(1)
未完待续,持续更新中... 99**2 = 99^2 一.print()函数 二.数据类型 三.条件判断 四.input()函数 五.列表和字典+元组 列表list 1.格式:roommates=[' ...
- 风云编程python基础语法(5)
目录 十四.角色属性克制 目标 版本1.0:类的封装,打包函数 版本2.0:类的继承和实例化,让三种角色属性不同 版本3.0:为类添加克制关系的类方法 版本4.0:角色类型之间的配合 版本5.0:优化 ...
- 风云编程python基础语法(6)
目录 十五.编码与文件 编码 二进制 编码表 encode和decode 文件读写 读取文件 写入文件 小结 练习 统计成绩 默写古诗 十六.模块 什么是模块 使用自己的模块 import语句 fro ...
- 风云编程python基础语法(7)
目录 十七.发邮件 目标 版本1.0:发一封最简单的邮件 smtplib模块 email模块 代码结构 可能出现的错误 版本2.0:给自己发完整的邮件 丰富邮件头 丰富正文内容 版本3.0:群发一封完 ...
- 风变编程python助教_花30天时间,学完了风变编程Python基础语法课
原标题:花30天时间,学完了风变编程Python基础语法课 20节实打实的课程,1个月时间,我终于学完了风变编程的Python基础语法课.刚开始学的时候,就有人问我感受怎么样,当时本着未知全貌不予置评 ...
- 风变python基础语法_风变编程python (基础语法爬虫精进)
温馨提示:本信息由[会员:crm010com]搜集整理发布,版权归原作者及发布者所有,您如有异议请 举报 或者 版权申诉. 风变编程python (基础语法爬虫精进) 第1章介绍在计算机中安装Pyth ...
- 风变编程python课_花30天时间,学完了风变编程Python基础语法课
原标题:花30天时间,学完了风变编程Python基础语法课 20节实打实的课程,1个月时间,我终于学完了风变编程的Python基础语法课.刚开始学的时候,就有人问我感受怎么样,当时本着未知全貌不予置评 ...
最新文章
- jQuery添加DOM节点常用的5种方法
- linux启动自动挂载共享文件,linux中自动挂载windows 共享目录
- iis mysql php 附件上传大小_修改上传附件2M大小限制的方法/php+iis上传附件默认大小修改方法...
- python中引入sql的优点_SQL Server 2017中的Python:增强的数据库内机器学习
- 解决:pycharm中动画函数animation.FuncAnimation不起作用
- WebBrowser 控件中屏蔽alert,confirm脚本对话框的方法。
- 什么是CPAN(安装NAGIOS使用到)
- Codeforces Round #676 (Div. 2) E待补
- 【Splay】波动值之和(金牌导航 Splay-1)
- 项目:如何快速实现电脑间大文件(lichee.tar.gz)互传?
- (良心)世上最全设计模式导读(含难度预警与使用频率完整版)
- php 增加数组下标_PHP数组排序更改下标KEY方法
- java代码求IP和mac地址
- 对于over-posting的防御
- must be str,not int
- 3dB等波纹低通滤波器设计(HFSS)
- 自动化运维工具ansible安装及使用
- 忘记电脑开机密码怎么办?六种方法教你解决
- mongodb集群 java_Mongodb集群操作的JAVA代码详解
- android微信分享走小程序流程,教你怎么把微信小程序分享到朋友圈
热门文章
- AC3简介及压制攻略 zz
- 弱压力测试以及图形化报告
- 深度解析阿里、腾讯、京东等20家企业的技术案例
- 滴滴外卖南京单量不及预期,“击鼓传花”何日是头?
- map集合嵌套list集合遍历方式
- .NET Core 3.0 代码加密工具-Virbox Protector .NET 版
- 基于51单片机的DS18B20温度控制加热降温系统设计
- fis 产出修改的html,FIS3项目构建
- Machine Leaning
- hp2548无线服务器地址,无线直连可以这么玩_HP 2548_办公打印应用指南-中关村在线...