【Python】人生重开模拟器(实现代码)

一、游戏背景介绍

这是一款文字类小游戏。玩家输入角色的初始属性之后,就可以开启不同的人生经历。

完整的程序代码较多,此这里只实现其中的一部分逻辑(主要目的:巩固前面学习的 Python 语法基础)。


二、设置初始属性

在游戏中我们设定四个属性:
  1. 颜值(face)
  2. 体质(strong)
  3. 智力(iq)
  4. 家境(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 则是多个分支只能进入一个,一旦某个条件满足了,就不会再走其它分支了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


三、设置性别

通过 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("你是个女孩")


四、设置出生点

首先按照家境( home), 分成四个档位:
  1. 10 是第一档,加成最高。
  2. [7, 9] 是第二档,也有一些加成。
  3. [4, 6] 是第三档,加成较少。
  4. [1, 3] 是第四档,会扣掉属性。

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

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

# 设置出生点
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
print(f'颜值:{face}, 体质:{strong}, 智力:{iq}, 家境:{home}')


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

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

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

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

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

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

  • 使用 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 += 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:# 家境 < 4info += '你的父母为此经常吵架'if point == 1:strong -= 1elif point == 2:iq -= 1# 健康成长事件else:info += '你健康成长, 'if point == 1:info += '看起来更聪明了'iq += 1elif point == 2:info += '看起来更好看了'face += 1else:# 无事发生passprint('-------------------------------------------')# 打印这一年发生的事情print(info)print(f'颜值:{face}, 体质:{strong}, 智力:{iq}, 家境:{home}')# 为了方便观察,加一个小的暂停操作time.sleep(1)

青年、壮年、老年的相关逻辑也是类似的方法,这里就不再详细写了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/45428.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot企业人力资源管理系统-计算机毕业设计源码29005

目录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 2.2.5 修改信息流程 2.2.6 删除信息流程 2.3 系统功能…

Redis 主从复制,哨兵与集群

目录 一.redis主从复制 1.redis 主从复制架构 2.主从复制特点 3.主从复制的基本原理 4.命令行配置 5.实现主从复制 6.删除主从复制 7.主从复制故障恢复 8.主从复制完整过程 9.主从同步优化配置 二.哨兵模式&#xff08;Sentinel&#xff09; 1.主要组件和概念 2.哨…

基于复旦微V7 690T FPGA +ARM/海光X86+AI的全国产化数据采集人工智能平台

国产化FPGA&#xff1a;JFM7VX690T80主机接口&#xff1a;PCIe Gen3 x88Gbps/lane光纤通道&#xff1a;前面板4路SFP光纤&#xff0c;后面板1路QSFP光纤2组独立的DDR3 SDRAM 缓存&#xff0c;工作时钟频率800MHz2个FMC接口扩展&#xff1a;每个支持16路GTH&#xff0c;线速率10…

提示词工程(Prompt Engineering)是什么?

一、定义 Prompt Engineering 提示词工程&#xff08;Prompt Engineering&#xff09;是一项通过优化提示词&#xff08;Prompt&#xff09;和生成策略&#xff0c;从而获得更好的模型返回结果的工程技术。 二、System message 系统指令 System message可以被广泛应用在&am…

ORB-slam3 安装教程

1. 官网下载源码&#xff1a;GitHub - UZ-SLAMLab/ORB_SLAM3: ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM 2. 根据官网下载依赖&#xff1a; &#xff08;1&#xff09;eigen3:Eigen 解压后进入源码目录进行编译&#xff1a…

ensp实验:防火墙安全策略用户认证综合策略

实验要求&#xff1a; 示例图&#xff1a; 设备配置&#xff1a; LSW5 vlan配置&#xff1a; 防火墙网络配置&#xff1a; 安全区域配置&#xff1a; 地址组配置&#xff1a; 时钟配置: 一&#xff1a; 办公区策略&#xff1a; 生产区策略&#xff1a; 二&#xff1a; 游客区…

医院健康宣教二维码如何制作?以及应用案例分享

医院正在广泛应用二维码来向患者展示健康宣传教育方面的信息&#xff0c;从疾病预防内容、术后康复训练知识&#xff0c;到日常保健视频&#xff08;如八段锦&#xff09;、饮食注意事项…… 这些内容都能够以二维码的形式呈现&#xff0c;方便患者随时扫码查看获取健康知识&am…

plt.subplot2grid创建N行M列的子图网格,N不等于M

以下代码是实现不同频率的余弦信号绘制&#xff0c;并将它们显示在一个 3x2 的子图网格中。 import numpy as np import matplotlib.pyplot as pltfig plt.figure(figsize(10, 10)) a1 plt.subplot2grid((3, 2), (0, 0), colspan2) a2 plt.subplot2grid((3, 2), (1, 0)) a3…

C++技能基础:提升C++程序运行效率的方法总结

以下是一些编程方面的建议&#xff0c;目的是为了提升C程序的效率&#xff08;这里的效率以时间为评判标准&#xff09;&#xff0c;欢迎指正和补充 场景&#xff1a;当设计方法时&#xff0c;将方法设计成值传递还是引用或者指针传递建议&#xff1a;当变量所占内存大小与指针…

SpringBoot整合XXL_JOB示例

XXL-JOB 是一个分布式任务调度平台&#xff0c;主要用于管理和执行定时任务。它适用于各种场景&#xff0c;例如定时任务、批处理任务、分布式任务等。XXL-JOB 提供了丰富的功能&#xff0c;使得任务调度变得简单、高效和可靠。以下是 XXL-JOB 的一些主要功能和特点&#xff1a…

暑假第一次作业

第一步&#xff1a;给R1,R2,R3,R4配IP [R1-GigabitEthernet0/0/0]ip address 192.168.1.1 24 [R1-Serial4/0/0]ip address 15.0.0.1 24 [R2-GigabitEthernet0/0/0]ip address 192.168.2.1 24 [R2-Serial4/0/0]ip address 25.0.0.1 24 [R3-GigabitEthernet0/0/0]ip address 192.…

程序员标准简历模板

链接: https://pan.baidu.com/s/1yMXGSSNba15b9hMXjA39aA?pwdb4ev 提取码: b4ev 3年工作经验简历 链接: https://pan.baidu.com/s/1OO7n1lRL6AkhejxYC9IyDA?pwdfmvv 提取码: fmvv 优秀学员简历 链接: https://pan.baidu.com/s/106Vkw_ulOInI47_5mDySSg?pwduudc 提取码: uu

Spring Expression表达式使用

Spring Expression 简介 Spring Expression Language&#xff08;简称 “SpEL”&#xff09;是一种功能强大的表达式语言&#xff0c;支持在运行时查询和操作对象图。其中最显著的是&#xff1a;方法调用和基本的字符串模板功能。 虽然SpEL是Spring产品组合中表达式评估的基础…

微信公众号注册流程

注册指引 官网 https://mp.weixin.qq.com/ 服务号/订阅号 微信官方注册流程 https://kf.qq.com/touch/faq/150804UVr222150804quq6B7.html?platform15

四个“一体化”——构建数智融合时代下的一站式大数据平台

随着智能化技术的飞速发展&#xff0c;尤其是以生成式AI为代表的技术快速应用&#xff0c;推动了数据与智能的深化融合&#xff0c;给数据基础设施带来了新的变革和挑战。如何简化日益复杂的系统架构&#xff0c;提高数据处理效率&#xff0c;降低开发运维成本&#xff0c;促进…

常用3D建模软件有哪些?如何实现3D模型在线预览?

3D建模是指使用计算机软件或其他工具创建三维物体模型的过程。3D建模大概可分为NURBS和多边形网格两类。NURBS对要求精细、弹性与复杂的模型有较好的应用&#xff0c;适合量化生产用途&#xff1b;多边形网格建模则靠拉面方式&#xff0c;适合做效果图与复杂场景动画。建模方法…

木舟0基础学习Java的第十六天(异常,分类,自定义异常,注意事项)

异常 异常概述&#xff1a;异常是Java程序运行过程中出现的错误 异常分类&#xff1a;API查找Throwable 1.Error(服务器宕机&#xff0c;数据库崩溃等) 2.Exception C(异常的继承体系)API查RuntimeException 运行时异常&#xff1a;一般是程序员的错误异常可以让我们发现错…

算法力扣刷题记录 三十七【二叉树层序遍历】

前言 二叉树递归遍历和二叉树迭代遍历 实现的前中后序遍历都归类深度搜索&#xff1b; 广度搜索如何实现&#xff1f;一层结束&#xff0c;再继续下一层搜索&#xff1a;层序遍历。 一、题目阅读 【102.二叉树的层序遍历】 给你二叉树的根节点 root &#xff0c;返回其节点值…

如何在iPhone上恢复图片?5 个有效解决方案

对于许多iPhone用户来说&#xff0c;照片是存储在他们设备上的最重要的数据&#xff0c;因此丢失这些照片可能是一场灾难。 但是&#xff0c;即使您不小心删除了iPhone上的部分或全部图片&#xff0c;也可以将其取回。 我们将讨论如何在有或没有备份的情况下在iPhone上恢复已…

面试篇-Mysql-2+事务隔离级别的实现

文章目录 前言一、Mysql 的事务你了解吗二、你了解Mysql 的事务隔离级别吗&#xff1a;2.1 你知道Mysql 的脏读&#xff0c;不可重复读&#xff0c;幻读的问题吗&#xff1a;2.1.1 脏读&#xff1a;2.1.2 不可重复读&#xff1a;2.1.3 幻读&#xff1a; 2.2 对于并发场景下的脏…