Python-------实现人生重开模拟器

人生重开模拟器

  • 代码展示:
  • 实现思路
  • 序言
  • 一、设置初始属性
    • 1.游戏标题
    • 2.属性初始化
  • 二、设置角色性别
  • 三、设置角色出生点
  • 四、针对每一年的岁数,自动生成人生经历
  • 总结

代码展示:

# 人生重开模拟器
import random
import sys
import timeprint('+-----------------------------------------------+')
print('                                               ')
print('             花有重开日,人无再少年                 ')
print('                                              ')
print('            欢迎来到人生重开模拟器                  ')
print('                                               ')
print('+-----------------------------------------------+')# 设置初始属性
# 颜值, 体质, 家境, 智力, 总和不能超过20,每一项的取值都是 1-10 之间# 使用循环,使玩家输入错误的时候可以重新输入.
while True:print("请设置初始属性(可用点数值为20) ")Face = int(input("请输入颜值(1-10): "))Strong = int(input("请输入体质(1-10): "))Home = int(input("请输入家境(1-10): "))IQ = int(input("请输入智力(1-10): "))# 通过条件语句对于用户输入的属性值进行校验检查# 这段逻辑,使用elif是否可以呢?其实是完全可以的,效果是相同的# 使用elif则是多个分支只能进一个,一旦某个条件满足了,就不会再走其它分支了.# 此处虽然没有使用elif,但是有了continue,一旦某个条件满足,continue 就会使循环从头再来,也就没有机会# 继续去执行后续的条件判定了if Face < 1 or Face > 10:print("颜值设置有误!")continueif Strong < 1 or Face > 10:print("体质设置有误!")continueif Home < 1 or Face > 10:print("家境设置有误!")continueif IQ < 1 or Face > 10:print("智力设置有误!")continueif Face + Strong + Home + IQ > 20:print("总的属性之和超出20,设置有误")continue# 如果当前上面的条件都没有被触发,则认为玩家输入的数据是合法的# 此时就可以跳出循环,结束输入print("初始属性输入完毕!")print(f"颜值: {Face}, 体质: {Strong}, 家境: {Home}, 智力: {IQ}")break# 生成角色的性别
# 使用 random.randint(beg,end),就能生成[beg,end}的随机整数
point = random.randint(1,6)
if point % 2 == 1:gender = 'boy'print("你是一个男孩")
else:gender = 'girl'print("你是一个女孩")# 设定角色的出生点
point = random.randint(1,3)
if Home == 10:# 第一档print("你出生在帝都,你的父母是高官政要")Home += 1Face += 1IQ += 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}, 家境: {Home}, 智力: {IQ}")# 幼年阶段
for age in range(1,11):# 把一整年的打印都整理到一个字符串中,在这一年的结尾统一打印info = f'你今年{age}岁.'#生成一个[1,3]的随机整数point = random.randint(1,3)# 接下来编写各种事件的代码#使用elif是为了保证每一次只触发一个事件!# 性别触发的事件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 >= 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}, 家境: {Home}, 智力: {IQ}")print('----------------------------------------------------')#为了方便观察,加一个小小的暂停操作time.sleep(1)

实现思路

1.设置初始属性
2.设置角色性别
3.设置角色出生点
4.针对每一年的岁数,自动生成人生经历

序言

在前面学习Python的过程中,我们学习了顺序,选择和循环语句,也学到了有关continue和break的使用,因此,我们依靠这些知识,来完成一个简单的"小游戏"

一、设置初始属性

相信大家在网上也看到过这款游戏,这款游戏有四个属性,分别是:

    1. 颜值(Face)          2. 体力(Strong)3. 家境(Home)          4. 智商(IQ)

因此在这里,我们要规定属性的范围以及四个属性之和不能超过我们所规定的范围
所以在这,我们假设规定它们的属性都是在1 ~ 10的范围之内,其总和不超过20。

1.游戏标题

在游戏的开头,我们可以先打印个标题供给玩家看:

在这里插入图片描述
在这里插入图片描述

2.属性初始化

这四个属性由玩家自己输入,由于我们之前学习过input函数,因此在此处,使用input函数来帮我们完成初始化操作
在这里插入图片描述

到这里,虽然完成了属性的初始化操作,但是不够完善。由于玩家的操作使我们意料不到的,因此我们还得设置每个属性值的范围以及超出范围之后打印提示信息的操作。所以这项操作就要使用ifelif语句了

在这里插入图片描述

当我们在某个属性发生错误时,错误信息会直接打印在屏幕上面,程序会直接结束,而不会让玩家重新输入。为了让玩家能够重新输入属性值的功能,我们就要用到循环的操作语句-----while循环

在这里插入图片描述
在这里插入图片描述
注意 : 代码块的缩进

如果以上条件都没有被触发,就可以说明玩家输入的数据是符合规定的,我们就可以再次打印每个属性的信息,然后跳出循环,继续执行后续操作。

在这里,细心地同学会看到这里的代码怎么都是使用if语句,怎么没有使用elif语句呢?其实这里使用elif语句也是完全可以的。但这里需要注意的是 : 使用elif语句则是多个分支只能进一个,一旦某个条件满足了,就不会再走其它分支了。

在我们这段代码里,虽然没有使用elif语句,但是我们使用了continue语句,一旦某个条件满足,continue 就会使循环从头再来,也就没有机会继续去执行后续的条件判定了.

二、设置角色性别

因为我们不能提前知道玩家的性别,所以我们设置性别随机。在此处又需要使用到一个函数 : random.randint ,通过这个函数,我们就能过生成1 ~ 6的随机数。

注: 在这里插入图片描述

我们假设规定: 如果是单数,就为男孩。反之,则为女孩。

在这里插入图片描述

三、设置角色出生点

我们假设按照家境这一属性,将出生点分为四个档位

  1. 当 Home = 10 时为第一档,此时家境最好,属性加成最高
  2. 当 Home = 7 ~ 9 时为第二档,此时有部分属性加成
  3. 当 Home = 4 ~ 6 时为第三档,此时属性的加成较少
  4. 当 Home = 1 ~ 3 时为第四档,此时会扣除部分属性值

当然,也可以加多几部分,让这小游戏有更高的可玩度

然后生成1 ~ 3的随机数,每一种数字代表一种情况

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在选则完后,打印角色的相关属性

四、针对每一年的岁数,自动生成人生经历

按照年龄,我们可以将角色分为四个阶段:

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

每个阶段都有可能会产生不一样的事件,也可能出现一些机遇.
例如: 在这段代码中,我们只写了幼年这一阶段.因为我们要打印每一年所发生的事件,因此需要使用for循环,通过字符串拼接,不断循环,最后输出字符串即可。在针对事件的发生,我们既可以使用随机数,根据所产生的数字代表该事件的发生,也可以根据性别、颜值、体质等来触发相关事件.由于每一种事件会产生不一样的影响,如果发生夭折等突然去世的情况时,我们可以使用 sys.exit(0) 退出程序,然后为了方便观察,再加上一个暂停的操作-------time.sleep(1)

# 幼年阶段
for age in range(1,11):# 把一整年的打印都整理到一个字符串中,在这一年的结尾统一打印info = f'你今年{age}岁.'#生成一个[1,3]的随机整数point = random.randint(1,3)# 接下来编写各种事件的代码#使用elif是为了保证每一次只触发一个事件!# 性别触发的事件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 >= 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}, 家境: {Home}, 智力: {IQ}")print('----------------------------------------------------')#为了方便观察,加一个小小的暂停操作time.sleep(1)

:在这里使用sys.exit 和 time.sleep的时候,需要先使用important语句,将模块的名字"导入"进来.

在这里插入图片描述

总结

写到这里,相信大家对这款小游戏制作有提升了不少的认识。虽然我们这这里只写了一个幼年阶段,但我相信,只要你们看完这篇文章,一定会有能力继续去实现其余的人生阶段,令游戏变得更加完善。

今天的分享就到这里啦,感谢大家的阅读,我们下次再见 !

See You ~

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

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

相关文章

服务器IP选择

可以去https://ip.ping0.cc/查看IP的具体情况 1.IP位置--如果是国内用&#xff0c;国外服务器的话建议选择日本&#xff0c;香港这些比较好&#xff0c;因为它们离这里近&#xff0c;一般延时低&#xff08;在没有绕一圈的情况下&#xff09;。 不过GPT的话屏蔽了香港IP 2. 企…

GPT是什么?直观解释Transformer | 深度学习第5章 【3Blue1Brown 官方双语】

【官方双语】GPT是什么&#xff1f;直观解释Transformer | 深度学习第5章 0:00 - 预测&#xff0c;采样&#xff0c;重复&#xff1a;预训练/生成式/Transformer模型 3:03 - Transformer 的内部结构 6:36 - 本期总述 7:20 - 深度学习的大框架 12:27 - GPT的第一层&#xff1a;…

【论文浅尝】Large Language Models for Generative Information Extraction: A Survey

本文对生成式IE的LLM进行了全面的探索。使用两种分类法对现有的代表性方法进行分类: (1)众多IE子任务的分类法&#xff0c;旨在对可以使用llm单独或统一提取的不同类型的信息进行分类; (2)学习范式分类法&#xff0c;对利用llm生成IE的各种新方法进行分类。 Preliminaries o…

msmpi 高性能计算实现文件读取输入

【高性能计算】完美解决Windows下安装mpi环境并应用到VSCode中报错问题的方法_c:\program files (x86)\microsoft sdks\mpi\include/-CSDN博客 环境配置 然后跑这个代码测试即可 // 命令行参数&#xff1a; //mpiexec -n 9 "C:\Users\ASUS\Desktop\testMPI\MPIv2.exe&qu…

【氮化镓】GaN器件可靠性及市场前景概述

文章是关于氮化镓&#xff08;GaN&#xff09;场效应晶体管&#xff08;FET&#xff09;技术在空间应用中的可靠性、辐射效应和市场前景的概述。文章由Airbus Defence & Space的多位专家撰写&#xff0c;涵盖了GaN FET技术的多个关键方面&#xff0c;包括技术概述、可靠性问…

Find My无人机|苹果Find My技术与无人机结合,智能防丢,全球定位

无人机是利用无线电遥控设备和自备的程序控制装置操纵的不载人飞机&#xff0c;或者由车载计算机完全地或间歇地自主地操作。无人机按应用领域&#xff0c;可分为军用与民用。军用方面&#xff0c;无人机分为侦察机和靶机。民用方面&#xff0c;无人机行业应用&#xff0c;是无…

opencv基础篇 ——(十二)轮廓提取与绘制

opencv基础篇 ——&#xff08;十二&#xff09;轮廓提取与绘制 findContours轮廓提取 void void findContours( InputArray image, OutputArrayOfArrays contours,OutputArray hierarchy, int mode,int method, Point offset Point());功能介绍 cv::findContours 是 OpenC…

【python】商业数据聚类-回归数据分析可视化(源码+数据)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

ios CI/CD 持续集成 组件化专题四-(手动发布私有库-组件化搭建)

一 、创建私有索引库 1.1 、第一步 首先检查本地是否存在需要的私有索引库 pod repo list 例如&#xff1a;dp_base_ios_spec 在本地不存在该私有索引库 1.2 、第二步 在git下下创建一个新的库&#xff0c;这个库用来保存私有库的podspec文件&#xff0c;取名叫xxxSpec用以…

以更多架构核心专利,推进 SDS 产业创新创造

今天是第 24 个世界知识产权日&#xff0c;今年世界知识产权日活动的主题是&#xff1a;“知识产权和可持续发展目标&#xff1a;立足创新创造&#xff0c;构建共同未来。” 这也正是 XSKY 在软件定义存储领域的目标之一。以“数据常青”为使命的 XSKY&#xff0c;始终立足于软…

