当前位置: 首页 > news >正文

Python实现人生重开模拟器

目录

人生重开模拟器介绍

代码实现

打印初始界面

设置初始属性

设置角色性别

设置角色出生点

针对每一岁,生成人生经历

完整代码


人生重开模拟器介绍

人生重开模拟器 是之前比较火的一个小游戏,我们这里使用 Python 实现一个简化版的 人生重开模拟器

游戏实现的基本思路是:

  • 游戏开始的时候,设定初始属性:颜值, 体质, 智力, 家境
  • 开始游戏,随机生成性别和出生点
  • 针对每一年,都生成人生的经历(依靠一定的随机因素 +当前角色的属性)

代码实现

打印初始界面

# 打印初始界面
print('+-------------------------------------------+')
print('|                                           |')
print('|            花有重开日,人无再少年              |')
print('|                                           |')
print('|         >>欢迎来到,人生重开模拟器<<           |')
print('|                                           |')
print('+-------------------------------------------+')

设置初始属性

第一步设置初始属性,此处设定以下四个属性:

  • 颜值(face)
  • 体质(strong)
  • 智力(iq)
  • 家境(home)

规定这四个属性的总点数不超过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): "))# 判断输入是否有误if face < 1 or face > 10:print("颜值设置有误, 请重新输入!")continueif strong < 1 or strong > 10:print("体质设置有误, 请重新输入!")continueif iq < 1 or iq > 10:print("智力设置有误, 请重新输入!")continueif home < 1 or home > 10:print("家境设置有误, 请重新输入!")continueif face + strong + iq + home > 20:print("总的属性和超过 20, 请重新输入!")continue# 走到这里说明输入没有出现问题,此时可以跳出循环print("初始属性设置完毕!")print(f"颜值: {face}, 体质: {strong}, 智力: {iq}, 家境: {home}")break

设置角色性别

下面采用生成 1~6 随机数的形式,如果是偶数性别就是男,否则就是女

  • Python 中随机数采用random. randint 的方式生成,random.randint(begin, end) 是左闭右闭的,生成 begin~end 之间的数
  • 此处的 random 是一个 python 中的模块,也就是别人写好的代码,我们直接拿来使用的,在 Python 中,如果想引入其他模块,需要先使用 import 语句,把模块的名字给 导入 进来
  • 对于 PyCharm 来说,有一个功能能够自动在代码的最上面导入当前使用的模块

代码如下:

# 生成角色的性别
point = random.randint(1, 6)
if point % 2 == 0:gender = 'boy'print("你是个男孩")
else:gender = 'girl'print("你是个女孩")

此时再代码的上面会自动导入:


设置角色出生点

设置角色的出生点时,可以根据角色的家境分为四个档位:

  • 家境为 10 是第一档,加成最高
  • 家境为 7 ~ 9 是第二档,有一些加成
  • 家境为 4 ~ 6 是第三档,加成较少
  • 家境为 1 ~ 3 是第四档,会扣掉属性

实现的思路就是:生成随机数 1~3,针对二三四档的家境,都根据生成的随机数细分,最终得到角色的出生点

代码如下:

# 设置角色出生点
point = random.randint(1, 3)
if home == 10:# 第一档print('你出生在帝都, 你的父母是高官政要')home += 2iq += 2face += 2
elif 7 <= home <= 9:# 第二档if point == 1:print('你出生在大城市,父母是公务员')face += 2elif point == 2:print('你出生在大城市,父母是企业高管')home += 2else:print('你出生在大城市,父母是大学教授')iq += 2
elif 4 <= home <= 6:# 第三档if point == 1:print('你出生在三线城市,你的父母是医生')strong += 1elif point == 2:print('你出生在镇上,你的父母是老师')iq += 1else:print('你出生在镇上,你的父母是个体户')home += 1
else:# 第四档if point == 1:print('你出生在农村,父母是辛苦劳作的农民')strong += 1face -= 2elif point == 2:print('你出生在穷乡僻壤,你的父母是无业游民')home -= 1else:print('你出生在镇上,你的父母感情不和')strong -= 1
print(f'颜值: {face}, 体制: {strong}, 智力: {iq}, 家境: {home}')

针对每一岁,生成人生经历

角色出生点设置完毕后,就可以针对每一岁,生成人生经历了

我们按照年龄将人生经历分为以下四个阶段:

  • 1 - 10岁:幼年阶段,可塑性强,体制、颜值、智力都会有较快的变化
  • 11 - 20岁:青年阶段,主要是求学,智力和家境会有明显变化
  • 21 - 50岁:壮年阶段,相对平稳,属性变化不大,主要是一些随机事件影响到属性
  • 50岁以后:老年阶段,体质、颜值、智力都会显著退化,并且疾病和死亡的风险逐渐升高

