面向对象写的小游戏

欢迎玩耍

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. Webpack Waringing Critical dependencies

    报错信息如下: 出错原因先上图: 未注释部分使用了require的同时使用了es6的语法. 官方解释如下: 解决方法就是放开代码中的注释部分,不要使用es6语法

  2. 关于联合体union的详细解释

    1.概述 联合体union的定义方式与结构体一样,但是二者有根本区别. 在结构中各成员有各自的内存空间,一个结构变量的总长度是各成员长度之和.而在“联合”中,各成员共享一段内存空间,一个联合变量的长度 ...

  3. Docker容器化部署Python应用

    1. 简介 Docker是目前主流IT公司广泛接受和使用的,用于构建.管理和保护它们应用程序的工具. 容器,例如Docker允许开发人员在单个操作系统上隔离和运行多个应用程序,而不是为服务器上的每个应 ...

  4. mysql的配置和启动命令

    一.mysql配置文件在linux系统下的位置 使用命令查询位置: 1.找到安装位置 which mysql  -> /usr/bin/mysql 2.接下来就可以针对这个目录通过一些命令查看配 ...

  5. 秒懂Hash算法(一):什么是Hash

    Hash函数 在一般的线性表.树结构中,数据的存储位置是随机的,不像数组可以通过索引能一步查找到目标元素.为了能快速地在没有索引之类的结构中找到目标元素,需要为存储地址和值之间做一种映射关系h(key ...

  6. 【朝花夕拾】Android自定义View篇之(八)多点触控(上)MotionEvent简介

    前言 在前面的文章中,介绍了不少触摸相关的知识,但都是基于单点触控的,即一次只用一根手指.但是在实际使用App中,常常是多根手指同时操作,这就需要用到多点触控相关的知识了.多点触控是在Android2 ...

  7. 向Rocket.Chat推送消息

    Rocket.Chat推送消息 Rocket.Chat是一个开源实时通讯平台, 支持Windows, Mac OS, Linux. 支持聊天, 文件上传, 视频通话, 语音通话功能. 向Rocket. ...

  8. 学习 GitHub 有什么好处?

    layout: post title: "学习 GitHub 有什么好处?" date: 2018-04-15 19:20:20 +0800 --- 鸣谢:王顶 老师(河北经贸大学 ...

  9. LBXF时间管理法2.0

    前言 LBXF是柳比歇夫的中文拼音缩写,下文中会着重介绍柳比歇夫 时间管理法主要帮助我们提高生产性时间,以及提高生产效率.我会按照柳比歇夫.执行步骤.时间管理工具Toggle三个模块来讲解LBXF时间 ...

  10. ElasticSearch 7.1.1 集群环境搭建

    1. 集群简介 三台机器,均用于保存数据且可被选为master节点 服务版本 服务 版本 elasticsearch 7.1.1 jdk 1.8 1. 创建elsearch用户 不建议直接使用root ...