python的第一个实战项目--人机大战

import time
import randomclass Role():def __init__(self,name = '【角色】'):self.name = nameself.life = random.randint(100,150)self.attack = random.randint(30,50)class Knight(Role):def __init__(self,name = '【圣光骑士】'):Role.__init__(self,name)  #体现封装self.life = 5*self.lifeself.attack = 3*self.attackdef fight_buff(self,opponent,str1,str2):if opponent.name == '【暗影刺客】':self.attack = int(self.attack * 1.5)print('%s【圣光骑士】对%s【暗影刺客】说:让无尽光芒制裁你的堕落!”'%(str1, str2))class Assassin(Role):def __init__(self,name = '【暗影刺客】'):Role.__init__(self,name)self.life = 0.8*self.lifeself.attack =1.5 * self.attackdef fight_buff(self,opponent,str1,str2):if opponent.name  == '【精灵弩手】':self.attack = int(self.attack * 1.5)print('『%s』【暗影刺客】对 『%s』【精灵弩手】说:“主动找死,就别怪我心狠手辣。”'%(str1, str2)) class Bowman(Role):def __init__(self,name = '【精灵弩手】'):Role.__init__(self,name)self.life = 1.2 * self.lifeself.attack = 1.2 *self.attackdef fight_buff(self,opponent,str1,str2):if opponent.name  == '【圣光骑士】':self.attack = int(self.attack * 1.5)print('『%s』【精灵弩手】对 『%s』【圣光骑士】说:“骑着倔驴又如何?你都碰不到我衣服。”'%(str1, str2))class Game():def __init__(self):self.players = []self.enemies = []self.score = 0self.game_start()self.born_role()self.born_role()self.show_role()self.order_role()self.pk_role()self.show_result()def game_start(self):print('-----欢迎来到PK小游戏--------')print('将自动生成【玩家角色】和【电脑 】')input('请按回车继续')# 随机生成6个角色(6个实例对象,包括name life attack 需要学习)def born_role(self):for i in range(3):self.players.append(random.choice([Knight(),Assassin(),Bowman()]))self.enemies.append(random.choice([Knight(),Assassin(),Bowman()]))def cooperat_role(self):players_list = [self.players[0].name,self.players[1].name,self.players[2].name]enemies_list = [self.enemies[0].name,self.enemies[1].name,self.enemies[2].name]players_set = set(players_list)  #set是求交集enemies_set = set(enemies_list)if len(players_set) == 1:print('我触发了“角色类型一致”的条件,每个角色的血量增加25%')for i in range(3):self.players[i].life = int(self.players[i].life * 1.25)if len(players_set) == 3:print('我方触犯了“角色类型兼备”的条件,每个角色的攻击增加25%')for i in range(3):self.players[i].attack = int(self.players[i].attack * 1.25)if len(enemies_set) == 1:print('敌方触发了"角色类型一致”的条件,每个角色的血量增加25%')for i in range(3):self.enemies[i].life = int(self.enemies[i].life * 1.25)if len(players_set) == 3:print('敌方触犯了“角色类型兼备”的条件,每个角色的攻击增加25%')for i in range(3):self.enemies[i].attack = int(self.enemies[i].attack * 1.25)input('请按任意键,查看【你的队伍】和【敌人队伍】的角色信息:') # 生成和展示角色信息def show_role(self):# 展示我方的3个角色print('----------------- 角色信息 -----------------')print('你的人物:')for i in range(3):#(需要学习,players是一个存放三个实例对象的列表)print('[我方]%s  血量:%d  攻击:%d'%(self.players[i].name,self.players[i].life,self.players[i].attack))print('--------------------------------------------')print('电脑敌人:')# 展示敌方的3个角色for i in range(3):print('[敌方]%s  血量:%d  攻击:%d'%(self.enemies[i].name,self.enemies[i].life,self.enemies[i].attack))print('--------------------------------------------')input('\n请按回车键继续。\n')  # 为了让玩家更有控制感,可以插入类似的代码来切分游戏进程。# 角色排序,选择出场顺序。def order_role(self): # global players  #设置全局变量,后续可以用order_dict = {}for i in range(3):order = int(input('你想将 %s 放在第几个上场?(输入数字1~3)'% self.players[i].name))order_dict[order] = self.players[i]  self.players = []for i in range(1,4):self.players.append(order_dict[i]) print('\n我方角色的出场顺序是:%s、%s、%s' %(self.players[0].name,self.players[1].name,self.players[2].name))print('\n敌方角色的出场顺序是:%s、%s、%s' %(self.enemies[0].name,self.enemies[1].name,self.enemies[2].name))# 角色PKdef pk_role(self): round = 1  for i in range(3):  # 一共要打三局# 每一局开战前展示战斗信息print('\n----------------- 【第%d局】 -----------------' %round)self.players[i].fight_buff(self.enemies[i],'我方','敌方')self.enemies[i].fight_buff(self.players[i],'敌方','我方')# 开始判断血量是否都大于零,然后互扣血量。while self.players[i].life > 0 and self.enemies[i].life > 0:self.enemies[i].life -= self.players[i].attackself.players[i].life -= self.enemies[i].attackprint('%s发起了攻击,%s剩余血量%d'%(self.players[i].name,self.enemies[i].name,self.players[i].life))print('%s发起了攻击,%s剩余血量%d'%(self.enemies[i].name,self.players[i].name,self.enemies[i].life))print('--------------------------')time.sleep(1)else:    if self.players[i].life <= 0 and self.enemies[i].life > 0:print('\n 很遗憾,我方%s 挂掉了'%(self.players[i].name))self.score -= 1elif self.players[i].life >0 and self.enemies[i].life<= 0: print('\n恭喜,我方%s 活下来了。'% (self.players[i].name))self.score += 1else:print('\n我的天,他们俩都死了啊!')round += 1# 返回单局战果和计分法所加分数。def show_result(self):  # 注意:该函数要设定参数,才能判断单局战果。input('\n按回车键 查看最后结果\n')if self.score >0:print('【最终结果】\n 你赢了,最终的财宝归你了')elif self.score == 0:print('【最终结果】\n 你没有胜利有没有失败')else:print('【最终结果】\n 你失败了')game = Game()

