<>实现 “人生重开模拟器”

这是一款之前很火的文字类小游戏. 玩家输入角色的初始属性之后, 就可以开启不同的人生经历.
大家可以在网上搜索 “人生重开模拟器”, 就可以玩到这个游戏的各种版本.

完整的程序代码较多, 此处我们只实现其中的一部分逻辑

<>1. 设置初始属性

在游戏中我们设定四个属性.

* 颜值 (face)
* 体质 (strong)
* 智力 (iq)
* 家境 (home)
我们约定每个属性的范围为 [1, 10], 并且总和不能超过 20.

如果玩家输入的初始属性不合理, 就提示输入有误,重新输入。
print("+---------------------------------------------------------------------+"
) print("| |") print("| 花有重开日, 人无再少年 |") print("| |") print("| 欢迎来到, 人生重开模拟器 |")
print("| |") print(
"+---------------------------------------------------------------------+") #
设置初始属性 # 颜值, 体质, 智力, 家境, 总和不能超过 20, 每一项取值都是 1-10 之间 # 使用循环, 使玩家在输入错误的时候, 可以重新输入.
while True: print("请设定初始属性(可用总点数 20)") face = int(input("设定 颜值(1-10):")) strong
= int(input("设定 体质(1-10):")) iq = int(input("设定 智力(1-10):")) home = int(input(
"设定 家境(1-10):")) # 通过条件语句, 对于用户输入的属性值做出校验检查 # 这段逻辑, 使用 elif 是否可以呢? 完全可以. 效果是相同的.
# 使用 elif 则是多个分支只能进一个, 一旦某个条件满足了, 就不会再走其他的分支了. # 此处虽然没有使用 elif , 但是有了 continue,
一旦某个条件满足, continue 就会使循环从头再来, 也就没机会 if face < 1 or face > 10: print("颜值设置有误!")
continue if strong < 1 or strong > 10: print("体质设置有误!") continue if iq < 1 or iq
> 10: print("智力设置有误!") continue if home < 1 or home > 10: print("家境设置有误!")
continue if face + strong + iq + home > 20: print("总点数超过了 20!") continue #
如果当前上面的条件都没有被触发, 则认为玩家输入的数据是合法的. # 此时就可以跳出循环结束输入了 print("初始属性设定完成!") break
<>2. 设置性别

通过 random.randint(1, 6) 生成一个 [1, 6] 的随机整数, 类似于掷色子.

* 如果是单数, 则性别设为男孩
* 如果是双数, 则性别设为女孩.
男孩和女孩会遇到不同的事件.
# 生成角色的性别 # 使用 random.randint(beg, end), 就能生成 [beg, end] 随机整数 point = random.
randint(1, 6) # 掷色子 if point % 2 == 1: gender = 'boy' print("你是个男孩") else:
gender= 'girl' print("你是个女孩")

<>3. 设置出生点

首先按照家境(home), 分成四个档位.

