PYTHON-“人生重开模拟器“

news2024/11/26 0:57:56

🚀write in front🚀
🔎大家好,我是Aileen★。希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎
🆔本文由 Aileen_0v0★ 原创 CSDN首发🐒 如需转载还请通知⚠
📝个人主页:Aileen_0v0★—CSDN博客
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​
📣系列专栏:Aileen_0v0★的PYTHON学习系列专栏——CSDN博客
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本

 

游戏页面

 

 

 

 

游戏结果 

游戏实现思路

 现在我们利用python进行编程实现一个简化版的人生重开模拟器

1.游戏开始的时候,设定初始属性~

   颜值,体质,智力,家庭

2.开始游戏,随机生成性别和出生点~

3.针对每一年,都生成人生的经历~~(依靠一定的随机因素+当前角色的属性)

1.游戏开始的时候,设定初始属性~

# 人生重开模拟器 ~
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("颜值设置有误!")
        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

2.开始游戏,随机生成性别和出生点~

#随机生成角色性别
#使用 random.randint(beg,end),就能生成[beg,end]随机整数
import random
point=random.randint(1,6)
#print(f"point={point}")
#假设单数为男,双数为女
if point % 2==1:
    gender="boy"
    print("你是个男孩")
else:
    gender="girl"
    print("你是个女孩")

#设定角色出生点
#为了简单,就直接生成1-3的随机数
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}")

注意:实现一个游戏的时候,很多时候,游戏本身涉及到的逻辑,并不复杂~~但是游戏中一些具体的数据,数值平衡,是非常复杂的!!--->有兴趣的小伙伴也可以用其它方式进行划分

补充:在python中,如果想引入其它模块,需先使用import语句,把模块的名字给"导入进来"~

PyCharm来说,有一个功能能够自动导入当前使用的模块~ 

 random.randint此处的random是一个python中的模块!--->别人写好的代码,直接给我们来用~

使用别人模块的优点:

  1. 节省开发时间和成本:使用别人的模块可以避免自己从零开始编写功能,减少开发时间和成本。

  2. 降低开发风险:已有的模块已经经过测试和验证,可以减少出现错误的风险。

  3. 增加代码质量和可维护性:使用别人的模块可以避免自己编写的代码出现问题,提高代码质量和可维护性。

  4. 加速项目进度:使用别人的模块可以加速项目进度,使项目更快地完成。

  5. 提升开发效率:使用别人的模块可以避免重复劳动,提高开发效率。

3.针对每一年,都生成人生的经历~~(依靠一定的随机因素+当前角色的属性)

人生阶段及特点
幼年阶段 [1,10]可塑性强~
青年阶段 [11,20]求学阶段~
壮年阶段 [20,50]   平稳~
老年阶段 50岁以上颜值,体质和智力显著退化~(游戏结束)

幼年阶段~

      先使用一个循环,按照年龄,从1循环到10

      针对每一年,都生成一个随机数~[1,3]

      根据角色,性别,年龄,各种属性,触发各种事件,随机数会对 事件的结果造成影响~

      这里的事件可能会对属性带来变更~ ~

      每一年执行结束,都打印这一年发生的事件(让每年只发生一个事件)

      也可能会遇到 夭折 的情况~~使用exit函数来结束程序~ ~      

  sys是system的缩写,也是python内部提供的一个模块~ 
  功能是退出程序,一般括号里写0即可~
#幼年阶段
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("游戏结束!")
        import sys
        sys.exit(0)
        #sys是system的缩写,也是python内部提供的一个模块~ ~功能是退出程序,一般括号里写0即可
    # 体质触发的事件
    # 使用 elif 是为了保证每年只触发一个事件!
    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 >= 8 and age >= 6:
            info += "你的父母把你送到更好的学校学习"
            iq += 1
        elif 4 <= home <= 7:
            if gender == "boy":
                info += "你的父母鼓励你多运动,争取成为运动员"
                strong += 1
            else:
                info += "你的父母鼓励你多打扮自己"
                face += 1
        else:
            # 家境 < 4
            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:
            # 无事发生
            pass

    # 打印这一年发生的事情
    print(info)
    print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")
    print("------------------------------------------------")
    #为了方便观察,加一个小小的暂停操作
    import time
    time.sleep(1)
    #time 也是python提供的模块
    #sleep 的功能就是让程序暂停一会,再继续执行 1就是1秒

此处只写了幼年阶段,青年,中年,老年也是类似的,由于时间问题,就暂时写到这里.

游戏总体代码:

# 人生重开模拟器 ~
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("颜值设置有误!")
        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