人机大战(类和对象)相关推荐

  1. 植物大战 类和对象 ——C++

    "北海虽赊,扶摇可接.东隅已逝,桑榆非晚." 这里是目录 一.类和对象入门概念 1.类class 2.类的访问限定符 3.类的作用域 4.类的实例化 5.类对象的存储方式 二.什么 ...

  2. 人机猜拳小游戏(类和对象)

    首先,创建四个java类分别是用户类User,电脑类Computer,游戏类Game以及测试类Test; 代码如下: 1.用户类 package 类和对象; import java.util.Scan ...

  3. Python—实操小实验之人机PK游戏(终极版本—应用类与对象的知识点应用)

    Python-实操小实验之人机PK游戏(终极版本-应用类与对象的知识点应用) 人机PK游戏所需要的基础元素如下: ①要有玩家.敌人.生命值.攻击力,还要有计分: ②要可以互相进行攻击,攻击之后生命值要 ...

  4. java小游戏:五子棋人机大战

    一.java小游戏:五子棋人机大战 1.绘制窗口 package wuziqi;import javax.swing.*; import java.awt.event.MouseAdapter; im ...

  5. 直击高考人机大战:技术、争议与人族胜利

    本文来自AI新媒体量子位(QbitAI) 6月7日17点,2017年第一日高考结束,数学学科停笔交卷的铃声划破长空. 北京第八十中学望京校区人潮涌动,结束数学厮杀的考生正陆续走出考场,有欢有悲,神色各 ...

  6. 【python】人机大战

    人机大战:人和机器进行猜拳游戏写成一个类, 首先选择角色:1 曹操,2 张飞,3 刘备, 然后选中角色进行猜拳:1 剪刀,2 石头 ,3 布, 玩家输入一个1-3的数字,然后电脑出拳,随机产生一个1- ...

  7. “围棋人机大战”唯一人类的胜利记录将被制作成NFT进行拍卖

    北京时间2021年5月11日,韩国围棋九段棋手李世石将"围棋人机大战"唯一人类的胜利记录制作成NFT进行拍卖.此次,李世石在以太坊区块链上做数位化处理的NFT内容包括:比赛名称.地 ...

  8. Python入门基础(6)--面向对象/类和对象/魔术方法

    面向对象基本概述 面向对象(Object Oriented Programming,OOP)编程:扩展性更强.可读性更好.面向对象的编程将数据和操作数据封装到对象中,组织代码和数据的方式更接近人的思维 ...

  9. Java类与对象案例之打字游戏

    类与对象案例-童年回忆之打字游戏 一.玩家类 二.等级类 三.游戏类 四.等级地图 五.测试类 这次要做的案例是一个打字游戏的案例,相信大家小时候都玩过金山打字通的警察抓小偷和飞机大战,这次的案例是类 ...

最新文章

  1. ZooKeeper学习笔记1-----------安装启动
  2. 8.6 wait和waitpid函数-进程控制
  3. AAAI第二届“AI诺奖”出炉,百万美元奖金颁给批判黑箱、推广可解释AI的杜克大学女教授...
  4. Atitit.软件GUI按钮与仪表盘--db数据库区--导入mysql sql错误的解决之道
  5. idea.config.path is invalid 问题
  6. struts2 s:optiontransferselect 标签的使用
  7. js 中使用 时间datetime 类型到前端iOS 不兼容问题
  8. ajax 回调数据 刷新table_Ajax gt;gt;gt; 001
  9. 关于集成通用mapper的Mybatis代码生成器产生的model类注解
  10. html5/haXe开发偶感
  11. python安全性_关于python安全性的问题
  12. Linux服务器生成https证书
  13. 《计算机系统基础》复习——简答题 01
  14. 数据线CE测试标准 准备资料
  15. 打开计算机任务栏有桌面没,如何解决Win7任务栏不显示打开的窗口的问题
  16. idea切换工作空间_IDEA在一个工作空间中管理多个项目的详细步骤
  17. Python:实现simpson approx辛普森算法(附完整源码)
  18. 大数据促进中小企业快递航运战略三种方法
  19. 007. RPX服务端和设计端说明
  20. 可可网络验证9.3、9.5版本

热门文章

  1. 论文翻译 —— Model Free Episodic Control
  2. UI库你应该知道的基础(超实用)
  3. 揭秘阿里云WAF背后神秘的AI智能防御体系
  4. 电机噪音测试:手持式噪音计术语1
  5. Java的应用领域有哪些
  6. Python就业前景好不好?为什么学完Python找不到工作?
  7. uni-app(Vue.js)创建运行微信小程序
  8. 安卓更新UI的几种方法
  9. 百家讲坛_我读经典17_《易经》与人生-曾仕强(转)
  10. 团队-中国象棋游戏-设计文档