RPG小游戏

news/2025/2/1 9:53:05/

#导包
import time
import random

与学姐的台词

SCRIPT_NPC_SCHOOL_SISTER = ['你好!','你好!','你是新生吗?','是的','想要我教你魔法吗?','\n1、好的 \\n2、不用了吧,我不和学姐学魔法!\n']

世界里的魔法清单

MAGIC_BOOKS = [
['火魔法', 1],
['水魔法', 2],
['土魔法', 0.5]
]

class Body: # 人物类

NAME = ''  # 名字
HP = 0  # 血量
MAX_HP = 0  # 最大血量
MP = 0  # 魔法值
MAX_MP = 0  # 最大魔法值
DEFENSE = 0 #防御
MAGIC_DEFENSE =0 #魔法防御
crit = 0 #暴击
EXP = 0 #经验
LEVEL = 0 #等级
Health_Stone = 0 #血瓶
hit1 = 0
hit = 0
hit2 = 0ATTACK = 1
MAGIC_ATTACK = 1.3HAS_MAGIC = []  # 会的魔法POS_NAME = '南昌理工学院南大门'  # 地点def __init__(self, NAME_='Ice NPC', HP_=5, MP_=3, MAX_HP_=3,DEFENSE_ =1,MAGIC_DEFENSE_=1,crit_=random.uniform(0,0.1),hit1_ = 0,hit_ = 0,hit2_ = 0,EXP_ = 0,LEVEL_ = 0,Health_Stone_ =0,MAX_MP_=3, ATTACK_=1, MAGIC_ATTACK_=1.3, HAS_MAGIC_=[],POS_NAME_='南昌理工学院南大门'):# 初始化 默认值self.NAME = NAME_self.HP = HP_self.MP = MP_self.MAX_HP = MAX_HP_self.MAX_MP = MAX_MP_self.ATTACK = ATTACK_self.MAGIC_ATTACK = MAGIC_ATTACK_self.DEFENSE = DEFENSE_self.MAGIC_DEFENSE = MAGIC_DEFENSE_self.crit = crit_self.EXP = EXP_self.LEVEL = LEVEL_self.Health_Stone = Health_Stone_self.hit1 = hit1_self.hit = hit_self.hit2 = hit2_self.POS_NAME = POS_NAME_self.HAS_MAGIC = HAS_MAGIC_def LEVEL1(self, EXP , LEVEL = 0):if EXP > 5 | EXP ==5:LEVEL = EXP // 5else:EXP = EXP + 0print("您的经验加", EXP)print("您的等级为", LEVEL)def display_status(self):  # 显示人物状态print('\n\r', '    状态:' + self.NAME, end='')print('\n血量:' + '❤' * int(self.HP), '\n  魔法值:' + '⚓' * int(self.MP))print('地点:' + self.POS_NAME)if self.HAS_MAGIC == []:print('无魔法')else:self.display_magic()def display_status_fighting(self):print('\n\r', '    状态:' + self.NAME, end='')print('\n血量:' + '❤' * int(self.HP), '  魔法值:' + '⚓' * int(self.MP))def display_magic(self):  # 显示魔法print(self.NAME + '会如下几种魔法:')print('魔法名 ,消耗点数')i = 0for iMagic in self.HAS_MAGIC:print('第', i, '个魔法:', MAGIC_BOOKS[iMagic])i = i + 1def talk_to(self, NPC_, NPC_SCRIPT_, delay=0.3):
# 按剧本和NPC聊天
print('在' + self.POS_NAME + '遇到 ' + NPC_.NAME)for i in range(len(NPC_SCRIPT_)):if i % 2 == 1:  # 判断当前说话的人TURN = self.NAMEelse:TURN = NPC_.NAMEprint(TURN + ':' + NPC_SCRIPT_[i])time.sleep(delay)
#crit = random.uniform(0, 0.1)
def learn_magic_from(self, NPC_):
# 向NPC学习魔法NPC_.display_magic()
CHOOSE = input('是否向' + NPC_.NAME + '学魔法?(输入:1/2/no)')if CHOOSE == '1':print('恭喜' + self.NAME + '学会' + MAGIC_BOOKS[NPC_.HAS_MAGIC[0]][0] +',每次使用消耗' + str(MAGIC_BOOKS[NPC_.HAS_MAGIC[0]][1]) + 'MP.')self.HAS_MAGIC = self.HAS_MAGIC + [NPC_.HAS_MAGIC[0]]self.display_magic()
elif CHOOSE == '2':print('恭喜' + self.NAME + '学会' + MAGIC_BOOKS[NPC_.HAS_MAGIC[1]][0] +',每次使用消耗' + str(MAGIC_BOOKS[NPC_.HAS_MAGIC[1]][1]) + 'MP.')self.HAS_MAGIC = self.HAS_MAGIC + [NPC_.HAS_MAGIC[1]]self.display_magic()
elif CHOOSE == 'no':print('由于你的固执,没有学习新的魔法.')
else:print('不明白你说什么.')def use_small_Health_Stone_(self):#使用小血瓶
Health_rad = random.uniform(0.1,0.3)
self.Health_Stone = Health_rad * 3use_Stone = int(input('您是否使用小血瓶?(输入:1:使用 2: 不使用)'))
if use_Stone == 1:self.HP = self.HP + self.Health_Stoneprint("使用成功!")
else:print("使用失败!")def wuli_DEFENSE(self,NPC_):if self.ATTACK > NPC_.DEFENSE or NPC_.DEFENSE == self.ATTACK:self.hit1 = self.ATTACK - NPC_.DEFENSEelse:self.hit1 = self.ATTACKNPC_.HP = NPC_.HP - self.hit1NPC_.DEFENSE = NPC_.DEFENSE - self.ATTACK
if NPC_.DEFENSE < 0:NPC_.DEFENSE = 0def mofa_DEFENSE(self,NPC_,iChoose_magic_):
self.hit = self.MAGIC_ATTACK * MAGIC_BOOKS[self.HAS_MAGIC[iChoose_magic_]][1]
# print('hit:',hit,',',self.MAGIC_ATTACK,',',self.HAS_MAGIC[iChoose_magic_])
if self.hit > self.MAGIC_DEFENSE:self.hit2 = self.hit - self.MAGIC_DEFENSE
else:self.hit2 = 0
NPC_.MAGIC_DEFENSE = NPC_.MAGIC_DEFENSE - self.hit2
def attack_one_time(self, NPC_, iChoose_magic_=-1 , no_choose = 0):  # 攻击一下NPC
if iChoose_magic_ == -2:self.display_status()
elif iChoose_magic_ == -1:if no_choose == 0:MAX_ROUND = 100for i in range(MAX_ROUND):self.crit = random.uniform(0, 0.1)self.ATTACK = self.ATTACK * (1+ self.crit) *1NPC_.HP = NPC_.HP - self.ATTACKNPC_.MAX_HP = 3if self.HP > 4:print("您的血量良好!请继续战斗!")else:self.use_small_Health_Stone_()print("【暴击值为:"+ str(self.crit)+ "】")print('【', self.NAME + '击剑攻击' + NPC_.NAME, '造成了' + str(self.ATTACK), '点攻击】')self.ATTACK = 1else:self.wuli_DEFENSE( NPC_ )print('【', self.NAME + '击剑攻击' + NPC_.NAME, '造成了' + str(self.hit1), '点攻击】')elif iChoose_magic_ in self.HAS_MAGIC:# print(iChoose_magic_)if no_choose ==0:hit = self.MAGIC_ATTACK * MAGIC_BOOKS[self.HAS_MAGIC[iChoose_magic_]][1]# print('hit:',hit,',',self.MAGIC_ATTACK,',',self.HAS_MAGIC[iChoose_magic_])self.MP = self.MP - MAGIC_BOOKS[self.HAS_MAGIC[iChoose_magic_]][1]NPC_.HP = NPC_.HP - hit  # 魔法伤害=魔法消耗*魔法攻击力if self.HP > 4:print("您的血量良好!请继续战斗!")else:self.use_small_Health_Stone_()print('【', self.NAME + '用魔法' + MAGIC_BOOKS[self.HAS_MAGIC[iChoose_magic_]][0] + ',攻击了' + NPC_.NAME + ',','造成了' + str(hit) + '点攻击!】')print("【"+self.NAME + "消耗了" + str(MAGIC_BOOKS[self.HAS_MAGIC[iChoose_magic_]][1]) + "魔法"+"】")else:hit = self.MAGIC_ATTACK * MAGIC_BOOKS[self.HAS_MAGIC[iChoose_magic_]][1]self.mofa_DEFENSE( NPC_, iChoose_magic_)self.MP = self.MP - MAGIC_BOOKS[self.HAS_MAGIC[iChoose_magic_]][1]NPC_.HP = NPC_.HP - self.hit2  # 魔法伤害=魔法消耗*魔法攻击力print('【',self.NAME + '用魔法' + MAGIC_BOOKS[self.HAS_MAGIC[iChoose_magic_]][0] + ',攻击了' + NPC_.NAME + ',','造成了' + str(self.hit2) + '点攻击!】')print("【"+ self.NAME+"消耗了"+str(MAGIC_BOOKS[self.HAS_MAGIC[iChoose_magic_]][1])+"魔法"+"】")
if NPC_.HP <= 0:return 1
else:return 0def fight_with(self, NPC_):
# 挑战NPCprint('【', self.NAME + '开始和' + NPC_.NAME + '战斗! !', '】')MAX_ROUND = 100
IS_DEAD = 0for ROUND in range(MAX_ROUND):if (ROUND % 2 == 0):self.display_status_fighting()self.display_magic()NPC_.display_status_fighting()choose_magic = int(input('-----使用魔法/普通攻击(-1普通攻击,0/1/2..魔法攻击,查看状态-2):'))no_choose = 0IS_DEAD = self.attack_one_time(NPC_, choose_magic , no_choose)IS_DEAD = IS_DEAD * 2  # 用乘法,让我们不改变0,非0状态的情况下,标记是谁赢了else:choose_magic = random.choice(NPC_.HAS_MAGIC + [-1])no_choose = 1IS_DEAD = NPC_.attack_one_time(self, choose_magic , no_choose)IS_DEAD = IS_DEAD * 4  # 用乘法,让我们不改变0,非0状态的情况下,标记是谁赢了if IS_DEAD >= 1:print('【战斗结束】')if IS_DEAD == 2:print('【', self.NAME + '战胜了' + NPC_.NAME, '】')self.LEVEL1(2)elif IS_DEAD == 4:print('【', NPC_.NAME + '战胜了' + self.NAME, '】')self.LEVEL1(1)return IS_DEADelse:if ROUND % 2 == 1:print('【第' + str(1 + int(ROUND / 2)) + '回合结束!】\n===================================')