【MySQL | 第十篇】重新认识MySQL索引匹配过程

文章目录 10.重新认识MySQL索引匹配过程10.1匹配规则10.2举例&#xff1a;联合索引遇到范围查询&#xff08;>、<、between、like&#xff09;10.2.1例子一&#xff1a;>10.2.2例子二&#xff1a;>10.2.3例子三&#xff1a;between10.2.4例子四&#xff1a;like 10…

Unity SteamVR入门

概述 VR项目现在在当前已经是非常热门的技术&#xff0c;可以给玩家身临其境的感觉&#xff0c;接下来让我们学习这部分的内容吧&#xff01; SteamVR Input SteamVR绑定流程&#xff0c;在Windows窗口的点击SteamVR-input&#xff0c;图1&#xff0c;在这里可以选择你需要绑定…

SQL注入漏洞--报错/union/布尔盲注/时间盲注

之前介绍了数据库的基本操作&#xff0c;今天这篇文章就来实操SQL注入。 阅读本文前可以先看一下基本操作&#xff0c;有助于更换理解本文。。。 https://blog.csdn.net/weixin_60885144/article/details/138356410?spm1001.2014.3001.5502 what SQL---结构化查询语言---S…

探索AIGC技术:创新、挑战与责任

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f4d5;格言&#xff1a;那些在暗处执拗生长的花&#xff0c;终有一日会馥郁传香欢迎大家&#x1f44d;点赞✍评论⭐收藏 #如何看待AIGC技术&#xff1f; 目录 AIGC简单介绍 创新 责任 未来展望和挑战 AIGC简单介绍 A…

【Linux系统】守护进程

一.进程组&#xff0c;会话 PGID&#xff1a;进程组id&#xff0c;一条命令启动的所有进程及其子进程属于同一个进程组。一条指令中最先创建的进程就是组长&#xff0c;组id就是组长的PID。./启动的SID&#xff1a;会话id&#xff0c;每次登录Linux&#xff0c;操作系统给登录的…

vue2(4)之scoped解决样式冲突/组件通信/非父子通信/ref和$refs/异步更新/.sync/事件总线/provide和inject

vue2 一、学习目标1.组件的三大组成部分&#xff08;结构/样式/逻辑&#xff09;2.组件通信3.综合案例&#xff1a;小黑记事本&#xff08;组件版&#xff09;4.进阶语法 二、scoped解决样式冲突**1.默认情况**&#xff1a;2.代码演示3.scoped原理4.总结 三、data必须是一个函数…

C语言-调试技巧

目录 一、调试介绍1.1 Debug和Release的介绍1.2 Windows环境调试介绍1.2.1 学会快捷键1.2.2 查看临时变量的值1.2.3 查看内存信息1.2.4 查看调用堆栈1.2.4 查看汇编信息1.2.5 查看寄存器信息 二、编程常见的错误2.1 编译型错误2.2 链接型错误2.3 运行时错误 三、易于调试的代码…

Redis---------实现更改数据业务包括缓存更新,缓存穿透雪崩击穿的处理

三种更新策略 内存淘汰是Redis内存的自动操作&#xff0c;当内存快满了就会触发内存淘汰。超时剔除则是在存储Redis时加上其有限期(expire)&#xff0c;有限期一过就会自动删除掉。而主动更新则是自己编写代码去保持更新&#xff0c;所以接下来研究主动更新策略。 主动更新策略…

配置 Trunk,实现相同VLAN的跨交换机通信

1.实验环境 公司的员工人数已达到 100 人&#xff0c;其网络设备如图所示。现在的网络环境导致广播较多网速慢&#xff0c;并且也不安全。公司希望按照部门划分网络&#xff0c;并且能够保证一定的网络安全性。 其网络规划如下。 PC1和 PC3为财务部&#xff0c;属于VLAN 2&…

npm详解:Node.js包管理器的奥秘

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…