当前位置: 首页 > 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)

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

相关文章:

Python实现人生重开模拟器

目录 人生重开模拟器介绍 代码实现 打印初始界面 设置初始属性 设置角色性别 设置角色出生点 针对每一岁&#xff0c;生成人生经历 完整代码 人生重开模拟器介绍 人生重开模拟器 是之前比较火的一个小游戏&#xff0c;我们这里使用 Python 实现一个简化版的 人生重开模…...

java——Spring Boot的配置加载顺序和优先级

Spring Boot的配置加载顺序和优先级是确定应用程序如何读取和应用配置的关键。以下是对Spring Boot配置加载顺序和优先级的详细解释&#xff1a; 一、配置加载顺序 命令行参数&#xff1a; Spring Boot会首先加载命令行中指定的参数。这些参数可以通过在命令行中使用--keyval…...

【21-30期】Java技术深度剖析:从分库分表到微服务的核心问题解析

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;Java &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 文章题目&#xff1a;Java技术深度剖析&#xff1a;从分库分表到微服务的核心问题解析 摘要&#xff1a; 本…...

CSS:怎么把网站都变成灰色

当大家看到全站的内容都变成了灰色&#xff0c;包括按钮、图片等等。这时候我们可能会好奇这是怎么做到的呢&#xff1f; 有人会以为所有的内容都统一换了一个 CSS 样式&#xff0c;图片也全换成灰色的了&#xff0c;按钮等样式也统一换成了灰色样式。但你想想这个成本也太高了…...

开发一个基于MACOS M1/2芯片的Android 12的模拟器

产品需求&#xff1a;MuMu模拟器Pro_率先适配Apple M系列芯片的安卓模拟器 苹果M芯片专属&#xff1a;产品专为苹果M系列芯片设计&#xff0c;意味着它需要能够充分利用M系列芯片的性能优势。 安卓模拟器&#xff1a;产品是一个安卓模拟器&#xff0c;允许用户在Mac设备上运行…...

Flink 中 JDBC Connector 使用详解

1. 背景 在实时计算或离线任务中&#xff0c;往往需要与关系型数据库交互&#xff0c;例如 MySQL、PostgreSQL 等。Apache Flink 提供了 JDBC Connector&#xff0c;可以方便地将流式数据写入或读取数据库。 本文将介绍 Flink JDBC Connector 的基础用法、配置方法以及注意事…...

【Linux打怪升级记 | 报错02】-bash: 警告:setlocale: LC_TIME: 无法改变区域选项 (zh_CN.UTF-8)

&#x1f5fa;️博客地图 &#x1f4cd;1、报错发现 &#x1f4cd;2、原因分析 &#x1f4cd;3、解决办法 &#x1f4cd;4、测试结果 1、报错发现 装好了CentOS操作系统&#xff0c;使用ssh远程登陆CentOS&#xff0c;出现如下告警信息&#xff1a; bash: 警告:setlocale…...

未来已来?AI技术革新改变我们的生活

在21世纪的今天&#xff0c;人工智能&#xff08;AI&#xff09;不再是一个遥远的概念&#xff0c;而是逐渐渗透到我们生活的方方面面。从智能家居到自动驾驶汽车&#xff0c;从个性化推荐系统到医疗诊断辅助&#xff0c;AI技术正在以惊人的速度发展&#xff0c;并深刻地影响着…...

【Linux】进程的生命之旅——诞生、消逝与守候(fork/exit/wait)

&#x1f3ac; 个人主页&#xff1a;谁在夜里看海. &#x1f4d6; 个人专栏&#xff1a;《C系列》《Linux系列》《算法系列》 ⛰️ 一念既出&#xff0c;万山无阻 目录 &#x1f4d6;一、进程创建 1.fork函数 &#x1f4da;高层封装特性 &#x1f4da;fork返回值 2.写时拷…...

使用vcpkg自动链接tinyxml2时莫名链接其他库(例如boost)

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

【去毛刺】OpenCV图像处理基础:腐蚀与膨胀操作入门