class World: # 世界类

# 剧本:遇到学姐# 玩家初始化
PLAYER = Body()# NPC初始化(先创造三个NPC,学姐,冰怪,火怪
NPCs = {'school elder sister': Body(NAME_='school elder sister', HAS_MAGIC_=[0, 1]),'ice monster': Body(NAME_='ice monster', HAS_MAGIC_=[2]),'fire monster': Body(NAME_='fire monster', HAS_MAGIC_=[0])
}# 显示一句话:两种方式,直接显示0,以及逐步显示1
def display_a_line(way, script='hello'):for i in range(len(script)):time.sleep(0.3)print('\r', script[0:i], end='')# 初始化世界:
def init(self):player_name = input('请输入玩家名:')self.PLAYER.NAME = player_nameprint('....南理文字RPG0.2的世界开始了.....')welcome_script = 'Hi,' + self.PLAYER.NAME + ',欢迎加入南理文字RPG0.2 '# self.display_a_line(script=welcome_script)print(welcome_script)self.PLAYER.display_status()self.PLAYER.talk_to(self.NPCs['school elder sister'],SCRIPT_NPC_SCHOOL_SISTER)  # 通过NPCs集合,调取'school elder sister'NPCself.PLAYER.learn_magic_from(self.NPCs['school elder sister'])def run(self):self.PLAYER.fight_with(self.NPCs['fire monster'])magic_world = World()magic_world.init()magic_world.run()

