面向对象写的小游戏

欢迎玩耍

class Omnicience:
camp = 'Omniscience' def __init__(self,
name,
atk=100,
hp=1000,
mp=500,
power=500,
lever=1,
atk_growth=2.0,
hp_growth=1.9,
mp_growth=1.2,
power_growth=1.3,
money=1000
):
self.name = name
self.atk = atk * atk_growth ** lever
self.hp = hp * hp_growth ** lever
self.mp = mp * mp_growth ** lever
self.power = power * power_growth ** lever
self.lever = lever
self.money = money def attack(self, enemy): # 普通攻击技能,enemy是敌人;
damage_value = self.atk - enemy.power*0.05 # 根据自己的攻击力,攻击敌人就减掉敌人的生命值。
enemy.hp -= damage_value def Sword(self, enemy):
self.mp -= 200
enemy.hp -= 300 * self.lever class Offscum:
camp = 'offscum' def __init__(self,
name,
atk=100,
hp=1000,
mp=500,
power=500,
lever=1,
atk_growth=1.3,
hp_growth=1.6,
mp_growth=1.2,
power_growth=2.0,
money=1000
):
self.name = name
self.atk = atk * atk_growth ** lever
self.hp = hp * hp_growth ** lever
self.mp = mp * mp_growth ** lever
self.power = power * power_growth ** lever
self.lever = lever
self.money = money def attack(self, enemy): # 普通攻击技能,enemy是敌人;
damage_value = self.atk - enemy.power*0.05 # 根据自己的攻击力,攻击敌人就减掉敌人的生命值。
enemy.hp -= damage_value def xianglong_zhang(self, enemy):
self.mp -= 200
enemy.hp -= 200 * self.lever class Critters:
camp = 'Critters'
def __init__(self,
name,
atk=10,
hp=100,
mp=50,
power=50,
lever=1,
atk_growth=1.3,
hp_growth=1.6,
mp_growth=1.2,
power_growth=2.0,
money=100):
self.name = name
self.atk = atk * atk_growth ** lever
self.hp = hp * hp_growth ** lever
self.mp = mp * mp_growth ** lever
self.power = power * power_growth ** lever
self.lever = lever
self.money = money def attack(self, enemy): # 普通攻击技能,enemy是敌人;
damage_value = self.atk - enemy.power # 根据自己的攻击力,攻击敌人就减掉敌人的生命值。
enemy.hp -= damage_value def xianglong_zhang(self, enemy):
self.mp -= 20
enemy.hp -= 20 * self.lever class Dagger:
def __init__(self, name='dagger', price=475, atk=9, hp=100, lever=10):
self.name = name
self.price = price
self.atk = atk
self.hp = hp
self.lever = lever def update(self, obj):
if obj.lever >= self.lever and obj.money >= self.price:
obj.money -= self.price # 减钱
obj.atk += self.atk # 加攻击
obj.hp += self.hp # 加生命值 import random
import time
p_1 = Omnicience('ywy')
boos = Offscum('wq',lever=random.randint(1,10))
npc = Critters('nick')
equipment = Dagger() while True:
print(f'name:{p_1.name}')
print(f'lever:{p_1.lever}')
print(f'money:{p_1.money}')
print(f'hp:{p_1.hp}')
print(f'mp:{p_1.mp}')
print(f'atk:{p_1.atk}')
print(f'power:{p_1.power}')
print('旅行中..........')
time.sleep(random.random()*10)
meet = random.choice(('boos', 'npc', 'equipment'))
if meet == 'boos':
print('BOOS出现了')
print(f'name:{boos.name}')
print(f'lever:{boos.lever}')
print(f'money:{boos.money}')
print(f'hp:{boos.hp}')
print(f'mp:{boos.mp}')
print(f'atk:{boos.atk}')
print(f'power:{boos.power}')
while boos.hp > 0 and p_1.hp > 0:
print('请选择')
p_1_chiose = input('普通攻击,六脉神剑\n')
if p_1_chiose == '普通攻击':
p_1.attack(boos)
print(f'{p_1.name}使用了{p_1_chiose}攻击了boos')
print(f'boos剩余{boos.hp}hp')
boos_chiose = random.choice(('普通攻击','降龙十八掌'))
print(boos_chiose)
if boos.hp <= 0:
print('boos临死也不放过你')
if boos_chiose == '普通攻击':
boos.attack(p_1)
print(f'{boos.name}使用了{boos_chiose}攻击了{p_1.name}')
print(f'你剩余{p_1.hp}hp')
elif boos_chiose == '降龙十八掌':
if boos.mp >= 200:
boos.xianglong_zhang(p_1)
print(f'{boos.name}使用了{boos_chiose}攻击了{p_1.name}')
print(f'你剩余{p_1.hp}hp')
else:
print(f'傻子boos{boos.name}没有蓝没法使用{boos_chiose}你躲过一劫')
print(f'你剩余{p_1.hp}hp')
elif p_1_chiose == '六脉神剑':
if p_1.mp >= 200:
p_1.Sword(boos)
print(f'boos剩余{boos.hp}hp')
if boos.hp <= 0:
print('boos临死也不放过你')
boos_chiose = random.choice(('普通攻击','降龙十八掌'))
if boos_chiose == '普通攻击':
boos.attack(p_1)
print(f'{boos.name}使用了{boos_chiose}攻击了{p_1.name}')
print(f'你剩余{p_1.hp}hp')
elif boos_chiose == '降龙十八掌':
if boos.mp >= 200:
boos.xianglong_zhang(p_1)
print(f'{boos.name}使用了{boos_chiose}攻击了{p_1.name}')
print(f'你剩余{p_1.hp}hp')
else:
print(f'傻子boos{boos.name}没有蓝没法使用{boos_chiose}你躲过一劫')
print(f'你剩余{p_1.hp}hp')
else:
print('蓝不够')
continue
if p_1.hp <= 0 and boos.hp <= 0:
print('你和boos同归于尽了')
break
elif p_1.hp <= 0:
print('你死了boos赢了')
break
elif boos.hp <= 0:
print('恭喜你通过了')
break
if meet == 'npc':
print('npc出现了')
print(f'name:{npc.name}')
print(f'lever:{npc.lever}')
print(f'money:{npc.money}')
print(f'hp:{npc.hp}')
print(f'mp:{npc.mp}')
print(f'atk:{npc.atk}')
print(f'power:{npc.power}')
while npc.hp > 0 and p_1.hp > 0:
print('请选择')
p_1_chiose = input('普通攻击,六脉神剑\n')
if p_1_chiose == '普通攻击':
p_1.attack(npc)
print(f'{p_1.name}使用了{p_1_chiose}攻击了npc')
print(f'npc剩余{npc.hp}hp')
if npc.hp <=0:
print('nike临死也不放过你') npc_chiose = random.choice(('普通攻击','鲤鱼打滚'))
if npc_chiose == '普通攻击':
npc.attack(p_1)
print(f'{npc.name}使用了{npc_chiose}攻击了{p_1.name}')
print(f'你剩余{p_1.hp}hp')
elif npc_chiose == '鲤鱼打滚':
if npc.mp >= 200:
npc.xianglong_zhang(p_1)
print(f'{npc.name}使用了{npc_chiose}攻击了{p_1.name}')
print(f'你剩余{p_1.hp}hp')
else:
print(f'傻子npc{npc.name}没有蓝没法使用{npc_chiose}你躲过一劫')
print(f'你剩余{p_1.hp}hp')
elif p_1_chiose == '六脉神剑':
if p_1.mp >= 200:
p_1.Sword(npc)
print(f'npc剩余{npc.hp}hp')
if npc.hp <= 0:
print('nike临死也不放过你')
npc_chiose = random.choice(('普通攻击','鲤鱼打滚'))
if npc_chiose == '普通攻击':
npc.attack(p_1)
print(f'{npc}使用了{npc_chiose}攻击了{p_1.name}')
print(f'你剩余{p_1.hp}hp')
if npc_chiose == '鲤鱼打滚':
if npc.mp >= 200:
npc.xianglong_zhang(p_1)
print(f'{npc}使用了{npc_chiose}攻击了{p_1.name}')
print(f'你剩余{p_1.hp}hp')
else:
print(f'傻子npc{npc.name}没有蓝没法使用{npc_chiose}你躲过一劫')
print(f'你剩余{p_1.hp}hp')
else:
print('蓝不够')
continue
if p_1.hp <= 0 and npc.hp <= 0:
print('你和npc同归于尽了')
break
elif p_1.hp <= 0:
print('你死了npc赢了')
break
elif npc.hp <= 0:
print('你打死了npc')
print('升级1级')
p_1.lever += 1
npc.lever = random.randint(1,100)
p_1 = Omnicience('ywy',lever=p_1.lever)
npc = Critters('nick',lever=npc.lever)
elif meet == 'equipment':
if p_1.lever >= equipment.lever and p_1.money >= equipment.price:
print('碰到装备装备成功')
else:
print('等级不够或者钱不够你与装备有缘无分')