在数字图像处理中&#xff0c;形态学操作是一种常用的技术&#xff0c;用于提取图像中的特定形状或特征。其中&#xff0c;腐蚀&#xff08;Erosion&#xff09;和膨胀&#xff08;Dilation&#xff09;是两种基本的形态学运算。本文将通过一个简单的例子来演示如何使用Python中…...

道可云人工智能元宇宙每日资讯|第三届京西地区发展论坛成功召开

道可云元宇宙每日简报&#xff08;2024年11月27日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 工信部等十二部门印发《5G规模化应用“扬帆”行动升级方案》 11月25日&#xff0c;工业和信息化部等十二部门印发《5G规模化应用“扬帆”行动升级方案》。《方案》…...

若依框架部署在网站一个子目录下(/admin)问题(

部署在子目录下首先修改vue.config.js文件&#xff1a; 问题一&#xff1a;登陆之后跳转到了404页面问题&#xff0c;解决办法如下&#xff1a; src/router/index.js 把404页面直接变成了首页&#xff08;大佬有啥优雅的解决办法求告知&#xff09; 问题二&#xff1a;退出登录…...

【ue5】UE5运行时下载视频/UE5 runtime download video(MP4)

插件还是老朋友。 节点的content type要打对。 &#xff08;参照表&#xff1a;MIME 类型&#xff08;MIME Type&#xff09;完整对照表 - 免费在线工具&#xff09; 结果展示&#xff1a;...

对比C++,Rust在内存安全上做的努力

简介 近年来&#xff0c;越来越多的组织表示&#xff0c;如果新项目在技术选型时需要使用系统级开发语言&#xff0c;那么不要选择使用C/C这种内存不安全的系统语言&#xff0c;推荐使用内存安全的Rust作为替代。 谷歌也声称&#xff0c;Android 的安全漏洞&#xff0c;从 20…...

如何利用 Qt 的模块化架构组织大型项目

目录 1. 大型项目的架构设计 1.1 分层架构 1.2 事件驱动与异步架构 2. 模块划分与职责分离 2.1 功能模块划分 2.2 模块之间的依赖管理 3. 跨平台开发与模块复用 在大型软件项目中&#xff0c;随着代码量的增加和功能的扩展&#xff0c;项目的复杂度会显著提升。没有良好…...

探索Python词云库WordCloud的奥秘

文章目录 探索Python词云库WordCloud的奥秘1. 背景介绍&#xff1a;为何选择WordCloud&#xff1f;2. WordCloud库简介3. 安装WordCloud库4. 简单函数使用方法5. 应用场景示例6. 常见Bug及解决方案7. 总结 探索Python词云库WordCloud的奥秘 1. 背景介绍&#xff1a;为何选择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 阶段&#xff08;输入阶段&#xff09; 输入数据是一段文本&#xff0c;如下&#xff1a; Hadoop is a big data framework. Hadoop can store vast data. Hadoop processes big …...

精心修炼Java并发编程(JUC)-volatile与synchronized关键字

volatile volatile 是 JVM 提供的 最轻量级的同步机制&#xff0c;中文意思是不稳定的&#xff0c;易变的&#xff0c;用 volatile 修饰变量是为了保证变量在多线程中的可见性&#xff0c;它表达的含义是&#xff1a;告诉编译器&#xff0c;对这个变量的读写&#xff0c;需要基…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文通过代码驱动的方式&#xff0c;系统讲解PyTorch核心概念和实战技巧&#xff0c;涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...

VisualXML全新升级 | 新增数据库编辑功能

VisualXML是一个功能强大的网络总线设计工具&#xff0c;专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑&#xff08;如DBC、LDF、ARXML、HEX等&#xff09;&#xff0c;并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...

用递归算法解锁「子集」问题 —— LeetCode 78题解析

文章目录 一、题目介绍二、递归思路详解&#xff1a;从决策树开始理解三、解法一&#xff1a;二叉决策树 DFS四、解法二&#xff1a;组合式回溯写法&#xff08;推荐&#xff09;五、解法对比 递归算法是编程中一种非常强大且常见的思想&#xff0c;它能够优雅地解决很多复杂的…...

GAN模式奔溃的探讨论文综述(一)

简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:...