运行结果

请输入玩家名:张三
....南理文字RPG0.2的世界开始了.....
Hi,张三,欢迎加入南理文字RPG0.2 状态:张三
血量:❤❤❤❤❤ 
魔法值:⚓⚓⚓
地点:南昌理工学院南大门
无魔法
在南昌理工学院南大门遇到 school elder sister
school elder sister:你好!
张三:你好!
school elder sister:你是新生吗?
张三:是的
school elder sister:想要我教你魔法吗?
张三:
1、好的                           
2、不用了吧,我不和学姐学魔法!school elder sister会如下几种魔法:
魔法名 ,消耗点数
第 0 个魔法: ['火魔法', 1]
第 1 个魔法: ['水魔法', 2]
是否向school elder sister学魔法?(输入:1/2/no)1
恭喜张三学会火魔法,每次使用消耗1MP.
张三会如下几种魔法:
魔法名 ,消耗点数
第 0 个魔法: ['火魔法', 1]
【 张三开始和fire monster战斗! ! 】
状态:张三
血量:❤❤❤❤❤   魔法值:⚓⚓⚓
张三会如下几种魔法:
魔法名 ,消耗点数
第 0 个魔法: ['火魔法', 1]状态:fire monster
血量:❤❤❤❤❤   魔法值:⚓⚓⚓
-----使用魔法/普通攻击(-1普通攻击,0/1/2..魔法攻击,查看状态-2):-1
您的血量良好!请继续战斗!
【暴击值为:0.04814385334169269】
【 张三击剑攻击fire monster 造成了1.0481438533416927 点攻击】
【 fire monster用魔法火魔法,攻击了张三, 造成了0.30000000000000004点攻击!】
【fire monster消耗了1魔法】
【第1回合结束!】状态:张三
血量:❤❤❤❤   魔法值:⚓⚓⚓
张三会如下几种魔法:
魔法名 ,消耗点数
第 0 个魔法: ['火魔法', 1]状态:fire monster
血量:❤❤❤   魔法值:⚓⚓
-----使用魔法/普通攻击(-1普通攻击,0/1/2..魔法攻击,查看状态-2):0
您的血量良好!请继续战斗!
【 张三用魔法火魔法,攻击了fire monster, 造成了1.3点攻击!】
【张三消耗了1魔法】
【 fire monster用魔法火魔法,攻击了张三, 造成了0.30000000000000004点攻击!】
【fire monster消耗了1魔法】
【第2回合结束!】状态:张三
血量:❤❤❤❤   魔法值:⚓⚓
张三会如下几种魔法:
魔法名 ,消耗点数
第 0 个魔法: ['火魔法', 1]状态:fire monster
血量:❤❤   魔法值:⚓
-----使用魔法/普通攻击(-1普通攻击,0/1/2..魔法攻击,查看状态-2):-1
您的血量良好!请继续战斗!
【暴击值为:0.020140245648657032】
【 张三击剑攻击fire monster 造成了1.020140245648657 点攻击】
【 fire monster用魔法火魔法,攻击了张三, 造成了0.30000000000000004点攻击!】
【fire monster消耗了1魔法】
【第3回合结束!】状态:张三
血量:❤❤❤❤   魔法值:⚓⚓
张三会如下几种魔法:
魔法名 ,消耗点数
第 0 个魔法: ['火魔法', 1]状态:fire monster
血量:❤   魔法值:
-----使用魔法/普通攻击(-1普通攻击,0/1/2..魔法攻击,查看状态-2):0
您的血量良好!请继续战斗!
【 张三用魔法火魔法,攻击了fire monster, 造成了1.3点攻击!】
【张三消耗了1魔法】
【 fire monster用魔法火魔法,攻击了张三, 造成了0.30000000000000004点攻击!】
【fire monster消耗了1魔法】
【第4回合结束!】状态:张三
血量:❤❤❤   魔法值:⚓
张三会如下几种魔法:
魔法名 ,消耗点数
第 0 个魔法: ['火魔法', 1]状态:fire monster
血量:   魔法值:
-----使用魔法/普通攻击(-1普通攻击,0/1/2..魔法攻击,查看状态-2):-1
您是否使用小血瓶?(输入:1:使用 2: 不使用)1
使用成功!
【暴击值为:0.061351463148673714】
【 张三击剑攻击fire monster 造成了1.0613514631486738 点攻击】
【战斗结束】
【 张三战胜了fire monster 】
您的经验加 2
您的等级为 0Process finished with exit code 0

