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)
人生重开模拟器的代码简易实现完毕
相关文章:

Python实现人生重开模拟器
目录 人生重开模拟器介绍 代码实现 打印初始界面 设置初始属性 设置角色性别 设置角色出生点 针对每一岁,生成人生经历 完整代码 人生重开模拟器介绍 人生重开模拟器 是之前比较火的一个小游戏,我们这里使用 Python 实现一个简化版的 人生重开模…...
java——Spring Boot的配置加载顺序和优先级
Spring Boot的配置加载顺序和优先级是确定应用程序如何读取和应用配置的关键。以下是对Spring Boot配置加载顺序和优先级的详细解释: 一、配置加载顺序 命令行参数: Spring Boot会首先加载命令行中指定的参数。这些参数可以通过在命令行中使用--keyval…...

【21-30期】Java技术深度剖析:从分库分表到微服务的核心问题解析
🚀 作者 :“码上有前” 🚀 文章简介 :Java 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 文章题目:Java技术深度剖析:从分库分表到微服务的核心问题解析 摘要: 本…...
CSS:怎么把网站都变成灰色
当大家看到全站的内容都变成了灰色,包括按钮、图片等等。这时候我们可能会好奇这是怎么做到的呢? 有人会以为所有的内容都统一换了一个 CSS 样式,图片也全换成灰色的了,按钮等样式也统一换成了灰色样式。但你想想这个成本也太高了…...

开发一个基于MACOS M1/2芯片的Android 12的模拟器
产品需求:MuMu模拟器Pro_率先适配Apple M系列芯片的安卓模拟器 苹果M芯片专属:产品专为苹果M系列芯片设计,意味着它需要能够充分利用M系列芯片的性能优势。 安卓模拟器:产品是一个安卓模拟器,允许用户在Mac设备上运行…...
Flink 中 JDBC Connector 使用详解
1. 背景 在实时计算或离线任务中,往往需要与关系型数据库交互,例如 MySQL、PostgreSQL 等。Apache Flink 提供了 JDBC Connector,可以方便地将流式数据写入或读取数据库。 本文将介绍 Flink JDBC Connector 的基础用法、配置方法以及注意事…...

【Linux打怪升级记 | 报错02】-bash: 警告:setlocale: LC_TIME: 无法改变区域选项 (zh_CN.UTF-8)
🗺️博客地图 📍1、报错发现 📍2、原因分析 📍3、解决办法 📍4、测试结果 1、报错发现 装好了CentOS操作系统,使用ssh远程登陆CentOS,出现如下告警信息: bash: 警告:setlocale…...
未来已来?AI技术革新改变我们的生活
在21世纪的今天,人工智能(AI)不再是一个遥远的概念,而是逐渐渗透到我们生活的方方面面。从智能家居到自动驾驶汽车,从个性化推荐系统到医疗诊断辅助,AI技术正在以惊人的速度发展,并深刻地影响着…...

【Linux】进程的生命之旅——诞生、消逝与守候(fork/exit/wait)
🎬 个人主页:谁在夜里看海. 📖 个人专栏:《C系列》《Linux系列》《算法系列》 ⛰️ 一念既出,万山无阻 目录 📖一、进程创建 1.fork函数 📚高层封装特性 📚fork返回值 2.写时拷…...

使用vcpkg自动链接tinyxml2时莫名链接其他库(例如boost)
使用vcpkg自动链接tinyxml2时莫名链接其他库(例如boost) vcpkg的自动链接功能非常方便,但在某些情况下会出现过度链接的问题。 链接错误症状 以tinyxml2为例,程序中调用tinyxml2的函数后,若vcpkg中同时存在opencv和…...

【去毛刺】OpenCV图像处理基础:腐蚀与膨胀操作入门
在数字图像处理中,形态学操作是一种常用的技术,用于提取图像中的特定形状或特征。其中,腐蚀(Erosion)和膨胀(Dilation)是两种基本的形态学运算。本文将通过一个简单的例子来演示如何使用Python中…...
道可云人工智能元宇宙每日资讯|第三届京西地区发展论坛成功召开
道可云元宇宙每日简报(2024年11月27日)讯,今日元宇宙新鲜事有: 工信部等十二部门印发《5G规模化应用“扬帆”行动升级方案》 11月25日,工业和信息化部等十二部门印发《5G规模化应用“扬帆”行动升级方案》。《方案》…...

若依框架部署在网站一个子目录下(/admin)问题(
部署在子目录下首先修改vue.config.js文件: 问题一:登陆之后跳转到了404页面问题,解决办法如下: src/router/index.js 把404页面直接变成了首页(大佬有啥优雅的解决办法求告知) 问题二:退出登录…...

【ue5】UE5运行时下载视频/UE5 runtime download video(MP4)
插件还是老朋友。 节点的content type要打对。 (参照表:MIME 类型(MIME Type)完整对照表 - 免费在线工具) 结果展示:...

对比C++,Rust在内存安全上做的努力
简介 近年来,越来越多的组织表示,如果新项目在技术选型时需要使用系统级开发语言,那么不要选择使用C/C这种内存不安全的系统语言,推荐使用内存安全的Rust作为替代。 谷歌也声称,Android 的安全漏洞,从 20…...
如何利用 Qt 的模块化架构组织大型项目
目录 1. 大型项目的架构设计 1.1 分层架构 1.2 事件驱动与异步架构 2. 模块划分与职责分离 2.1 功能模块划分 2.2 模块之间的依赖管理 3. 跨平台开发与模块复用 在大型软件项目中,随着代码量的增加和功能的扩展,项目的复杂度会显著提升。没有良好…...

探索Python词云库WordCloud的奥秘
文章目录 探索Python词云库WordCloud的奥秘1. 背景介绍:为何选择WordCloud?2. WordCloud库简介3. 安装WordCloud库4. 简单函数使用方法5. 应用场景示例6. 常见Bug及解决方案7. 总结 探索Python词云库WordCloud的奥秘 1. 背景介绍:为何选择Wo…...
MySQL根据idb文件恢复数据
首先得有对应表的idb文件以及建表语句 1.首先在新数据库建表 CREATE TABLE sys_menu (id bigint(20) NOT NULL,parent_id bigint(20) NULL DEFAULT NULL,name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,type int(11) NULL DEFAULT …...

hadoop-mapreduce词频统计
一、Map Reduce主要阶段 二、词频统计示例 0.MapReduce 词频统计(Word Count)示例图 1. Input 阶段(输入阶段) 输入数据是一段文本,如下: Hadoop is a big data framework. Hadoop can store vast data. Hadoop processes big …...

精心修炼Java并发编程(JUC)-volatile与synchronized关键字
volatile volatile 是 JVM 提供的 最轻量级的同步机制,中文意思是不稳定的,易变的,用 volatile 修饰变量是为了保证变量在多线程中的可见性,它表达的含义是:告诉编译器,对这个变量的读写,需要基…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...

Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...