实现 “人生重开模拟器”

这是一款之前很火的文字类小游戏. 玩家输入角色的初始属性之后, 就可以开启不同的人生经历.
大家可以在网上搜索 “人生重开模拟器”, 就可以玩到这个游戏的各种版本.

完整的程序代码较多, 此处我们只实现其中的一部分逻辑

1. 设置初始属性

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

  • 颜值 (face)
  • 体质 (strong)
  • 智力 (iq)
  • 家境 (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 则是多个分支只能进一个, 一旦某个条件满足了, 就不会再走其他的分支了.# 此处虽然没有使用 elif , 但是有了 continue, 一旦某个条件满足, continue 就会使循环从头再来, 也就没机会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("初始属性设定完成!")break

2. 设置性别

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

3. 设置出生点

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

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

再扔一次色子, 生成 [1, 3] 的随机数, 用来表示每一种细分情况.
这里的代码主要就是各种if else构成

# 设定角色的出生点
# 为了简单, 就直接生成 1-3 的随机数
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('你出生在三线城市, 你的父母是医生')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}')

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

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

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

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

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

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

  • 使用 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 += '你和别的小朋友经常打架!'strong += 1iq -= 1else:info += '你经常被别的小朋友欺负!'strong -= 1# 智商触发的事件elif iq < 5:info += '你看起来傻傻的. 'if home >= 8 and age >= 6:info += '你的父母把你送到更好的学校学习'iq += 1elif 4 <= home <= 7:if gender == 'boy':info += '你的父母鼓励你多运动, 争取成为运动员'strong += 1else:info += '你的父母鼓励你多打扮自己'face += 1else:# 家境 < 4info += '你的父母为此经常吵架'if point == 1:strong -= 1elif point == 2:iq -= 1else:pass# 健康成长事件else:info += '你健康成长. 'if point == 1:info += '你看起来更结实了.'strong += 1elif point == 2:info += '你看起来更好看了.'face += 1else:# 无事发生pass# 打印这一年发生的事情print(info)print(f'颜值: {face}, 体质: {strong}, 智力: {iq}, 家境: {home}')print('------------------------------------------------------')# 为了方便观察, 加一个小小的暂停操作time.sleep(1)

更多的逻辑, 此处就不再实现了. 大家可以按照类似的方式, 设计更多的事件, 完成 青年, 壮年, 老年 的相关
事情
print(info)
print(f’颜值: {face}, 体质: {strong}, 智力: {iq}, 家境: {home}‘)
print(’------------------------------------------------------')
# 为了方便观察, 加一个小小的暂停操作
time.sleep(1)


更多的逻辑, 此处就不再实现了. 大家可以按照类似的方式, 设计更多的事件, 完成 青年, 壮年, 老年 的相关
逻辑

Python 实现“人生重开模拟器“相关推荐

  1. 人生重开模拟器(Python实现)

    文章目录 人生重开模拟器介绍 代码实现 打印初始界面 设置初始属性 设置角色性别 设置角色出生点 针对每一岁,生成人生经历 人生重开模拟器介绍 人生重开模拟器是由VickScarlet上传至GitHu ...

  2. <人生重开模拟器>——《Python项目实战》

    目录 1.模拟实现 "人生重开模拟器" 1.1 问题导引: 1.2 问题分析: 2. 模拟实现分析及步骤: 3.完整源码: 4.写在最后的话: 后记:●由于作者水平有限,文章难免存 ...

  3. Python人生重开模拟器(高级版)

    目录 目录 ​编辑 目录 前言 游戏成果 截图 开始吧 游戏主框架 定义人类属性 定义人类方法 定义身份判断方法 定义初始化方法 定义成长方法 定义显示属性方法 定义打开背包方法 定义学习方法 定义商 ...

  4. Python + Selenium 自动化测试《人生重开模拟器》

    原文 Python + Selenium 自动化测试<人生重开模拟器> 背景 最近有一款小游戏特别火,叫<人生重开模拟器>,这款游戏用黑色幽默的调侃形式,随机生成你的人生大事件 ...

  5. Python人生重开模拟器(高级版(升级))

    文章目录 前言 游戏成果 截图 开始吧 增加引用 函数 定义新函数 关闭进程函数 修改部分函数 修改显示主菜单函数 类 定义新类 定义工作类 定义工作类框架 定义工作类方法 找工作方法 工作方法 工作 ...

  6. 【用Python模拟实现人生重开模拟器】

    # 人生重开模拟器 # 导入模块 import random import sys import timeprint('---------------------------- ---------') ...

  7. 案例1:人生重开模拟器(Python)——直接带你入门~

    本案例--人生重开模拟器,主要的目的就是熟悉和掌握基础语法(不涉及def定义函数)的基本操作~~ 一.下面是本系统用到的主要语法: 基础语法(一): 常量.变量.类型(整数,浮点数,字符串,布尔值). ...

  8. python入门学习之小工具制作系列--01使用tkinter库封装(人生重开模拟器)小游戏

    一.制作背景: 过年浏览csdn博文时,有看到其他博主的一篇人生重开模拟器的小游戏,将代码拷贝运行后看效果很好,非常有趣.于是就学习使用tkinter库将源代码封装,使其可以成为应用小游戏. 二.人生 ...

  9. Python实现简单版本的人生重开模拟器

    介绍 "人生重开模拟器",这是一款文字类小游戏,在百度也可以直接搜到各种网页版本. 玩家输入角色的初始属性之后,就可以开启不同的人生经历. 这里只是简单的实现一下(不然代码量太多) ...

最新文章

  1. storm_常用命令
  2. MyBatis mapper文件中使用常量
  3. 一篇文章带你详解 HTTP 协议之报文首部及字段详解(中)
  4. WordPress-基础设置之固定链接设置
  5. 反思相信谁的评价:一直的坚定的不移的相信自己对自己的评价 相信自己是多么的重要
  6. 计算机二级学习考试题,全国计算机等级考试一级Window复习题及答案
  7. python符号格式化设置区间_Python 数值区间处理_对interval 库的快速入门详解
  8. uni-app(从零开始)
  9. .NetCore技术研究-ConfigurationManager在单元测试下的坑
  10. Vim文本编辑器 指令簿(二)
  11. linux联想电脑wifi密码,联想笔记本Y7000—ubuntu16.4无法开启wifi的解决办法
  12. 金融风控必备:想从手机上做风控管理?原来还可以从设备指纹入手
  13. JavaScript 面试总结
  14. .net core部署到Ubuntu碰到的问题
  15. Hive数据分析实战
  16. MC新手入门(四十二)------ 愤怒小狗制作三
  17. 练手小程序之约瑟芬杀人法
  18. c++ primer plus 对象和类
  19. 软工文档——可行性研究报告
  20. 鸟哥Linux私房菜 第五章 文件权限与目录配置

热门文章

  1. 摘抄-对最好程序员的感想
  2. 使用Python+OpenCV+Tensorflow+Flask实现检测X光图像中的COVID-19(新冠病毒)
  3. 电动汽车简化设计,“减重瘦身”不再难
  4. 文件权限修改,启用安全选项卡 - Windows XP
  5. RT5350使用uboot从U盘启动linux成功
  6. APP第11篇 微信小程序测试
  7. 不坚持,P都不是--leo看赢在中国第三季(4)
  8. [bzoj4889] [Tjoi2017]不勤劳的图书管理员
  9. 机械臂正向运动学原理通俗解释
  10. 新手程序员如何提升自己的编程能力