【Python】综合案例--人生重开模拟器

server/2025/1/21 18:19:23/

1. 设置初始属性

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

python">颜值 (face)
体质 (strong)
智力 (iq)
家境 (home)

我们约定每个属性的范围为 [1, 10], 并且总和不能超过 20.

如果玩家输入的初始属性不合理, 就提示输入有误, 重新输入.

python">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!")continueprint("初始属性设定完成!")break    

2. 设置性别

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

python">如果是单数, 则性别设为男孩
如果是双数, 则性别设为女孩. 

男孩和女孩会遇到不同的事件.

python">point = random.randint(1, 6) # 掷色子
if point % 2 == 1:gender = 'boy'print("你是个男孩")
else:gender = 'girl'print("你是个女孩")

random

在 Python 中,可以使用 random 模块来生成随机数。以下是一些常用的生成随机数的函数:

一、生成 0 到 1 之间的随机浮点数

python">import random# random.random() 函数生成一个 [0, 1) 之间的随机浮点数
random_float = random.random()
print(random_float)

该函数 random.random() 会生成一个介于 0(包含)和 1(不包含)之间的随机浮点数。每次调用该函数都会得到一个不同的随机数。

二、生成指定范围内的随机浮点数

python">import random# random.uniform(a, b) 函数生成一个 [a, b] 之间的随机浮点数
random_float_in_range = random.uniform(2.5, 5.5)
print(random_float_in_range)

random.uniform(a, b) 函数生成一个介于 ab 之间的随机浮点数,ab 可以是任意实数,并且 a 可以小于或大于 b

三、生成指定范围内的随机整数

python">import random# random.randint(a, b) 函数生成一个 [a, b] 之间的随机整数
random_int = random.randint(1, 10)
print(random_int)

random.randint(a, b) 函数生成一个介于 ab 之间的随机整数,包括 ab 本身。

这些函数都来自于 random 模块,在使用之前需要先导入 random 模块。

3. 设置出生点

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

  • 10 是第一档. 加成最高
  • [7, 9] 是第二档. 也有一些加成
  • [4, 6] 是第三档. 加成较少
  • [1, 3] 是第四档. 会扣掉属性.

再扔一次色子, 生成 [1, 3] 的随机数, 用来表示每一种细分情况.

这里的代码主要就是各种 if else 构成

python">point = random.randint(1, 3) # 掷色子
if home == 10:print('你出生在帝都, 你的父母是高官政要')home += 1iq += 1face += 1
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('你出生在三线城市, 你的父母是教师')iq += 1elif point == 2:print('你出生在镇上, 你的父母是医生')strong += 1else:print("你出生在镇上, 你的父母是个体户")home += 1
else:if 1 <= point <= 2:print('你出生在村里, 你的父母是辛苦劳作的农民')strong += 1face -= 2elif 3 <= point <= 4:print('你出生在穷乡僻壤, 你的父母是无业游民')home -= 1else:print('你出生在镇上, 你父母感情不和')strong -= 1

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

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

  • 幼年阶段 [1, 10]
  • 青年阶段 [11, 20]
  • 壮年阶段 [20, 50]
  • 老年阶段 50 岁以上.

每个阶段都会有不同的精力和事件发生:

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

此处我们以幼年为例, 简单实现一下这里的处理逻辑.

  • 使用 for 循环, 按照年龄循环起来.
  • 针对每一年, 先掷一次 [1, 3] 的色子, 根据不同的随机数值, 来触发不同的事件.
  • 根据性别, 年龄, 各种属性, 来触发不同的事件. 这里都使用 if - else 的方式来组织.
  • 不同的事件可能会对属性有正面/负面的影响.
  • 在每一年的最后, 打印这一年遇到的事情.
  • 如果夭折, 则直接 sys.exit(0) 退出程序.
  • 使用 time.sleep(1) 使程序暂停执行 1s, 方便观察程序结果.