python 面向对象编程 - 小游戏的更多相关文章

  1. JavaScript面向对象编程小游戏---贪吃蛇

    1 面向对象编程思想在程序项目中有着非常明显的优势: 1- 1 代码可读性高.由于继承的存在,即使改变需求,那么维护也只是在局部模块 1- 2 维护非常方便并且成本较低. ​ 2 这个demo是采用了 ...

  2. Python - 面向对象编程 - 小实战(1)

    题目 设计一个类Person,生成若干实例,在终端输出如下信息 小明,10岁,男,上山去砍柴 小明,10岁,男,开车去东北 小明,10岁,男,最爱大保健 老李,90岁,男,上山去砍柴 老李,90岁,男 ...

  3. Python - 面向对象编程 - 小实战(2)

    需求 小明和小美都爱跑步 小明体重 75 公斤 小美体重 45 公斤 每次跑步会减肥 0.5 公斤 每次吃东西体重增加 1 公斤 需求分析 小明.小美都是一个具体的对象,他们都是人,所以应该抽象成人类 ...

  4. python面向对象编程小程序- 选课系统

    选课系统 花了一晚上写的,可能还存在不足 1.程序框架 2.文件夹建立 D:/选课系统 |___api | |___common_api.py |___bil | |___common.py |___ ...

  5. Python - 面向对象编程 - 小实战(3)

    需求 房子(House)有户型.总面积.家具名称列表:新房子没有任何的家具 家具(HouseItem)有名字.占地面积 席梦思(bed) 占地 4 平米 衣柜(bed) 占地 2 平米 餐桌(bed) ...

  6. Python 面向对象编程基础

    Python 面向对象编程基础 虽然Pthon是解释性语言,但是Pthon可以进行面向对象开发,小到 脚本程序,大到3D游戏,Python都可以做到. 一类: 语法: class 类名: 类属性,方法 ...

  7. Python面向对象编程指南

    Python面向对象编程指南(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1SbD4gum4yGcUruH9icTPCQ 提取码:fzk5 复制这段内容后打开百度网 ...

  8. python面向对象编程进阶

    python面向对象编程进阶 一.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 ...

  9. Python 面向对象编程 继承 和多态

    Python 面向对象编程 继承 和多态 一:多继承性 对于java我们熟悉的是一个类只能继承一个父类:但是对于C++ 一个子类可以有多个父亲,同样对于 Python一个类也可以有多个父亲 格式: c ...

随机推荐

  1. Delphi皮肤之 - 图片按钮

    效果如图,支持普通.移上去.按下.弹起.禁用5种状态. unit BmpBtn; interface uses Windows, Messages, SysUtils, Classes, Graphi ...

  2. 【Qt】一劳永逸解决UAC问题(修改mkspecs\win32-msvc2012\qmake.conf)

    如果你的程序跑在一个开启了UAC保护的系统中,而你的程序又没有"盾牌"的话,程序总是会受到各种阻挠的,比如读写文件,写注册表等. 有了"盾牌"的话就不会出现一些 ...

  3. Tencent://Message/协议的实现原理(Windows提供协议注册)

    腾讯官方通过 Tencent://Message/协议可以让QQ用户显示QQ/TM的在线状态发布在互联网上:并且点击 XXX  ,不用加好友也可以聊天 官方链接: http://is.qq.com/w ...

  4. inno setup 配合istools

     istool,可以认为是inno setup的IDE吧   用用就知道了,istool用起来方便些,当然,脚本写好了,用不用istool就无所谓了 

  5. 解释一下,知乎上关于C语言奇技淫巧最火的回答。

    前几天逛知乎,碰巧发现一个很火的问题. “C 语言有什么奇技淫巧?”虽然问题本身没有什么特殊的地方,但是网友的回答却是非常幽默. 下面就让我们一起来分析一下,被赞最多的答案“C 语言运算符 趋向于‘- ...

  6. rest_framework

    一.解析器组件(parser) 1.编程:数据结构和算法的结合 2.restful规范 定义:url唯一定位资源,http请求方式区分用户行为 (1)接口设计规范 (2)返回数据规范 (3)错误消息规 ...

  7. 查看linux系统时间和时区

    参考地址:http://lidao.blog.51cto.com/ 一.使用date命令查看系统时间 [root@benbang ~]# date -R Tue, 01 Aug 2017 15:43: ...

  8. 最全java多线程学习总结1--线程基础

      <java 核心技术>这本书真的不错,知识点很全面,翻译质量也还不错,本系列博文是对该书中并发章节的一个总结. 什么是线程   官方解释:线程是操作系统能够进行运算调度的最小单位,包含 ...

  9. 视频直播:Windows中各类画面源的截取和合成方法总结

    当今,视频直播技术和实时音视频技术已经是很多行业必备,典型的应用场景有教育直播.远程视频会议.互联网娱乐等.在移动端发起直播,其画面源的种类是十分有限的,无非是取摄像头.截屏等.PC端由于其系统资源充 ...

  10. VMware克隆CentOS7,解决网络配置问题

    问题: 安装CentOS7 mini版,静态IP配置完毕后,关闭虚机CentOS7-1,克隆虚拟机为CentOS-2.克隆出来的虚拟机使用ifconfig命令,无法发现网卡,只有一个lo设备.虚机无法 ...