http://www.ppmy.cn/news/578814.html

相关文章

RPG游戏-任务系统

一、前置部分 &#xff08;一&#xff09;、协议部分 enum QUEST_STATUS {IN_PROGRESS 0;//已接受&#xff0c;未完成COMPLATED 1;//已完成&#xff0c;未提交FINISHED 2;//已完成&#xff0c;已提交FAILED 3;//已失败 }enum QUEST_LIST_TYPE {ALL 0;IN_PROGRESS 1;FI…

Java实现RPG游戏

一&#xff0e;实验目的 掌握面向对象程序设计的方法。 明确类与对象的概念&#xff0c;掌握面向对象设计七大原则&#xff1b;掌握常见的设计模式以及类图的描述。 二、UML类图 三、实验要求 1.功能描述几乎所有的RPG游戏&#xff08;一种源自《龙与地下城》的游戏类型&…

RPG

J2ME RPG游戏边学边做&#xff08;一&#xff09;   笔者以前是做j2ee的&#xff0c;一个月前由于兴趣所致开始利用业余时间学习j2me游戏开发。在网上看了一通教程后&#xff0c;便准备动手一边学一边做一个简单的rpg游戏。虽然起点比较高&#xff0c;但感觉游戏难度越大&…

rpg游戏发展史计算机网络,PC Gamer盘点史上最经典RPG游戏TOP15

