概述
1.功能介绍
几乎所有的 RPG 游戏(一种源自“龙与地下城”的游戏类型)在进入游戏时都会让用户自己来创建自己喜欢的角色。要求编写一个简化的创建游戏角色的程序。
(1)游戏角色应有的属性
本题目要求的游戏角色应有以下属性:名字,性别,种族,职业,力量,敏捷,体力,智力,智慧,生命值和魔法值。
名字:不超过 50 个字符。
性别:可以选择男性和女性。
种族:一共可选五个种族,人类,精灵,兽人,矮人和元素。
职业:可选六种职业,狂战士,圣骑士,刺客,猎手,祭司和巫师。
其余属性均为整数。
本题目要求首先用户输入角色姓名,然后由用户选择角色性别,然后由用户选择种族,然后选择职业,然后自动分配力量,敏捷,体力,智力和智慧属性,并计算生命值和魔法值。
生命值 = 体力* 20 。
获取人物基本信息(姓名和性别):
class Message:
# 获取玩家姓名
def getName(self):
while True:
self.user_name = input('请输入您游戏中的姓名:')
if len(self.user_name) > 50:
print("您输入的姓名太长!")
break
return self.user_name
# 获取玩家角色性别
def getSex(self):
n = int(input('请输入您游戏人物的性别(0男,1女):'))
if n == 0:
self.user_sex = '男'
elif n == 1:
self.user_sex = '女'
else:
print('请在0-1之间选择!')
return self.user_sex
获取人物的种族:
# 获取玩家角色种族
def getRace(self):
self.user_race = int(input('请输入您游戏人物的种族(0.人类、1.精灵、2.兽人、3.矮人、4.元素):'))
if self.user_race not in range(0, 5):
print('您的输入格式有误,请在0-4之间选择一个类型!')
# 建立种族字典
Race = {
0: '人类',
1: '精灵',
2: '兽人',
3: '矮人',
4: '元素'
}
self.user_race = Race[self.user_race]
# 将用户输入的序号在字典中查找赋值
return self.user_race
( 2)职业限制
很多职业会限制某些种族选择,例如兽人不能就职圣骑士等等,种族和职业的限制表如下:
职业/属性 | 力量 | 敏捷 | 体力 | 智力 | 智慧 |
狂战士 | 40 | 20 | 30 | 5 | 5 |
圣骑士 | 25 | 15 | 30 | 20 | 10 |
刺客 | 20 | 35 | 20 | 15 | 10 |
猎手 | 15 | 40 | 15 | 10 | 20 |
祭司 | 15 | 20 | 15 | 35 | 15 |
巫师 | 10 | 20 | 10 | 20 | 40 |
职业限制我做的比较简单,用if语句根据人物的种族来直接给用户选项,而且偷懒没有加异常处理,代码也比较简单,仅供参考。
def getJob(self):
if self.user_race == '人类':
self.user_job = int(input('请输入您游戏人物的职业(0狂战士、1圣骑士、2刺客、3猎手、4祭司、5巫师):'))
elif self.user_race == '精灵':
self.user_job = int(input('请输入您游戏人物的职业(2刺客、3猎手、4祭司、5巫师):'))
elif self.user_race == '兽人':
self.user_job = int(input('请输入您游戏人物的职业(0狂战士、3猎手、4祭司):'))
elif self.user_race == '矮人':
self.user_job = int(input('请输入您游戏人物的职业(0狂战士、1圣骑士、4祭司):'))
elif self.user_race == '元素':
self.user_job = int(input('请输入您游戏人物的职业(4祭司、5巫师):'))
self.user_job = self.Job[self.user_job]
return self.user_job
(3)初始属性
所以在要求用户选择职业时,输出信息里面只能有用户所选择种族可以就职的职业。
本题目要求力量,敏捷,体力,智力和智慧要求是随机值,但是五项属性的总和应该是 100 ,并且应该和职业相关。例如狂战士的体力和力量就要比较高,而巫师需要较高的智力,而祭司则需要较高的智慧各职业初始属性的大致比例应遵从下表:
职业/属性 | 力量 | 敏捷 | 体力 | 智力 | 智慧 |
狂战士 | 40 | 20 | 30 | 5 | 5 |
圣骑士 | 25 | 15 | 30 | 20 | 10 |
刺客 | 20 | 35 | 20 | 15 | 10 |
猎手 | 15 | 40 | 15 | 10 | 20 |
祭司 | 15 | 20 | 15 | 35 | 15 |
巫师 | 10 | 20 | 10 | 20 | 40 |
例如,前面示意图中的祭司的初始属性,大致满足该比例,但是应该是随机的。
然后利用属性值计算生命值和魔法值。
初始属性是最难也是最重要的一部分!
首先,生成一个小随机数,100减去这个随机数的余数按照每个属性所占比例分配到各个属性上。然后将这个小随机数加在任意一个属性上。我是通过自定义两个列表来实现的,一个是职业列表,另一个是属性列表,属性列表就是每个职业的属性数组,例如‘狂战士’的属性数组就是[4,2,3,0.5,0.5]。最后将每个属性生成的数字四舍五入。
class Attribute:
power = 0
agile = 0
spirit = 2
intelligence = 0
wisdom = 0
life = 0
def getAttribute(self, career):
kuang_list = [8, 4, 6, 1, 1]
sheng_list = [5, 3, 6, 4, 2]
ci_list = [4, 7, 4, 3, 2]
lie_list = [3, 8, 3, 2, 4]
ji_list = [3, 4, 3, 7, 3]
wu_list = [2, 4, 2, 4, 8]
attribute_list = [kuang_list, sheng_list, ci_list, lie_list, ji_list, wu_list]
job_list = ['狂战士', '圣骑士', '刺客', '猎手', '祭司', '巫师'].index(career)
range_number = random.randint(10, 20)
average_number = (100 - range_number) / 20
self.power = average_number * attribute_list[job_list][0]
self.agile = average_number * attribute_list[job_list][1]
self.spirit = average_number * attribute_list[job_list][2]
self.intelligence = average_number * attribute_list[job_list][3]
self.wisdom = average_number * attribute_list[job_list][4]
if job_list == 0:
self.power += range_number
elif job_list == 1:
self.spirit += range_number
elif job_list == 2 or 3:
self.agile += range_number
elif job_list == 4:
self.intelligence += range_number
elif job_list == 5:
self.wisdom += range_number
self.power = round(self.power)
self.agile = round(self.agile)
self.spirit = round(self.spirit)
self.intelligence = round(self.intelligence)
self.wisdom = round(self.wisdom)
self.life = round(self.spirit) * 20
( 4 )显示信息
最后向用户显示该角色的所有信息,然后询问用户是否满意,如用户不满意则重新创建,若用户满意则程序结束,并将用户创建角色的相关信息写入文件保存。
显示部分就很简单,各位有什么不懂得记得留言!
# 显示输出
class Show:
def show(self):
print('==' * 20)
print('姓名:'+' ' * 6 + ' ', p.user_name)
print('==' * 20)
print('性别:' + ' ' * 6 + ' ', p.user_sex)
print('==' * 20)
print('种族:' + ' ' * 6 + ' ', q.user_race)
print('==' * 20)
print('职业:' + ' ' * 6 + ' ', q.user_job)
print('==' * 20)
print('力量:' + ' ' * 6 + ' ', attribute.power)
print('==' * 20)
print('敏捷:' + ' ' * 6 + ' ', attribute.agile)
print('==' * 20)
print('体力:' + ' ' * 6 + ' ', attribute.spirit)
print('==' * 20)
print('智力:' + ' ' * 6 + ' ', attribute.intelligence)
print('==' * 20)
print('智慧:' + ' ' * 6 + ' ', attribute.wisdom)
print('==' * 20)
print('生命值:' + ' ' * 6 + ' ', attribute.life)
最后
以上就是舒适夕阳为你收集整理的RPG角色生成器Python版的全部内容,希望文章能够帮你解决RPG角色生成器Python版所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复