下面以幼年阶段为例:
先使用一个循环,按照年龄从1循环到10,针对每一年, 都生成一个随机数 [1,3]
根据角色、性别、年龄各种属性,来触发各种事件,随机数会对事件的结果造成影响,这里的事件可能会对属性带来变更
每一年执行结束,都打印这一年发生的事件(让每年只发生一个事件)
也可能会遇到 天折 的情况,这时使用 exit 函数来结束程序即可,相当于人生就结束了

代码如下:

# 幼年阶段
for age in range(1, 11):info = f'你今年 {age} 岁, 'point = random.randint(1, 3)# 性别触发的事件if gender == 'girl' and home <= 3 and point == 1:info += '你的家里人重男轻女思想非常严重, 你被遗弃了!'print(info)print('游戏结束!')sys.exit(0)# 体制触发的事件elif strong < 6 and point < 3:info += '你生了一场病, 'if home >= 5:info += '在父母的细心照料下, 你康复了'strong += 1home -= 1else:info += '你的父母没精力管你, 你的身体状况更遭了'strong -= 1# 颜值触发的事件elif face <= 4 and age >= 7:info += '你长得太丑了, 别的小朋友不喜欢你, 'if iq > 5:info += '你决定用学习填充自己!'iq += 1else:if gender == 'boy':info += '你和别的小朋友经常打架!'strong += 1iq -= 1else:info += '你经常被别的小朋友欺负'strong -= 1# 智力触发的事件elif iq < 5:info += '你看起来傻傻的, 'if home >= 7 and age >= 6:info += '你的父母把你送到更好的学校学习'iq += 1elif 4 <= home <= 6:if gender == 'boy':info += '你的父母鼓励你多运动, 争取成为运动员'strong += 1else:info += '你的父母鼓励你多打扮自己'face += 1else:info += '你的父母为此经常吵架'if point == 1:strong -= 1elif point == 2:iq -= 1else:pass# 健康成长事件else:info += '你健康成长, 'if point == 1:info += '你看起来更强壮了'strong += 1elif point == 2:info += '你看起来更好看了'face += 1else:info += '这一年没有特别的事情发生'# 打印这一年发生的事情print(info)print(f'颜值: {face}, 体制: {strong}, 智力: {iq}, 家境: {home}')print('---------------------------------------------')# 为了方便观察, 加一个sleeptime.sleep(1)
  • 代码中使用的 exit 是 sys模块 中的一个函数,如果角色夭折了,那么就可以使用 sys.exit(0) 的方式让程序直接退出
  • 代码中使用的 sleep 是 time模块 中的一个函数,为了方便观察生成的人生经历,可以使用 time.sleep(1) 的方式让程序暂停1秒再继续执行

到此人生重开模拟器的代码简易实现完毕,目的是为了熟悉 Python 语法,在生成人生经历的代码中,只实现了 幼年阶段 的代码,剩下阶段的就不实现了,因为逻辑都是类似的,都是根据生产的随机数再加上使用条件语句进行判断,比较简单


完整代码

