python 面向对象编程 - 小游戏
面向对象写的小游戏
欢迎玩耍
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 面向对象编程 - 小游戏的更多相关文章
- JavaScript面向对象编程小游戏---贪吃蛇
1 面向对象编程思想在程序项目中有着非常明显的优势: 1- 1 代码可读性高.由于继承的存在,即使改变需求,那么维护也只是在局部模块 1- 2 维护非常方便并且成本较低. 2 这个demo是采用了 ...
- Python - 面向对象编程 - 小实战(1)
题目 设计一个类Person,生成若干实例,在终端输出如下信息 小明,10岁,男,上山去砍柴 小明,10岁,男,开车去东北 小明,10岁,男,最爱大保健 老李,90岁,男,上山去砍柴 老李,90岁,男 ...
- Python - 面向对象编程 - 小实战(2)
需求 小明和小美都爱跑步 小明体重 75 公斤 小美体重 45 公斤 每次跑步会减肥 0.5 公斤 每次吃东西体重增加 1 公斤 需求分析 小明.小美都是一个具体的对象,他们都是人,所以应该抽象成人类 ...
- python面向对象编程小程序- 选课系统
选课系统 花了一晚上写的,可能还存在不足 1.程序框架 2.文件夹建立 D:/选课系统 |___api | |___common_api.py |___bil | |___common.py |___ ...
- Python - 面向对象编程 - 小实战(3)
需求 房子(House)有户型.总面积.家具名称列表:新房子没有任何的家具 家具(HouseItem)有名字.占地面积 席梦思(bed) 占地 4 平米 衣柜(bed) 占地 2 平米 餐桌(bed) ...
- Python 面向对象编程基础
Python 面向对象编程基础 虽然Pthon是解释性语言,但是Pthon可以进行面向对象开发,小到 脚本程序,大到3D游戏,Python都可以做到. 一类: 语法: class 类名: 类属性,方法 ...
- Python面向对象编程指南
Python面向对象编程指南(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1SbD4gum4yGcUruH9icTPCQ 提取码:fzk5 复制这段内容后打开百度网 ...
- python面向对象编程进阶
python面向对象编程进阶 一.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 ...
- Python 面向对象编程 继承 和多态
Python 面向对象编程 继承 和多态 一:多继承性 对于java我们熟悉的是一个类只能继承一个父类:但是对于C++ 一个子类可以有多个父亲,同样对于 Python一个类也可以有多个父亲 格式: c ...
随机推荐
- QString unsigned char* 的转换
QString -> unsigned char* : QString str = "ABCD"; int length = str.length(); unsigned ...
- 完美解决iis下JWplayer提示Error loading media: File could not be played错误
最近开发项目需要使用JWplayer插件播放视频,但是无论换那个版本.换什么样的视频总是提示Error loading media: File could not be played错误,废了好大的劲 ...
- shell多线程之进程间通信
# 这是一个简单的并发程序,有如下要求: # .有两个程序a和b,希望他们能并发执行,以节约时间 # .a和b都是按照日期顺序执行,但b每日程序的前提条件是当日a的程序已经执行完毕 #解决方案: # ...
- Spring之ApplicationContext
(1)ApplicationContext接口容器 ApplicationContext用于加载Spring的配置文件,在程序中充当“容器”的角色.其实现类有两个.通过Ctrl +T查看: A.配置文 ...
- 3021Java_数据类型
1.分类 Java数据类型 基本数据类型 数值型 整数类型 浮点类型 字符型 布尔型 引用数据类型 类 接口 数组 2.基本数据类型 2.1 综述 java的8种基本数据类型(简单数据类型) bool ...
- Flink UDF
本文会主要讲三种udf: ScalarFunction TableFunction AggregateFunction 用户自定义函数是非常重要的一个特征,因为他极大地扩展了查询的表达能力.本文除了介 ...
- JavaScript 操作 DOM 总结
基本概念 DOM 是 JavaScript 操作网页的接口,全称为"文档对象模型"(Document Object Model).它的作用是将网页转为一个 JavaScript 对 ...
- C++程序设计1(侯捷video 7-13)
一.Big three(拷贝构造.拷贝赋值.析构函数)(video7) Big three指三个特殊函数,分别是拷贝构造函数.拷贝赋值和析构函数. 什么时候需要拷贝构造.拷贝赋值.析构函数: 当类中 ...
- 【分页工具-spring boot】Mybatis PageHelper 集成Spring boot
官方文档:https://github.com/pagehelper/pagehelper-spring-boot 1.引入包,测试过以下版本兼容性还是比较好的 <!--Mybatis-Spri ...
- Spring Bean 生命周期之“我从哪里来?” 懂得这个很重要
Spring bean 的生命周期很容易理解.实例化 bean 时,可能需要执行一些初始化以使其进入可用 (Ready for Use)状态.类似地,当不再需要 bean 并将其从容器中移除时,可能需 ...