RPG角色生成器Python版
RPG角色生成器
1.功能描述
几乎所有的RPG游戏(一种源自《龙与地下城》的游戏类型)在进入游戏时都会让用户自己来创建自己喜欢的角色。本次上机要求编写一个简化的创建游戏角色的程序。
2.游戏角色应有的属性
本题目要求的游戏角色应有以下属性:名字、性别、种族、职业、力量、敏捷、体力、智力、智慧、生命值和魔法值。
名字:不超过50个字符。
性别:可以选择男性和女性。
种族:一共可选五个种族,人类、精灵、兽人、矮人和元素。
职业:可选六种职业,狂战士、圣骑士、刺客、猎手、祭司和巫师。
其余属性均为整数。
本题目要求首先用户输入角色姓名,然后由用户选择角色性别,然后由用户选择种族,然后选择职业,然后自动分配力量、敏捷、体力、智力和智慧属性,并计算生命值和魔法值。
生命值=体力*20。
魔法值=(智力+智慧)*10。
3.职业限制
很多职业会限制某些种族选择,例如兽人不能就职圣骑士等等,种族和职业的限制表如下:
所以在要求用户选择职业时,输出信息里面只能有用户所选择种族可以就职的职业。
4.初始属性
本题目要求力量、敏捷、体力、智力和智慧要求是随机值(利用随机数函数来取得随机数),但是五项属性的总和应该是100,并且应该和职业相关。例如狂战士的体力和力量就要比较高,而巫师需要较高的智力,而祭司则需要较高的智慧。各职业初始属性的大致比例应遵从下表:
例如,前面示意图中的祭司的初始属性,大致满足该比例,但是应该是随机的。
然后利用属性值计算生命值和魔法值。
5.显示信息
最后向用户显示该角色的所有信息,然后询问用户是否满意,如用户不满意则重新创建,若用户满意则程序结束,并将用户创建角色的相关信息写入文件保存。
#!/usr/bin/env python
# encoding: utf-8
‘’’
@author: GaryLee
@software: PyCharm
@file: RPG角色生成器.py
@time: 2018/10/3 16:37
‘’’
import random
class Role:
# 设定游戏角色名字
def setName(self):
while True:
self.name = input("请输入您的游戏名并确保长度小于50:")
if len(self.name) > 50:
print("您的名字过长,请重新输入")
continue
break
return self.name
# 设定角色性别
def setSex(self):
while True:
n = int(input("请选择您的角色性别:0:男,1:女"))
if n == 0:
self.sex = '男'
break
elif n == 1:
self.sex = '女'
break
else:
print("请在0或1之间选择!")
continue
return self.sex
# 设定角色种族
def setRace(self):
while True:
n = int(input("请选择您的角色种族:0:人类,1:精灵,2:兽人,3:矮人,4:元素"))
if n not in range(0,5):
print("请在0-5之间选择")
continue
Race = { 0: '人类',1: '精灵',2: '兽人',3: '矮人',4: '元素'}
self.race = Race[n]
break
return self.race
# 设定角色职业
def setJob(self):
if self.race == '人类':
while True:
n = int(input("请输入您游戏人物的职业(0:狂战士,1:圣骑士,2:刺客,3:猎手,4:祭司,5:巫师):"))
if n not in range(0,6):
print("请在0-5之间选择输入!")
continue
else:
break
elif self.race == '精灵':
while True:
n = int(input("请输入您游戏人物的职业(2:刺客,3:猎手,4:祭司,5:巫师):"))
if n not in range(2,6):
print("请在2-5之间选择输入!")
continue
else:
break
elif self.race == '兽人':
while True:
n = int(input("请输入您游戏人物的职业(0:狂战士,3:猎手,4:祭司):"))
if n not in [0,3,4]:
print("请在0,3,4之间选择输入!")
continue
else:
break
elif self.race == '矮人':
while True:
n = int(input("请输入您游戏人物的职业(0:狂战士,1:圣骑士,4:祭司):"))
if n not in [0,1,4]:
print("请在0,1,4之间选择输入!")
continue
else:
break
elif self.race == '元素':
while True:
n = int(input("请输入您游戏人物的职业(4:祭司,5:巫师):"))
if n not in [4,5]:
print("请在4,5之间选择输入!")
continue
else:
break
Job = {0:'狂战士',1:'圣骑士',2:'刺客',3:'猎手',4:'祭司',5:'巫师'}
self.job = Job[n]
return self.job
def setAttribute(self):
self.power = 0 #力量
self.agile = 0 #敏捷
self.strength = 0 #体力
self.intelligence = 0 #智力
self.wisdom = 0 #智慧
self.life = 0 #生命值
self.magicpoint = 0 #魔法值
if self.job == '狂战士':
self.power = random.randint(35,40)
self.agile = random.randint(15,20)
self.strength = random.randint(25,30)
self.intelligence = random.randint(0,100-self.race-self.agile-self.strength)
self.wisdom = 100-self.power-self.agile-self.strength-self.intelligence
elif self.job == '圣骑士':
self.power = random.randint(20,25)
self.strength = random.randint(25,30)
self.intelligence = random.randint(15,20)
self.agile = random.randint(0, 100 - self.power - self.strength - self.intelligence)
self.wisdom = 100-self.power-self.agile-self.strength-self.intelligence
elif self.job == '刺客':
self.power = random.randint(15,20)
self.agile = random.randint(30,35)
self.strength = random.randint(15,20)
self.intelligence = random.randint(0,100-self.race-self.agile-self.strength)
self.wisdom = 100-self.power-self.agile-self.strength-self.intelligence
elif self.job == '猎手':
self.power = random.randint(10,15)
self.agile = random.randint(35,40)
self.strength = random.randint(10,15)
self.wisdom = random.randint(15,20)
self.intelligence = random.randint(0, 100 - self.power - self.agile - self.strength - self.wisdom)
elif self.job == '祭司':
self.power = random.randint(10,15)
self.agile = random.randint(15,20)
self.strength = random.randint(10,15)
self.intelligence = random.randint(30,35)
self.wisdom = 100-self.power-self.agile-self.strength-self.intelligence
elif self.job == '巫师':
self.agile = random.randint(15,20)
self.intelligence = random.randint(15,20)
self.wisdom = random.randint(35,40)
self.power = random.randint(0,100-self.agile-self.intelligence-self.wisdom)
self.strength = 100-self.agile-self.intelligence-self.wisdom-self.power
self.life = self.strength * 20
self.magicpoint = (self.intelligence + self.wisdom) * 10
print('\n','力量:',self.power,'\n','敏捷:',self.agile,'\n','体力:',self.strength,'\n','智力:',self.intelligence,'\n','智慧:',self.wisdom,'\n','生命值:',self.life,'\n','魔法值:',self.magicpoint,'\n')
while True:
r = Role()
r.setName()
r.setSex()
r.setRace()
r.setJob()
r.setAttribute()
n = int(input("您是否满意目前的角色:0:满意,1:不满意:"))
if n == 0:
break
elif n == 1:
print("请重新建立角色")
continue
else:
print("请在0或1之中输入:")