# 人生重开模拟器
import random
import sys
import time# 打印初始界面
print('+-------------------------------------------+')
print('|                                           |')
print('|            花有重开日,人无再少年              |')
print('|                                           |')
print('|         >>欢迎来到,人生重开模拟器<<           |')
print('|                                           |')
print('+-------------------------------------------+')# 设置初始属性
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("颜值设置有误, 请重新输入!")continueif strong < 1 or strong > 10:print("体质设置有误, 请重新输入!")continueif iq < 1 or iq > 10:print("智力设置有误, 请重新输入!")continueif home < 1 or home > 10:print("家境设置有误, 请重新输入!")continueif face + strong + iq + home > 20:print("总的属性和超过 20, 请重新输入!")continue# 走到这里说明输入没有出现问题,此时可以跳出循环print("初始属性设置完毕!")print(f"颜值: {face}, 体质: {strong}, 智力: {iq}, 家境: {home}")break# 生成角色的性别
point = random.randint(1, 6)
if point % 2 == 0:gender = 'boy'print("你是个男孩")
else:gender = 'girl'print("你是个女孩")# 设置角色出生点
point = random.randint(1, 3)
if home == 10:# 第一档print('你出生在帝都, 你的父母是高官政要')home += 2iq += 2face += 2
elif 7 <= home <= 9:# 第二档if point == 1:print('你出生在大城市,父母是公务员')face += 2elif point == 2:print('你出生在大城市,父母是企业高管')home += 2else:print('你出生在大城市,父母是大学教授')iq += 2
elif 4 <= home <= 6:# 第三档if point == 1:print('你出生在三线城市,你的父母是医生')strong += 1elif point == 2:print('你出生在镇上,你的父母是老师')iq += 1else:print('你出生在镇上,你的父母是个体户')home += 1
else:# 第四档if point == 1:print('你出生在农村,父母是辛苦劳作的农民')strong += 1face -= 2elif point == 2:print('你出生在穷乡僻壤,你的父母是无业游民')home -= 1else:print('你出生在镇上,你的父母感情不和')strong -= 1
print(f'颜值: {face}, 体制: {strong}, 智力: {iq}, 家境: {home}')# 幼年阶段
for age in range(1, 11):info = f'你今年{age}岁, 'point = random.randint(1, 3)# 性别触发的事件if gender == 'girl' and home <= 3 and point == 1:info += '你的家里人重男轻女思想非常严重, 你被遗弃了!'print(info)print('游戏结束!')sys.exit(0)# 体制触发的事件elif strong < 6 and point < 3:info += '你生了一场病, 'if home >= 5:info += '在父母的细心照料下, 你康复了'strong += 1home -= 1else:info += '你的父母没精力管你, 你的身体状况更遭了'strong -= 1# 颜值触发的事件elif face <= 4 and age >= 7:info += '你长得太丑了, 别的小朋友不喜欢你, 'if iq > 5:info += '你决定用学习填充自己!'iq += 1else:if gender == 'boy':info += '你和别的小朋友经常打架!'strong += 1iq -= 1else:info += '你经常被别的小朋友欺负'strong -= 1# 智力触发的事件elif iq < 5:info += '你看起来傻傻的, 'if home >= 7 and age >= 6:info += '你的父母把你送到更好的学校学习'iq += 1elif 4 <= home <= 6:if gender == 'boy':info += '你的父母鼓励你多运动, 争取成为运动员'strong += 1else:info += '你的父母鼓励你多打扮自己'face += 1else:info += '你的父母为此经常吵架'if point == 1:strong -= 1elif point == 2:iq -= 1else:pass# 健康成长事件else:info += '你健康成长, 'if point == 1:info += '你看起来更强壮了'strong += 1elif point == 2:info += '你看起来更好看了'face += 1else:info += '这一年没有特别的事情发生'# 打印这一年发生的事情print(info)print(f'颜值: {face}, 体制: {strong}, 智力: {iq}, 家境: {home}')print('---------------------------------------------')# 为了方便观察, 加一个sleeptime.sleep(1)

人生重开模拟器的代码简易实现完毕

http://www.lryc.cn/news/492697.html

相关文章:

  • java——Spring Boot的配置加载顺序和优先级
  • 【21-30期】Java技术深度剖析:从分库分表到微服务的核心问题解析
  • CSS:怎么把网站都变成灰色
  • 开发一个基于MACOS M1/2芯片的Android 12的模拟器
  • Flink 中 JDBC Connector 使用详解
  • 【Linux打怪升级记 | 报错02】-bash: 警告:setlocale: LC_TIME: 无法改变区域选项 (zh_CN.UTF-8)
  • 未来已来?AI技术革新改变我们的生活
  • 【Linux】进程的生命之旅——诞生、消逝与守候(fork/exit/wait)
  • 使用vcpkg自动链接tinyxml2时莫名链接其他库(例如boost)
  • 【去毛刺】OpenCV图像处理基础:腐蚀与膨胀操作入门
  • 道可云人工智能元宇宙每日资讯|第三届京西地区发展论坛成功召开
  • 若依框架部署在网站一个子目录下(/admin)问题(
  • 【ue5】UE5运行时下载视频/UE5 runtime download video(MP4)
  • 对比C++,Rust在内存安全上做的努力
  • 如何利用 Qt 的模块化架构组织大型项目
  • 探索Python词云库WordCloud的奥秘
  • MySQL根据idb文件恢复数据
  • hadoop-mapreduce词频统计
  • 精心修炼Java并发编程(JUC)-volatile与synchronized关键字
  • 【ROS2】ROS2 与 ROS1 编码方式对比(Python实现)
  • ElasticSearch的下载和基本使用(通过apifox)
  • 城市轨道交通运营控制指挥中心设计方案
  • 多目标优化算法:多目标河马优化算法(MOHOA)求解ZDT1、ZDT2、ZDT3、ZDT4、ZDT6,提供完整MATLAB代码
  • 线程与进程的个人理解
  • vscode的项目给gitlab上传
  • 企业微信定位打卡
  • libaom 源码分析:码率控制介绍
  • RK3568平台开发系列讲解(DMA篇)DMA engine使用
  • C++中的函数对象
  • Linux指标之平均负载(The Average load of Linux Metrics)