#随机生成角色性别
#使用 random.randint(beg,end),就能生成[beg,end]随机整数
import random
point=random.randint(1,6)
#print(f"point={point}")
#假设单数为男,双数为女
if point % 2==1:
    gender="boy"
    print("你是个男孩")
else:
    gender="girl"
    print("你是个女孩")

#设定角色出生点
#为了简单,就直接生成1-3的随机数
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}")

#幼年阶段
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("游戏结束!")
        import sys
        sys.exit(0)
        #sys是system的缩写,也是python内部提供的一个模块~ ~功能是退出程序,一般括号里写0即可
    # 体质触发的事件
    # 使用 elif 是为了保证每年只触发一个事件!
    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 >= 8 and age >= 6:
            info += "你的父母把你送到更好的学校学习"
            iq += 1
        elif 4 <= home <= 7:
            if gender == "boy":
                info += "你的父母鼓励你多运动,争取成为运动员"
                strong += 1
            else:
                info += "你的父母鼓励你多打扮自己"
                face += 1
        else:
            # 家境 < 4
            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:
            # 无事发生
            pass

    # 打印这一年发生的事情
    print(info)
    print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")
    print("------------------------------------------------")
    #为了方便观察,加一个小小的暂停操作
    import time
    time.sleep(1)
    #time 也是python提供的模块
    #sleep 的功能就是让程序暂停一会,再继续执行 1就是1秒

游戏效果图:

游戏如此,人生如此,愿我们都健健康康,幸福快乐! 


游戏到这就结束了,人生还在继续,感谢大家的支持!❀

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

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

相关文章

SAP-PP:基础概念笔记-5(物料主数据的MRP1~4视图)

文章目录 前言一、MRP1视图Base Unit of Measure&#xff08;UoM&#xff09;MRP 组采购组ABC 指示器Plant-Specific Material Status 特定的工厂物料状态MRP 类型 MRP TypeMRP 类型 MRP TypeMaster Production Scheduling(MPS) 主生产计划基于消耗的计划(CBP)再订货点Reorder-…

【业务功能篇91】微服务-springcloud-多线程-线程池执行顺序