RPG角色演类游戏往往能带给玩家史诗般的剧情和难忘的战斗体验&#xff0c;今天外媒PC Gamer盘点了史上最经典RPG游戏TOP15&#xff0c;让我们一起来看看吧&#xff01; 第 2 页 史上最经典15大RPG 2 6.《质量效应2(Mass Effect 2)》 发行时间: 2010年 发行商: BioWare 与第一…

堪比端游 欧美十大RPG网页游戏推荐

分享一下我老师大神的人工智能教程&#xff01;零基础&#xff0c;通俗易懂&#xff01;http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识&#xff0c;造福人民&#xff0c;实现我们中华民族伟大复兴&#xff01; 你喜欢RPG游戏吗&#xff1f;大多数玩家的…

rpg人物制作软件_能够自己DIY角色的rpg游戏-可以自己DIY角色的rpg游戏大全_飞翔游戏专题...

V1.0 安卓版 一款以文字修仙为主题的角色扮演手游 莽荒封神纪是一款以文字修仙为主题的角色扮演手游&#xff0c;唯美的场景设计&#xff0c;丰富特色的玩法&#xff0c;可灵根修炼、洪荒探索&#xff0c;还原一个真实的莽荒世界&#xff0c;感兴趣的玩家赶紧来下载莽荒封神纪官…

java做RPG小游戏

题目 java课设&#xff0c;一个游戏中有多种角色(Character)&#xff0c;例如&#xff1a;国王&#xff08;King&#xff09;、皇后&#xff08;Queen&#xff09;、骑士&#xff08;Knight&#xff09;、老怪&#xff08;Troll&#xff09;。 角色之间可能要发生战斗(fight)&…

3D~RPG游戏的制作

@作者 : SYFStrive @博客首页 : HomePage @创建时间 : 2022/7/29 10:00 📜:UnityRPG核心文章(代码加起来7万字🤮) 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 👉: