一.角色初始属性设置
在游戏中我们设定四个属性:
颜值(face)
体质(strong)
智力 (iq)
家境(home)
约定每个属性范围为[1,10],且总和不超过20,对于用户非法输入属性值,我们要给予提示,并重新输入,在这里我们采用while循环和if,continue,break关键字结合
python
while True:
print("请设定初始属性(总点数为20)")
face = int(input("设定 颜值(1-10):"))
strong = int(input("设定 体质(1-10):"))
iq = int(input("设定 智力(1-10):"))
home = int(input("设定 家境(1-10):"))
if face < 1 or face > 10:
print("颜值设置有误!")
print("------------------------------------")
continue
if strong < 1 or strong > 10:
print("体质设置有误!")
print("------------------------------------")
continue
if iq < 1 or iq > 10:
print("智力设置有误!")
print("------------------------------------")
continue
if home < 1 or home > 10:
print("家境设置有误!")
print("------------------------------------")
continue
if face + strong + iq + home > 20:
print("总点数超过了20!")
print("------------------------------------")
continue
#如果上述条件没有触发,则表示用户输入是合法的
#此时可以跳出循环结束输入
print("初始属性设置完成!")
print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")
break
二.初始性别设置
通过random.randint()生成1~6的随机数
单数为男孩
双数为女孩
(注意:random.randint(a,b)函数是生成一个包含端点a,b的随机整数,在使用前要导入该模块,格式如下:import random)
python
point = random.randint(1,6)
#单数为男,双数为女
if point % 2 == 1:
gender = 'boy'
print("你是个男孩")
else:
gender = "girl"
print("你是个女孩")
三.设置出生点
根据家境(home)分成四个档
- 10是第一档,属性加成较高
7,9\]是第二档,有些属性加成
1,3\]是第四档,有扣除属性的可能性
(该模块主要用if-elif-else结构完成)
python
point = random.randint(1,3)
if home == 10:
# 第一档
print("你出生在帝都,你的父母是高官政要")
iq += 1
face += 1
home += 1
elif 7 <= home <= 9:
# 第二档
if point == 1:
print("你出生在大城市,你的父母是企业高管")
home += 2
elif point == 2:
print("你出生在大城市,你的父母是公务员")
face += 2
else:
print("你出生在大城市,你的父母是大学教授")
iq += 2
elif 4 <= home <=6:
#第三档
if point == 1:
print("你出生在三线城市,你的父母是老师")
iq += 1
if point == 2:
print("你出生在三线城市,你的父母是医生")
face += 1
if point == 3:
print("你出生在镇上,你的父母是个体户")
home += 1
else:
#第四档
if point == 1:
print("你出生在农村,你的父母是辛勤劳作的农民")
strong += 1
face -= 1
elif point == 2:
print("你出生在穷乡僻壤,你的父母是无业游民")
home -= 1
else:
print("你出生在镇上,你的父母感情不和")
print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")
print("------------------------------------")
四.不同阶段的事件(以童年阶段为例)
童年阶段[1,10]可塑性较强,颜值,体质,智力会有显著变化,以下是简单处理逻辑:
- 整体使用for循环,按照年龄循环起来
- 根据性别,年龄,颜值等属性触发不同的事件,使用if-elif-else结构实现
- 针对每一年,采用random.randint()函数生成1~3随机数,触发不同事件
- 如果夭折,直接sys.exit(0)退出程序
- 不同的事件会有正面/负面影响
- 每年末打印事件
- 使用time.sleep(1)暂停程序1s,便于观察结果
(注意:使用sys.exit(0)和time.sleep(1)函数,需要提前导入对应模块名sys和time)
python
for age in range(1,11):
# 将每年信息存储在一个字符串中,在每年末统一打印
info = f'你今年{age}岁.'
point = random.randint(1,3)
# 性别触发事件
if gender == 'gril' and home <= 3 and point == 1:
info += "你家里人重男轻女思想很严重,你被遗弃了!"
print(info)
print("游戏结束!")
sys.exit(0)
#颜值触发事件
elif face <=3 and age >=7:
info += '你长得太丑了,别的小朋友都不喜欢你.'
if iq > 5:
info += '你决定学习知识来填充自己.'
iq += 1
else:
if gender == 'gril':
info += '你经常被别的小朋友欺负!'
strong -= 1
else:
info += '你经常和别的小朋友打架!'
strong -= 1
iq -= 1
#体质触发事件
elif strong <=6 and 1 <= point <3:
info += '你生了一场大病.'
if home >=5:
info += '在家人的悉心照顾下,你的病痊愈了.'
strong += 1
home -= 1
else:
info += '你的父母没精力管你,你的身体状况更糟糕了.'
strong -= 1
# 智力触发事件
elif iq <=4:
info += '你看起来傻傻的.'
if home >=8 and age >=6:
info += '你的父母把你送到更好的学校学习.'
iq += 1
elif 4 <= home <=7:
if gender == 'boy':
info += '你的父母鼓励你多运动,争取成为运动员.'
strong += 1
else:
info += '你的父母鼓励你多打扮自己.'
face += 1
else:
info += '你的父母经常因为你而争吵.'
if point == 1:
strong -= 1
elif point == 2:
iq -= 1
else:
pass
# 健康成长
else:
info += '你健康成长.'
if point == 1:
strong += 1
info += '你变的更结实了.'
elif point == 2:
face += 1
info += '你变的更好看了.'
else:
# 无事发生
pass
print(info)
print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")
print("------------------------------------")
time.sleep(1)
五.后记
后续的青年阶段[11,20],壮年阶段[21,50],老年阶段[51,100]使用的逻辑和童年阶段一致,不同的是每年触发的事件,在这里对这三个板块进行了简单的描写,对于事件发生的逻辑不够完整,还需用户自己去调整
六.源代码
python
import random
import sys
import time
# 打印欢迎界面
print("+--------------------------------+")
print("| |")
print("| 花有重开日,人无再少年 |")
print("| |")
print("| 欢迎来到人生重开模拟器 |")
print("| |")
print("+--------------------------------+")
# 设置初始属性
#颜值,体质,智力,家境,总和不能超过20,每一项取1-10
#使用while循环,确保用户输入错误时可以重新输入
while True:
print("请设定初始属性(总点数为20)")
face = int(input("设定 颜值(1-10):"))
strong = int(input("设定 体质(1-10):"))
iq = int(input("设定 智力(1-10):"))
home = int(input("设定 家境(1-10):"))
if face < 1 or face > 10:
print("颜值设置有误!")
print("------------------------------------")
continue
if strong < 1 or strong > 10:
print("体质设置有误!")
print("------------------------------------")
continue
if iq < 1 or iq > 10:
print("智力设置有误!")
print("------------------------------------")
continue
if home < 1 or home > 10:
print("家境设置有误!")
print("------------------------------------")
continue
if face + strong + iq + home > 20:
print("总点数超过了20!")
print("------------------------------------")
continue
#如果上述条件没有触发,则表示用户输入是合法的
#此时可以跳出循环结束输入
print("初始属性设置完成!")
print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")
break
print("------------------------------------")
#初始化性别
point = random.randint(1,6)
#单数为男,双数为女
if point % 2 == 1:
gender = 'boy'
print("你是个男孩")
else:
gender = "girl"
print("你是个女孩")
#设置出生点
point = random.randint(1,3)
if home == 10:
# 第一档
print("你出生在帝都,你的父母是高官政要")
iq += 1
face += 1
home += 1
elif 7 <= home <= 9:
# 第二档
if point == 1:
print("你出生在大城市,你的父母是企业高管")
home += 2
elif point == 2:
print("你出生在大城市,你的父母是公务员")
face += 2
else:
print("你出生在大城市,你的父母是大学教授")
iq += 2
elif 4 <= home <=6:
#第三档
if point == 1:
print("你出生在三线城市,你的父母是老师")
iq += 1
if point == 2:
print("你出生在三线城市,你的父母是医生")
face += 1
if point == 3:
print("你出生在镇上,你的父母是个体户")
home += 1
else:
#第四档
if point == 1:
print("你出生在农村,你的父母是辛勤劳作的农民")
strong += 1
face -= 1
elif point == 2:
print("你出生在穷乡僻壤,你的父母是无业游民")
home -= 1
else:
print("你出生在镇上,你的父母感情不和")
print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")
print("------------------------------------")
# 幼年时期
for age in range(1,11):
# 将每年信息存储在一个字符串中,在每年末统一打印
info = f'你今年{age}岁.'
point = random.randint(1,3)
# 性别触发事件
if gender == 'gril' and home <= 3 and point == 1:
info += "你家里人重男轻女思想很严重,你被遗弃了!"
print(info)
print("游戏结束!")
sys.exit(0)
#颜值触发事件
elif face <=3 and age >=7:
info += '你长得太丑了,别的小朋友都不喜欢你.'
if iq > 5:
info += '你决定学习知识来填充自己.'
iq += 1
else:
if gender == 'gril':
info += '你经常被别的小朋友欺负!'
strong -= 1
else:
info += '你经常和别的小朋友打架!'
strong -= 1
iq -= 1
#体质触发事件
elif strong <=6 and 1 <= point <3:
info += '你生了一场大病.'
if home >=5:
info += '在家人的悉心照顾下,你的病痊愈了.'
strong += 1
home -= 1
else:
info += '你的父母没精力管你,你的身体状况更糟糕了.'
strong -= 1
# 智力触发事件
elif iq <=4:
info += '你看起来傻傻的.'
if home >=8 and age >=6:
info += '你的父母把你送到更好的学校学习.'
iq += 1
elif 4 <= home <=7:
if gender == 'boy':
info += '你的父母鼓励你多运动,争取成为运动员.'
strong += 1
else:
info += '你的父母鼓励你多打扮自己.'
face += 1
else:
info += '你的父母经常因为你而争吵.'
if point == 1:
strong -= 1
elif point == 2:
iq -= 1
else:
pass
# 健康成长
else:
info += '你健康成长.'
if point == 1:
strong += 1
info += '你变的更结实了.'
elif point == 2:
face += 1
info += '你变的更好看了.'
else:
# 无事发生
pass
print(info)
print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")
print("------------------------------------")
time.sleep(1)
#青年阶段
for age in range(11,21):
info = f'你今年{age}岁,'
point = random.randint(1,3)
# 颜值触发事件
if face >= 7 and home >= 7 and 1 <= point <= 2:
info += '你的家境十分优渥,且长相出众,在学校深受同学追捧'
# 体质触发事件
elif strong >= 8 and age == 15:
info += '你的体育天赋很高,'
# 性别触发事件
if gender == 'boy' and iq <=4:
info += '但是你的学习成绩很差,中考过后去了普通高中'
if 2 <= point < 3:
info += '取得了短跑省赛冠军,获得了进入国家队的资格'
strong += 1
else:
if home <=4 and point == 1:
info += '但是家庭困难,你无法兼顾家庭和学习,最终体育天赋被埋没,放弃中考辍学回家'
strong -= 2
iq -= 1
elif home >= 8 and iq >= 6:
info += '你的家人在学习和体育方面着重培养你,最终进入重点高中'
home -= 1
iq += 1
strong += 1
#智力触发事件
elif iq >= 6:
info += '你的学习成绩中等,'
if age == 18 and 4<= face <=7 and point == 3:
info += '且小有姿色,在高三这年你和他人谈恋爱,导致学习成绩下滑,'
iq -= 2
if home >= 8:
info += '你的父母选择把你送出国深造'
home -= 2
iq += 1
elif 5 <= home <7:
info += '最终去了民办二本'
home -= 1
else:
info += '你的家庭负担不起民办费用,最终你去了大专'
elif home >= 5 and 1 <= point <3:
info += '家里人请老师给你补课,学习成绩有所提升'
iq += 1
else:
if point == 1:
info += '你的成绩提高了'
iq += 1
elif point == 2:
info += '你的成绩没变'
else:
info += '你的成绩更好了,身体素质也有所提高'
iq += 1
strong += 1
# 健康成长事件
else:
info += '你健康成长,'
if point == 1:
info += '你的学习成绩提高了'
iq += 1
elif point == 2:
info += '你变得更好看了'
face += 1
else:
pass
print(info)
print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")
print("------------------------------------")
time.sleep(1)
# 壮年时期
for age in range(21,51):
# info = f'你今年{age}岁,'
point = random.randint(1,3)
info = f'你今年{age}岁,'
# 智力触发事件
if iq >= 6 and age <= 22:
if home >=7 :
info += '你的父母决定毕业后送你到国外深造'
home -= 1
iq += 1
elif 4 <= home < 6 and point == 2 :
info += '你获得了保研资格'
iq += 1
elif home <4:
info += '为了补贴家里,大学期间你天天逃课兼职,毕业困难'
iq -= 1
else:
info += '你和往常一样过着平淡的日子'
else:
info += '你和许多普通人一样,每天朝九晚五'
if point == 1:
info += ',你升职了'
home += 1
elif point == 2:
info += ',你被开除了'
home -= 1
else:
pass
print(info)
print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")
print("------------------------------------")
time.sleep(1)
# 老年阶段
for age in range(51,100):
info = f'你今年{age}岁,'
point = random.randint(1,3)
if gender == 'boy':
info += '你子孙满堂,家庭美满'
home += 1
if strong < 4 :
info += ',你重病缠身,即将不久于世'
print('游戏结束!')
sys.exit(0)
else:
info += ',你老当益壮,每天强身健体'
if point == 1:
strong += 1
else:
info += '你平淡的过完这一生'
print(info)
print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")
print("------------------------------------")
time.sleep(1)