基于Python实现复刻人生重开模拟器

目录
  • 人生重开模拟器介绍
  • 代码实现
    • 打印初始界面
    • 设置初始属性
    • 设置角色性别
    • 设置角色出生点
    • 针对每一岁,生成人生经历

人生重开模拟器介绍

人生重开模拟器是由VickScarlet上传至GitHub的一款简单的文字网页游戏。

玩家点击“立即重开”并设置角色的初始属性后,程序就会随机为玩家生成对应的人生经历。

代码实现

下面我们实现一个简化版的人生重开模拟器,主要目的在于熟悉Python的语法。

打印初始界面

初始界面可以自由发挥,这里博主就随便打印一下。

代码如下:

# 打印初始界面
print('+-------------------------------------------+')
print('|                                           |')
print('|              >>人生重开模拟器<<              |')
print('|                                           |')
print('|            这垃圾人生一秒也不想待了            |')
print('|                                           |')
print('+-------------------------------------------+')

设置初始属性

进入游戏后第一步就是设置初始属性,此处设定以下四个属性:

  • 颜值(face)。
  • 体制(strong)。
  • 智力(iq)。
  • 家境(home)。

我们规定每个属性的范围为1 - 10,并且这四个属性的总和不能超过20,如果玩家输入的初始属性不合理,则提示玩家输入有误并要求重新输入。体现在代码中就是,玩家输入属性后通过if语句判断输入的属性是否合法,如果不合法则通过while语句要求玩家重新进行输入。

代码如下:

# 设置初始属性
# 颜值、体质、智力、家境(总和不能超过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('颜值设置有误!')
        continue
    if strong < 1 or strong > 10:
        print('体制设置有误!')
        continue
    if iq < 1 or iq > 10:
        print('智力设置有误!')
        continue
    if home < 1 or home > 10:
        print('家境设置有误!')
        continue
    if face + strong + iq + home > 20:
        print('属性总和超过了20,设置有误!')
        continue

    print('初始属性输入完毕!')
    print(f'颜值: {face}, 体制: {strong}, 智力: {iq}, 家境: {home}')
    break

设置角色性别

关于角色的性别,我们可以随机生成一个1 - 6的整数,类似于掷色子。

如果是单数,则性别设为男孩。

如果是双数,则性别设为女孩。

性别设置后需要借助一个变量将角色的性别保存起来,因为后续男孩和女孩可能会触发不同的事件。

代码如下:

# 设置角色性别
point = random.randint(1, 6)
if point % 2 == 1:
    gender = 'boy'
    print('你是个男孩')
else:
    gender = 'girl'
    print('你是个女孩')

说明一下:

  • 代码中使用的randint是random模块中的一个函数,random.randint(begin, end)可以生成一个begin - end之间的随机整数。
  • 在Python中,如果想引入其他模块,需要以import 模块名的方式将对应的模块导入进来,导入模块后以模块名.xxx的方式就能使用该模块中的函数或变量。

设置角色出生点

设置角色的出生点时,可以根据角色的家境分为四个档位:

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

除了将角色的出生点按照家境分为四个档位之外,还可以再生成一个随机数,对每一档的内部再进行一次细分,最终得到角色的出生点,此处涉及的也就是一些if条件判断而已。

代码如下:

# 设置角色出生点
point = random.randint(1, 3)
if home == 10:
    # 第一档
    print('你出生在帝都, 你的父母是高官政要')
    home += 1
    iq += 1
    face += 1
elif 7 <= home <= 9:
    # 第二档
    if point == 1:
        print('你出生在大城市,父母是公务员')
        face += 2
    elif point == 2:
        print('你出生在大城市,父母是企业高管')
        home += 2
    else:
        print('你出生在大城市,父母是大学教授')
        iq += 2
elif 4 <= home <= 6:
    # 第三档
    if point == 1:
        print('你出生在三线城市,你的父母是医生')
        strong += 1
    elif point == 2:
        print('你出生在镇上,你的父母是老师')
        iq += 1
    else:
        print('你出生在镇上,你的父母是个体户')
        home += 1
else:
    # 第四档
    if point == 1:
        print('你出生在农村,父母是辛苦劳作的农民')
        strong += 1
        face -= 2
    elif point == 2:
        print('你出生在穷乡僻壤,你的父母是无业游民')
        home -= 1
    else:
        print('你出生在镇上,你的父母感情不和')
        strong -= 1