* 10 是第一档. 加成最高
* [7, 9] 是第二档. 也有一些加成
* [4, 6] 是第三档. 加成较少
* [1, 3] 是第四档. 会扣掉属性.
再扔一次色子, 生成 [1, 3] 的随机数, 用来表示每一种细分情况.
这里的代码主要就是各种if else构成
# 设定角色的出生点 # 为了简单, 就直接生成 1-3 的随机数 point = random.randint(1, 3) if home == 10:
# 第一档 print('你出生在帝都, 你的父母是高官政要') home += 1 iq += 1 face += 1 elif 7 <= home <= 9
: # 第二档 if point == 1: print('你出生在大城市, 父母是公务员') face += 2 elif point == 2: print
('你出生在大城市, 父母是企业高管') home += 2 else: print('你出生在大城市, 父母是大学教授') iq += 2 elif 4 <=
home<= 6: # 第三档 if point == 1: print('你出生在三线城市, 你的父母是医生') strong += 1 elif
point== 2: print('你出生在镇上, 你的父母是老师') iq += 1 else: print('你出生在镇上, 你的父母是个体户') home
+= 1 else: # 第四档 if point == 1: print('你出生在农村, 父母是辛苦劳作的农民') strong += 1 face -=
2 elif point == 2: print('你出生在穷乡僻壤, 你的父母是无业游民') home -= 1 else: print('你出生在镇上,
你的父母感情不和') strong -= 1 print(f'颜值: {face}, 体质: {strong}, 智力: {iq}, 家境: {home}')
<>4. 针对每一岁, 生成人生经历

按照年龄, 把人生经历分成四个阶段:

* 幼年阶段 [1, 10]
* 青年阶段 [11, 20]
* 壮年阶段 [20, 50]
* 老年阶段 50 岁以上.
每个阶段都会有不同的精力和事件发生.

* 幼年阶段可塑性强, 体质, 颜值, 智力都会有较快变化
* 青年阶段主要是求学, 同时父母一辈会有明显变化, 智力和家境会有明显变化.
* 壮年阶段相对平稳, 属性变化不大, 主要是一些随机事件影响到属性.
* 老年阶段体质, 颜值, 智力都会显著退化, 并且随着年龄的上升, 疾病/死亡的风险逐渐升高.
此处我们以幼年为例, 简单实现一下这里的处理逻辑.

* 使用 for 循环, 按照年龄循环起来.
* 针对每一年, 先掷一次 [1, 3] 的色子, 根据不同的随机数值, 来触发不同的事件.
* 根据性别, 年龄, 各种属性, 来触发不同的事件. 这里都使用 if - else 的方式来组织.
* 不同的事件可能会对属性有正面/负面的影响.
* 在每一年的最后, 打印这一年遇到的事情.
* 如果夭折, 则直接 sys.exit(0) 退出程序.
* 使用 time.sleep(1) 使程序暂停执行 1s, 方便观察程序结果 # 幼年阶段 for age in range(1, 11): #
把一整年的打印都整理到一个字符串中, 在这一年的结尾统一打印 info = f'你今年 {age} 岁. ' # 生成一个 [1, 3] 的随机整数.
point= random.randint(1, 3) # 接下来编写各种事件的代码 # 性别触发的事件 if gender == 'girl' and
home<= 3 and point == 1: info += '你的家里人重男轻女思想非常严重, 你被遗弃了!' print(info) print(
'游戏结束!') sys.exit(0) # 体质触发的事件 # 使用 elif 是为了保证每年只触发一个事件! elif strong < 6 and
point< 3: info += '你生了一场病, ' if home >= 5: info += '在父母的悉心照料下, 你康复了' strong += 1
home-= 1 else: info += '你的父母没精力管你, 你的身体状况更糟糕了' strong -= 1 # 颜值触发的时间 elif face
<= 4 and age >= 7: info += '你长的太丑了, 别的小朋友不喜欢你. ' if iq > 5: info +=
'你决定用学习填充自己!' iq += 1 else: if gender == 'boy': info += '你和别的小朋友经常打架!' strong +=
1 iq -= 1 else: info += '你经常被别的小朋友欺负!' strong -= 1 # 智商触发的事件 elif iq < 5: 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: # 家境 < 4 info += '你的父母为此经常吵架' if
point== 1: strong -= 1 elif point == 2: iq -= 1 else: pass # 健康成长事件 else: info
+= '你健康成长. ' if point == 1: info += '你看起来更结实了.' strong += 1 elif point == 2:
info+= '你看起来更好看了.' face += 1 else: # 无事发生 pass # 打印这一年发生的事情 print(info) print(
f'颜值:{face}, 体质: {strong}, 智力: {iq}, 家境: {home}') print(
'------------------------------------------------------') # 为了方便观察, 加一个小小的暂停操作
time.sleep(1)
更多的逻辑, 此处就不再实现了. 大家可以按照类似的方式, 设计更多的事件, 完成 青年, 壮年, 老年 的相关
事情
print(info)
print(f’颜值: {face}, 体质: {strong}, 智力: {iq}, 家境: {home}‘)
print(’------------------------------------------------------')
# 为了方便观察, 加一个小小的暂停操作
time.sleep(1)
更多的逻辑, 此处就不再实现了. 大家可以按照类似的方式, 设计更多的事件, 完成 青年, 壮年, 老年 的相关 逻辑

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信