一、线程的实现方式 1. 线程的实现方式 1.1 继承Thread class ThreadDemo01 extends Thread{Overridepublic void run() {System.out.println("当前线程:" Thread.currentThread().getName());} }1.2 实现Runnable接口 class ThreadDemo02 implements Runnable{…

介绍几个搜索引擎

Google&#xff1a;全球最大的搜索引擎&#xff0c;提供全面的搜索服务&#xff0c;包括网页、图片、视频、新闻、地图等。 Baidu&#xff1a;中国最大的搜索引擎&#xff0c;提供类似于Google的全面搜索服务&#xff0c;同时也有网盘、知道等功能。 Bing&#xff1a;微软公司…

Linux持续学习者的实用命令:sed

引言 作为一名Linux持续学习者&#xff0c;我们经常需要对文本内容进行处理或修改&#xff0c;这时候sed命令就能派上用场了。sed是一个强大的流式文本编辑器&#xff0c;它可以在读取文本时进行修改并输出&#xff0c;支持各种复杂的字符串替换、内容删除、行插入等操作。在本…

Linux的目录结构特点

Linux的目录结构特点 1、使用树形目录结构来组织和管理文件。 2、整个系统只有一个根目录&#xff08;树根&#xff09;&#xff0c;Linux的根目录用“/”表示。 3、其他所有分区以及外部设备&#xff08;如硬盘&#xff0c;光驱等&#xff09;都是以根目录为起点&#xff0…

[华为云云服务器评测] Unbutnu添加SSH Key、编译启动Springboot项目

系列文章目录 第一章 [linux实战] 华为云耀云服务器L实例 Java、node环境配置 第二章 [linux实战] Unbutnu添加SSH Key、启动Springboot项目 文章目录 系列文章目录前言一、任务拆解二、配置git,添加SSH Key2.1、登录远程主机2.2、配置git用户名和邮箱2.3、生成SSH key2.4、查…

说说redo log 与 undo log

redo log redo log叫做重做日志.用于解决数据库事物提交 还未刷入磁盘,服务器down机导致的数据丢失的问题。 InnoDB作为MySQL的存储引擎&#xff0c;数据存储在磁盘中&#xff0c;如果每次读写数据都要操作磁盘IO效率会很低&#xff0c;为此InnoDB提供了缓存(Buffer Pool)&am…

无涯教程-JavaScript - STDEVP函数

STDEVP函数替代Excel 2010中的STDEV.P函数。 描述 该函数根据作为参数给出的整个总体计算标准偏差。标准偏差是对值与平均值(平均值)的分散程度的度量。 语法 STDEVP (number1,[number2],...)争论 Argument描述Required/OptionalNumber1The first number argument corresp…

文件包含漏洞及漏洞复现

文件包含漏洞 1. 文件包含概述 程序开发人员通常会把可重复使用函数或语句写到单个文件中&#xff0c;形成“封装”。在使用某个功能的时候&#xff0c;直接调用此文件&#xff0c;无需再次编写&#xff0c;提高代码重用性&#xff0c;减少代码量。这种调用文件的过程通常称为…

机器学习与数据分析

【数据清洗】 异常检测 孤立森林&#xff08;Isolation Forest&#xff09;从原理到实践 效果评估&#xff1a;F-score 【1】 保护隐私的时间序列异常检测架构 概率后缀树 PST – &#xff08;异常检测&#xff09; 【1】 UEBA架构设计之路5&#xff1a; 概率后缀树模型 【…

单独创建一个线程并执行

C并发编程入门 目录 STL 写法 #include <thread> #include <iostream> using namespace std;void thread_fun(void) {cout << "one STL thread!" << endl; }int main(void) {std::thread thread1(thread_fun);thread1.join();return 0; }其…

数字IC验证——PSS可移植测试用例

PSS是Accellera组织定义的测试用例生成规范&#xff0c;其思想是定义一个抽象模型&#xff0c;EDA工具可以从中生成适用于每个设计层次结构和每个验证平台的测试&#xff0c;即PSS定义了统一的测试场景&#xff0c;而场景的使用可以横跨不同验证层次和配置。 这种特性决定了PSS…

docker笔记8:Docker网络

1.是什么 1.1 docker不启动&#xff0c;默认网络情况 ens33 lo virbr0 在CentOS7的安装过程中如果有选择相关虚拟化的的服务安装系统后&#xff0c;启动网卡时会发现有一个以网桥连接的私网地址的virbr0网卡(virbr0网卡&#xff1a;它还有一个固定的默认IP地址192.168.122…

快速掌握STM32工程创建

STM32 工程创建-- 使用Keil uVision5 软件 晓理紫 1 准备库函数库 STM32F10x_StdPeriph_Lib_V3.5.0 VX 搜索“晓丽紫”关注回复STM32F10x即可下载 2、创建一个目录用来存放工程 STM32Study STM32Study/study1 存放本次工程目录 3、打开Keil uVision5 创建工程 4、选择型号(根据…

租服务器训练深度学习模型

一、选择租哪个 推荐用AutoDL(便宜、功能强大、gug少、有时时客服解决问题) AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDL 二、注册、登录 学生可以认证&#xff0c;享受会员价 服务器需要登录后先充值&#xff0c;先充个10元&#xff0c;接下来试试看。每次都是开机…

Web framework-Gin(二)

一、Gin 1、Ajax AJAX 即“Asynchronous Javascript And XML”&#xff08;异步 JavaScript和 XML&#xff09;&#xff0c;是指一种创建交互式、快速动态网页应用的网页开发技术&#xff0c;无需重新加载整个网页的情况下&#xff0c;能够更新部分网页的技术。通过在后台与服…

AppleID切换验证手机

第一步&#xff1a;登录个人信息页面 https://appleid.apple.com/account/manage/section/security 第二步&#xff1a;选择账户安全 第三步&#xff1a;验证新手机号即可

供应链 | 顶会CIKM论文精读:面向大规模三维装箱问题的数据驱动树形搜索算法

论文解读&#xff1a;丁建辉&#xff0c;李明哲&#xff0c;赵艳蓉&#xff0c;孙楚天 编者按 本次解读的文章发表于CCF-B类会议30th ACM International Conference on Information and Knowledge Management。摘要总结如下&#xff1a; 3维装箱问题&#xff08;3D-BPP&#…

2023第二届陇剑杯网络安全大赛 预选赛Writeup

题目附件 链接&#xff1a;https://pan.baidu.com/s/1J20VusdMjit4coWAi5lnnQ 提取码&#xff1a;6emq 文章目录 HWhard_web_1hard_web_2hard_web_3 SSsevrer save_1sevrer save_2sevrer save_3sevrer save_4sevrer save_5sevrer save_6sevrer save_7sevrer save_8 WSWireshar…

46、TCP的“三次握手”

在上一节中&#xff0c;TCP首部常用的几个选项&#xff0c;有些选项的参数就是在通信双方在建立TCP连接的时候进行确定和协商的。所以在学习过TCP报文首部之后&#xff0c;下面我们开始学习TCP的连接建立。 TCP的一个特点是提供可靠的传输机制&#xff0c;还有一个特点就是TCP…