print(f'颜值: {face}, 体制: {strong}, 智力: {iq}, 家境: {home}')

说明一下:

  • 角色的出生点不能仅由家境决定,此处在设置角色出生点时引入随机数的目的就是为了增加随机的因素,毕竟人生本来就充满了很多的随机性。
  • 这里的代码只是起一个示意的作用,因此生成随机数的范围只是1 - 3,如果你愿意也可以生成更大范围的随机数,将每一档的内部进行更细粒度的划分,这样就能更大的保证每次运行程序后得到的出生点都是不一样的。

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

人生经历的四个阶段

设置完角色的性别和出生点后,就可以针对每一岁生成对应的人生经历了,这里我们按照年龄将人生经历分为以下四个阶段:

  • 1 - 10岁:幼年阶段。
  • 11 - 20岁:青年阶段。
  • 21 - 50岁:壮年阶段。
  • 50岁以后:老年阶段。

在人生的每个阶段都会有不同的经历和事件发生:

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

这时就可以发挥我们的想象力,编写一些合理的人生经历,并在合适的条件下触发这些事件即可。

人生经历生成

这里我们以幼年为例,简单演示一下处理逻辑:

  • 使用for循环,按照年龄从1循环到10,每次循环生成对应年龄的人生经历。
  • 在生成每一年的人生经历之前,先生成一个随机数(充当人生中的随机因素),根据得到的随机数以及角色的性别、年龄和各种属性来触发不同的事件。
  • 不同的事件被触发后,可能会对角色的属性有正面或负面的影响,因此角色的各个属性会随着事件的触发而不断发生变化。
  • 在这一年的最后打印出所触发的事件,为了方便观察,也可以将这一年后角色的各个属性进行打印。

代码如下:

# 幼年阶段
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 += 1
            home -= 1
        else:
            info += '你的父母没精力管你, 你的身体状况更遭了'
            strong -= 1
    # 颜值触发的事件
    elif face <= 4 and age >= 7:
        info += '你长得太丑了, 别的小朋友不喜欢你, '
        if iq > 5:
            info += '你决定用学习填充自己!'
            iq += 1
        else:
            if gender == 'boy':
                info += '你和别的小朋友经常打架!'
                strong += 1
                iq -= 1
            else:
                info += '你经常被别的小朋友欺负'
                strong -= 1
    # 智力触发的事件
    elif iq < 5:
        info += '你看起来傻傻的, '
        if home >= 7 and age >= 6:
            info += '你的父母把你送到更好的学校学习'
            iq += 1
        elif 4 <= home <= 6:
            if gender == 'boy':
                info += '你的父母鼓励你多运动, 争取成为运动员'
                strong += 1
            else:
                info += '你的父母鼓励你多打扮自己'
                face += 1
        else:
            info += '你的父母为此经常吵架'
            if point == 1:
                strong -= 1
            elif point == 2:
                iq -= 1
            else:
                pass
    # 健康成长事件
    else:
        info += '你健康成长, '
        if point == 1:
            info += '你看起来更结实了'
            strong += 1
        elif point == 2:
            info += '你看起来更好看了'
            face += 1
        else:
            info += '这一年没有特别的事情发生'
    # 打印这一年发生的事情
    print(info)
    print(f'颜值: {face}, 体制: {strong}, 智力: {iq}, 家境: {home}')
    print('---------------------------------------------')
    # 为了方便观察, 加一个sleep
    time.sleep(2)

说明一下:

  • 代码中使用的exit是sys模块中的一个函数,如果角色因为触发某些事件而夭折,那么就可以以sys.exit(退出码)的方式让程序直接退出。
  • 代码中使用的sleep是time模块中的一个函数,为了方便观察生成的人生经历,可以以time.sleep(秒数)的方式让程序暂停若干秒。

效果展示

说明一下:

  • 由于当前代码中编写的人生经历还是比较少的,并且随机数也只是1 - 3,因此生成的人生经历的随机性比较差,并且生成的事件也就那么几个,如果想要让生成的人生经历更加随机更加丰富,就需要将生成随机数的范围调大,并且编写更多的人生经历用于触发。
  • 此外,青年阶段、壮年阶段和老年阶段的人生经历生成方式与幼年阶段相同,这里就不再进行实现了,想象力比较丰富的博友可以自行编写,但博主认为这里的目的是为了熟悉Python的语法,继续编写其他阶段的人生经历的意义不大。

到此这篇关于基于Python实现复刻人生重开模拟器的文章就介绍到这了,更多相关Python人生重开模拟器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用python+poco+夜神模拟器进行自动化测试实例

    网易最近出的一款自动化UI测试工具:Airtest 挺火的,还受到谷歌的推荐.我试着用了一下,感觉优缺点还是蛮明显的.对初学者来说,能用到的也就是图像识别的功能,这块做得比老牌的按键精灵弱很多.不过Airtest集合了poco框架对熟悉python的同学来说,是个进行自动化测试的利器. 我用了一段时间Airtest以后,发现其实我完全可以丢开Airtest,我需要的是poco框架提供的unity3d控件读取,Airtest在其中只起到了一个pythonIDE的作用.自动化跑py脚本时,还要打开A

  • Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

    2020年4月补充 鉴于配置自动化测试这套框架确实稍微有点麻烦,许多小伙伴在配置的过程中总是踩坑,最近写了篇简化版的入门教程,不想折腾Android SDK的小伙伴可以移步到那篇文章:https://www.jb51.net/article/169763.htm 概述 本文主要分为以下几个部分 安装Python3 安装Python3的Appium库 安装Android SDK 安装JDK 安装Appium 安装模拟器 编写测试脚本并生成测试报告 项目示例下载地址: https://github.

  • Appium+python自动化之连接模拟器并启动淘宝APP(超详解)

    简介 上一篇讲解完模拟器的安装.配置好以后,就好比我们手机已经买好,并且系统已经做好了,就差我们用数据线和电脑连接开始实战了,这篇宏哥就带着小伙伴们和童鞋们趁热打铁,讲解和分享一下如何连接模拟器(电脑版的虚拟手机),然后再安装一款APP-淘宝为例. 一.appium+pycharm+连接夜神模拟器并启动淘宝APP(推荐) 1.首先打开pycharm并写好代码,这里以淘宝APK作为测试Demo,淘宝APK我是放在电脑桌面(或者放置同代码同个目录下).如下图所示 其中|:driver = webdr

  • python实现模拟器爬取抖音评论数据的示例代码

    目标: 由于之前和朋友聊到抖音评论的爬虫,demo做出来之后一直没整理,最近时间充裕后,在这里做个笔记. 提示:大体思路 通过fiddle + app模拟器进行抖音抓包,使用python进行数据整理 安装需要的工具: python3 下载 fiddle 安装及配置 手机模拟器下载 抖音部分: 模拟器下载好之后, 打开模拟器 在应用市场下载抖音 对抖音进行fiddle配置,配置成功后就可以当手机一样使用了 一.工具配置及抓包: 我们随便打开一个视频之后,fiddle就会刷新新的数据包 在json中

  • 基于Python实现复刻人生重开模拟器

    目录 人生重开模拟器介绍 代码实现 打印初始界面 设置初始属性 设置角色性别 设置角色出生点 针对每一岁,生成人生经历 人生重开模拟器介绍 人生重开模拟器是由VickScarlet上传至GitHub的一款简单的文字网页游戏. 玩家点击“立即重开”并设置角色的初始属性后,程序就会随机为玩家生成对应的人生经历. 代码实现 下面我们实现一个简化版的人生重开模拟器,主要目的在于熟悉Python的语法. 打印初始界面 初始界面可以自由发挥,这里博主就随便打印一下. 代码如下: # 打印初始界面 print

  • 基于Python实现的微信好友数据分析

    最近微信迎来了一次重要的更新,允许用户对"发现"页面进行定制.不知道从什么时候开始,微信朋友圈变得越来越复杂,当越来越多的人选择"仅展示最近三天的朋友圈",大概连微信官方都是一脸的无可奈何.逐步泛化的好友关系,让微信从熟人社交逐渐过渡到陌生人社交,而朋友圈里亦真亦幻的状态更新,仿佛在努力证明每一个个体的"有趣". 有人选择在朋友圈里记录生活的点滴,有人选择在朋友圈里展示观点的异同,可归根到底,人们无时无刻不在窥探着别人的生活,唯独怕别人过多地了解

  • 基于Python的自媒体小助手---登录页面的实现代码

    核心技术:Python3.7 GUI技术:Tkinter (Python已经内置) 好多文章写Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) 我看了N遍也没够好多东西都没有就基本的介绍...还不够.我搞这个也是为了项目服务先给大家来个截图吧,其实知识点还是蛮多的. 在window上有点瑕疵了,在mac上海可以吧.使用到的技术我罗列一下完了在分享给大家代码. 1.窗体设置标题和设置图标,图标格式是ICO的,一般我们事宜Png转一下.https://www.easyicon.

  • 基于Python编写一个宝石消消乐小游戏

    目录 开发工具 环境搭建 原理简介 开发工具 python版本:3.6.4 相关模块: pygame:以及一些python自带的模块. 环境搭建 安装python并添加到环境变量,pip安装需要的相关模块即可. 原理简介 游戏规则: 玩家通过鼠标交换相邻的拼图,若交换后水平/竖直方向存在连续三个相同的拼图,则这些拼图消失,玩家得分,同时生成新的拼图以补充消失的部分,否则,交换失败,玩家不得分.玩家需要在规定时间内获取尽可能高的得分. 实现过程: 首先加载一些必要的游戏素材: 加载背景音乐: py

  • 基于Python实现Excel转Markdown表格

    目录 介绍 代码 测试 效果 介绍 Markdown(也简称md)作为一种轻量级标记语言,因其易写易读,效果美观大方,不仅被众多网站使用,也是程序员们做笔记.写文档的首选.但Markdown对表格是实现还是不尽如人意.特别是 不能把现成的Excel表格直接复制成Markdown表格. 我在平时的文档撰写.博客写作中就切身体会到这个痛点.我于是用Python实现了一个自动化工具,用来实现Excel转Markdown表格. 代码 import pandas as pd ​​​​​​​def exce

  • 基于Python编写一个二维码生成器

    目录 前言 1.安装第三方库 2.QRCode参数解释 3.自定义二维码生成器 4.给二维码加图片 5.全部代码 前言 二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型.现在的二维码随处可见,甚至有人觉得在以后的墓碑上都可以刻一个二维码,通过扫描该二维码便可知墓主传奇的一生.所以如何快速定制自己的二维码便显得极为的重要,本文用python生成

  • JavaScript canvas复刻苹果发布会环形进度条

    目录 前言 基础 Dom 结构 基本变量 画圆 画弧线 让画面动起来 总结 前言 canvas 真是一个好东西,它给前端插上了想象的翅膀,伴随着 h5 而来,将 web 代入了新的领域,基于canvas 技术实现的各种酷炫效果和2d.3d 游戏,也让浏览器能承载更加强大的功能.尤其是它性能还很好,搞游戏再合适不过了,我就喜欢用 canvas 写一些小游戏玩. 在线地址 最近无意中看到前段时间写的这个小效果,觉得挺有意思的,就分享出来:这是苹果ios 12 发布会上库克 ppt 里展示的内容,一个

  • 基于Python实现英语单词小游戏

    目录 导语 一.敲代码之前的小tips 二.运行环境 三.素材(图片等) 四.代码展示 1)主程序(英文打字小游戏主入口模块) 2)游戏配置信息模块 3)游戏视图模块 4)PyGame游戏精灵模块 五.效果展示 1)游戏界面 2)游戏设置 ​3)随机截图 4)游戏结束 导语 相信大家对于英语四级一点都不陌生了吧? 很多学校都是要求学生必须考过英语四级,不然就不能毕业. 一开始我抱着侥幸心理,心想上高中的时候英语不错,四级应该也很容易.不过成绩出来我就傻眼了,没有通过.然后我就制定了周密的学习计划

  • 基于Python的GUI图形用户界面编程详细讲解

    目录 前言 常用的GUI库 1.Tkinter 2.wxPython 3.PyQT 基于tkinter模块创建GUI程序步骤 主窗口设置 主窗口位置和大小 GUI编程整体描述 常用组件汇总列表 GUI应用程序类的经典写法 总结 前言 在最早程序的设计中,程序和用户的交互都是通过控制台来完成的,而GUI(Graphics User Interface),即图形用户编程,是Python 所提供的一个丰富的组件,可以快速的实现使用图形界面和用户交互. 常用的GUI库 1.Tkinter tkinter

  • 基于Python os模块常用命令介绍

    1.os.name---判断现在正在实用的平台,Windows返回'nt':linux返回'posix' 2.os.getcwd()---得到当前工作的目录. 3.os.listdir()--- 4.os.remove---删除指定文件 5.os.rmdir()---删除指定目录 6.os.mkdir()---创建目录(只能创建一层) 7.os.path.isfile()---判断指定对象是否为文件.是则返回True. 8.os.path.isdir()---判断指定对象是否为目录 9.os.p

随机推荐