python">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 += '你和别的小朋友经常打架'iq -= 1strong += 1else:info += '你经常被别的小朋友欺负'strong -= 1# 智商触发的事件elif iq < 5:info += '你看起来傻傻的, 'if home >= 8 and age >= 6: info += '你的父母给你送到更好的学校学习'elif 4 <= home <= 7:if gender == 'boy':info += '你的父母鼓励你多运动, 加强身体素质'strong += 1else:info += '你的父母鼓励你多打扮自己'face += 1else:info += '你的父母为此经常吵架'if point == 1:strong -= 1elif point == 2:iq -= 1# 健康成长else:info += '你健康成长, 'if point == 1:info += '看起来更聪明了'iq += 1elif point == 2:info += '看起来更好看了'face += 1else:info += '看起来更结实了'strong += 1print('-------------------------------------------')print(info)print(f'strong={strong}, face={face}, iq={iq}, home={home}')time.sleep(1)

更多的逻辑, 此处就不再实现了


http://www.ppmy.cn/server/160257.html

相关文章

河北省乡镇界面图层shp格式arcgis数据乡镇名称和编码2020年wgs84坐标无偏移内容测评

本文将详细解析标题和描述中涉及的IT知识点&#xff0c;主要集中在地理信息系统&#xff08;GIS&#xff09;领域&#xff0c;特别是与ArcGIS软件、SHP文件格式以及WGS84坐标系相关的内容。 我们来了解一下“乡镇界面图层”。这是一个地理信息数据集&#xff0c;包含了河北省各…

Gin 源码概览 - 路由

本文基于gin 1.1 源码解读 https://github.com/gin-gonic/gin/archive/refs/tags/v1.1.zip 1. 注册路由 我们先来看一段gin代码&#xff0c;来看看最终得到的一颗路由树长啥样 func TestGinDocExp(t *testing.T) {engine : gin.Default()engine.GET("/api/user", f…

性能优化之动态加载

在过去近三十年的职业生涯里&#xff0c;有几年专注于运行时环境的开发与实现。在runtime中&#xff0c;动态加载技术是其中的基石之一。动态加载技术是指在系统运行过程中&#xff0c;根据需要把程序和数据从外存或网络加载到内存中的过程。其中&#xff0c;lazy loading&…

数据结构入门模板

一、栈&#xff08;Stack&#xff09; 定义 栈是一种**后进先出&#xff08;LIFO&#xff0c;Last In First Out&#xff09;**的数据结构。插入和删除操作只能在栈顶进行。 特点 只能从栈顶操作数据。操作简单&#xff0c;时间复杂度为 O ( 1 ) O(1) O(1)。 应用场景 表…

网络安全(渗透)

目录 名词解释 2、相互关系 3. 安全影响 名词解释 1、poc、exp、payload与shellcode POC&#xff08;Proof of Concept&#xff09;&#xff1a; 是一种概念验证代码或演示程序&#xff0c;用于证明漏洞的存在。 主要目的是通过简单的代码或操作向安全研究人员、开发人员…

WPS生成文件清单,超链接到工作簿文件-Excel易用宝

今天一大早&#xff0c;我们老板就心急火燎的来找到我&#xff0c;说这个文件夹中有很多工作簿&#xff0c;每次要打开一个文件都要打开这个文件夹&#xff0c;在密密麻麻的文件中查找&#xff0c;能不能在表格中做一个带超链接的列表&#xff0c;可以点击列表中的工作簿名称就…

[Bug]libGL.so.1: cannot open shared object file: No such file or directory

问题描述&#xff1a; 在服务器环境配置尝试导入 opencv (cv2) 模块时&#xff0c;系统找不到 libGL.so.1 这个共享库文件。这个问题通常出现在 Linux 系统中&#xff0c;特别是当系统缺少必要的图形库时。 (yolov11) python ./configs/yolov11/train.py Traceback (most rec…

OpenAI秘密重塑机器人军团: 实体AGI的崛起!

在人工智能的浪潮中&#xff0c;OpenAI一直是引领者的角色。这家以推进通用人工智能&#xff08;AGI&#xff09;为己任的公司&#xff0c;最近宣布了一项重大战略调整&#xff1a;重组其机器人部门&#xff0c;并计划推出实体AGI智能。这不仅是一次简单的组织架构变动&#xf…