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 ...
随机推荐
- Linux之文件的压缩与解压缩
压缩格式 .zip,.rar,.7z,.tar,.gz,.xz,.bz2,.tar.gz,.tar.xz,.tar.bz2,其中,形如*.tar.gz为tar打包,gz压缩的文件 zip压缩打包程序 ...
- cmake常用工程示例大集合
1 简单的可执行文件生成工程 1.1 源文件 main.cpp #include <stdio.h> int main(int argc, char *argv[]) { printf ...
- 一个基于jQuery写的弹窗效果(附源码)
最近项目中频繁遇到需要弹出窗口的功能,一直使用浏览器默认的Alert和Confirm弹窗,感觉视觉效果不是那么好,而从网上下载的话又找不到合适的,找到的话有些也是十分臃肿,有时候感觉学习配置的功夫自己 ...
- RestTemplate使用不当引发的问题分析
背景 系统: SpringBoot开发的Web应用: ORM: JPA(Hibernate) 接口功能简述: 根据实体类ID到数据库中查询实体信息,然后使用RestTemplate调用外部系统接口获取 ...
- Hive —— 安装部署
一.安装Hive 1.1 下载并解压 下载所需版本的Hive,这里我下载版本为cdh5.15.2.下载地址:http://archive.cloudera.com/cdh5/cdh/5/ # 下载后进 ...
- ZTree简单粗暴快速使用
是什么:功能强大的树形插件 tip:查资料时痛苦的地方,自我改进 1.没有注明版本:版本不对应导致配置完成后各种无端的错误,特别难查找,运气好能找到英文的解答 2.没有写明配置文件,或者不指明配置文件 ...
- HTTP协议之应用
通过对http协议的理解.我们可以根据这些特性来进行一些应用. 1.我们可以根据http请求的头信息refer信息,我们可以来做网站的防盗链.refer记录访问到目标网站的上次访问路径.这样我们可以来 ...
- kuberbetes基础概念
部署了一大堆,来了解一下K8S一些基本的概念. 1.Node Node作为集群中的工作节点,运行真正的应用程序,在Node上Kubernetes管理的最小运行单元是Pod.Node上运行着Kubern ...
- Atlassian In Action - (Atlassian成长之路)
Atlassian是我工作过程中,使用过的最满意的研发团队管理套装.使用的主要软件包括Jira Software,Confluence,Fisheye/Crucible.理论上还可以再加上Bitbuc ...
- 美化Div的边框
CSS修饰Div边框 大部分时候,Div的边框真的做的太丑了,如果不用很多样式来修饰的话,它永远都是那么的突兀.作为一个后端开发,前端菜鸡,在没有设计和前端开发自己独自做项目的时候常常会遇到Div边框 ...