[Python] 《人生重开模拟器》游戏实现


文章目录

  • 优化点一:多元化的天赋系统
      • 示例天赋:
      • 天赋选择代码:
  • 优化点二:更加多样化的随机事件
      • 年龄阶段划分:
      • 随机事件代码:
  • 优化点三:设定人生目标
      • 人生目标示例:
      • 人生目标代码:
  • 完整《人生重开模拟器》代码

收录专栏:[Python]

《人生重开模拟器》是一款模拟人生经历的游戏,它让玩家通过一系列选择和随机事件,体验不同的人生轨迹。在原版简单Python实现的命令行游戏的基础上,我们对其进行了优化,使其玩法更加丰富、有趣,增加了更多的随机性、选择性以及人生目标,让每次模拟都充满了未知和挑战。本文将详细介绍这些优化点,并附上可以运行的完整代码。

优化点一:多元化的天赋系统

为了增加游戏的趣味性和重玩性,优化版增加了一个天赋系统。在游戏开始时,玩家可以从不同的天赋中进行选择,每个天赋会对初始属性以及未来随机事件产生不同的影响。

示例天赋:

  • 智商天赋:你天资聪颖,智商+2,在后续的学习和工作事件中会有额外加成。
  • 体质天赋:你体格强健,体质+2,在遭遇疾病或意外时更容易恢复。
  • 颜值天赋:你天生丽质,颜值+2,更容易在社交中获得好感。
  • 家境天赋:你出生富裕,家境+2,生活资源更加丰富,未来可以拥有更多选择。

通过选择不同的天赋,玩家可以体验不同的人生开局,这大大增加了游戏的多样性。

天赋选择代码:

def choose_talent():
    talents = {
        "智商天赋": {"iq": 2, "description": "你天资聪颖,智商+2"},
        "体质天赋": {"strong": 2, "description": "你体格强健,体质+2"},
        "颜值天赋": {"face": 2, "description": "你貌美如花,颜值+2"},
        "家境天赋": {"home": 2, "description": "你出生在富裕家庭,家境+2"}
    }

    print("请选择一个天赋:")
    for idx, talent in enumerate(talents):
        print(f"{idx + 1}. {talent}: {talents[talent]['description']}")

    choice = int(input("输入天赋编号: "))
    selected_talent = list(talents.values())[choice - 1]

    return selected_talent

优化点二:更加多样化的随机事件

优化后的游戏为每个年龄阶段设计了更多的随机事件,这些事件会根据玩家的属性值以及性别、年龄等因素进行触发,增加了游戏的复杂性。每个事件都可能会对玩家的属性产生正面或负面的影响,进一步推动人生轨迹的发展。

年龄阶段划分:

  • 幼年阶段(1-10岁):以身体发育、家庭环境为主,玩家的体质和智商可能会受到影响。
  • 青年阶段(11-20岁):以学习和社交为主,智商和颜值是主要影响因素。
  • 壮年阶段(21-50岁):以工作和家庭为主,家境和智商决定职业发展的方向。
  • 老年阶段(50岁以上):健康和家境的影响会更加显著,可能会触发疾病和死亡事件。

随机事件代码:

def random_event(age, gender, face, strong, iq, home):
    event_outcome = ""
    point = random.randint(1, 6)

    if 1 <= age <= 10:
        # 幼年阶段,社交事件
        if point == 1 and face >= 7:
            event_outcome = "你长得很可爱,交到了很多朋友。"
            face += 1
        elif point == 2 and iq >= 7:
            event_outcome = "你非常聪明,成绩一直名列前茅。"
            iq += 1
        else:
            event_outcome = "你健康成长。"

    elif 11 <= age <= 20:
        # 青年阶段,学习事件
        if point == 1 and iq >= 7:
            event_outcome = "你考上了一所重点中学。"
            iq += 2
        elif point == 2 and home >= 7:
            event_outcome = "你的家境优越,进入了名校学习。"
            iq += 2
            home -= 1
        else:
            event_outcome = "你度过了一个平淡的青春期。"

    elif 21 <= age <= 50:
        # 壮年阶段,工作事件
        if point == 1 and home >= 8:
            event_outcome = "你继承了家族企业,家境大幅提升。"
            home += 3
        elif point == 2 and iq >= 8:
            event_outcome = "你凭借高智商获得了理想的工作。"
            iq += 2
        elif point == 3:
            event_outcome = "你遇到了工作上的瓶颈,身心疲惫。"
            strong -= 1
        else:
            event_outcome = "你在工作中稳定发展。"

    else:
        # 老年阶段,健康事件
        if point == 1:
            event_outcome = "你患上了一些老年疾病,身体健康下降。"
            strong -= 2
        elif point == 2 and strong >= 6:
            event_outcome = "你保持着良好的身体状态,健康长寿。"
            strong += 1
        else:
            event_outcome = "你平稳地度过了这一年。"

    return event_outcome, face, strong, iq, home

优化点三:设定人生目标

为了使游戏更具目标性,优化版允许玩家在游戏开始时选择一个人生目标。玩家可以通过做出相应的选择和随机事件逐步实现目标,从而提高游戏的趣味性和挑战性。

人生目标示例:

  • 科学家:智商达到 10,完成重大科研成就。
  • 富翁:家境达到 15,拥有庞大的财富。
  • 颜值巅峰:颜值达到 10,成为万人迷。

人生目标代码:

def choose_goal():
    goals = {
        "科学家": {"description": "智力达到 10,完成重大科研成就。", "condition": lambda iq: iq >= 10},
        "富翁": {"description": "家境达到 15,拥有庞大的财富。", "condition": lambda home: home >= 15},
        "颜值巅峰": {"description": "颜值达到 10,成为万人迷。", "condition": lambda face: face >= 10},
    }

    print("请选择你的人生目标:")
    for idx, goal in enumerate(goals):
        print(f"{idx + 1}. {goal}: {goals[goal]['description']}")

    choice = int(input("输入目标编号: "))
    selected_goal = list(goals.values())[choice - 1]

    return selected_goal

完整《人生重开模拟器》代码

以下是优化后的完整代码,包含初始属性设置、天赋选择、随机事件触发和人生目标的实现。可以直接运行并体验模拟人生的乐趣。

import random
import time
import sys

# 游戏开始欢迎
print("+---------------------------------------------------------------------+")
print("| |")
print("| 花有重开日, 人无再少年 |")
print("| |")
print("| 欢迎来到, 人生重开模拟器 |")
print("| |")
print("+---------------------------------------------------------------------+")

# 选择天赋
def choose_talent():
    talents = {
        "智商天赋": {"iq": 2, "description": "你天资聪颖,智商+2"},
        "体质天赋": {"strong": 2, "description": "你体格强健,体质+2"},
        "颜值天赋": {"face": 2, "description": "你貌美如花,颜值+2"},
        "家境天赋": {"home": 2, "description": "你出生在富裕家庭,家境+2"}
    }

    print("请选择一个天赋:")
    for idx, talent in enumerate(talents):
        print(f"{idx + 1}. {talent}: {talents[talent]['description']}")

    choice = int(input("输入天赋编号: "))
    selected_talent = list(talents.values())[choice - 1]

    return selected_talent

# 选择人生目标
def choose_goal():
    goals = {
        "科学家": {"description": "智力达到 10,完成重大科研成就。", "condition": lambda iq: iq >= 10},
        "富翁": {"description": "家境达到 15,拥有庞大的财富。", "condition": lambda home: home >= 15},
        "颜值巅峰": {"description": "颜值达到 10,成为万人迷。", "condition": lambda face: face >= 10},
            }

    print("请选择你的人生目标:")
    for idx, goal in enumerate(goals):
        print(f"{idx + 1}. {goal}: {goals[goal]['description']}")

    choice = int(input("输入目标编号: "))
    selected_goal = list(goals.values())[choice - 1]

    return selected_goal

# 随机事件触发机制
def random_event(age, gender, face, strong, iq, home):
    event_outcome = ""
    point = random.randint(1, 6)

    if 1 <= age <= 10:
        # 幼年阶段,社交事件
        if point == 1 and face >= 7:
            event_outcome = "你长得很可爱,交到了很多朋友。"
            face += 1
        elif point == 2 and iq >= 7:
            event_outcome = "你非常聪明,成绩一直名列前茅。"
            iq += 1
        else:
            event_outcome = "你健康成长。"

    elif 11 <= age <= 20:
        # 青年阶段,学习事件
        if point == 1 and iq >= 7:
            event_outcome = "你考上了一所重点中学。"
            iq += 2
        elif point == 2 and home >= 7:
            event_outcome = "你的家境优越,进入了名校学习。"
            iq += 2
            home -= 1
        else:
            event_outcome = "你度过了一个平淡的青春期。"

    elif 21 <= age <= 50:
        # 壮年阶段,工作事件
        if point == 1 and home >= 8:
            event_outcome = "你继承了家族企业,家境大幅提升。"
            home += 3
        elif point == 2 and iq >= 8:
            event_outcome = "你凭借高智商获得了理想的工作。"
            iq += 2
        elif point == 3:
            event_outcome = "你遇到了工作上的瓶颈,身心疲惫。"
            strong -= 1
        else:
            event_outcome = "你在工作中稳定发展。"

    else:
        # 老年阶段,健康事件
        if point == 1:
            event_outcome = "你患上了一些老年疾病,身体健康下降。"
            strong -= 2
        elif point == 2 and strong >= 6:
            event_outcome = "你保持着良好的身体状态,健康长寿。"
            strong += 1
        else:
            event_outcome = "你平稳地度过了这一年。"

    return event_outcome, face, strong, iq, home

# 初始属性设定
def set_initial_attributes():
    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("初始属性设定完成!")
        break

    return face, strong, iq, home

# 设置性别
def set_gender():
    point = random.randint(1,6)  # 随机生成数字来决定性别
    if point % 2 == 1:
        gender = 'boy'
        print("你是个男孩")
    else:
        gender = 'girl'
        print("你是个女孩")
    
    return gender

# 游戏主循环
def run_game():
    # 设置初始属性
    face, strong, iq, home = set_initial_attributes()

    # 选择天赋
    talent = choose_talent()
    face += talent.get("face", 0)
    strong += talent.get("strong", 0)
    iq += talent.get("iq", 0)
    home += talent.get("home", 0)

    # 选择性别
    gender = set_gender()

    # 选择人生目标
    goal = choose_goal()

    # 游戏循环:模拟每年的事件
    for age in range(1, 51):
        # 触发随机事件
        event_outcome, face, strong, iq, home = random_event(age, gender, face, strong, iq, home)
        print(f'你今年 {age} 岁: {event_outcome}')
        print(f'当前属性: 颜值={face}, 体质={strong}, 智力={iq}, 家境={home}')

        # 检查是否达成人生目标
        if goal["condition"](iq) or goal["condition"](home) or goal["condition"](face):
            print(f"恭喜!你在 {age} 岁达成了人生目标:{goal['description']}")
            break

        # 停顿一会以便玩家观察
        time.sleep(2)

# 启动游戏
run_game()

你可以直接运行这段代码,体验《人生重开模拟器》,开启一段全新的人生冒险吧!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python爬虫 - 初识requests模块

&#x1f308;个人主页&#xff1a;https://blog.csdn.net/2401_86688088?typeblog &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/2401_86688088/category_12797772.html 前言 requests 是一个用于发送 HTTP 请求的 Python 库&#xff0c;设计简单且功能强大&am…

如何创建虚拟环境并实现目标检测及验证能否GPU加速

创建虚拟环境&#xff1a; 先创建一个虚拟python环境&#xff0c;敲如下代码 然后再到该虚拟环境里面安装自己想要的包 激活虚拟环境 然后再聚类训练这些 验证GPU加速 阿里源 pip install torch torchvision -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mir…

B树系列解析

我最近开了几个专栏&#xff0c;诚信互三&#xff01; > |||《算法专栏》&#xff1a;&#xff1a;刷题教程来自网站《代码随想录》。||| > |||《C专栏》&#xff1a;&#xff1a;记录我学习C的经历&#xff0c;看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

YOLO11改进|卷积篇|引入线性可变形卷积LDConv

目录 一、【LDConv】卷积1.1【LDConv】卷积介绍1.2【LDConv】核心代码 二、添加【LDConv】卷积2.1STEP12.2STEP22.3STEP32.4STEP4 三、yaml文件与运行3.1yaml文件3.2运行成功截图 一、【LDConv】卷积 1.1【LDConv】卷积介绍 下图是【LDCNV】的结构图&#xff0c;让我们简单分析…

鸿蒙HarmonyOS开发生态

1、官网 华为开发者联盟-HarmonyOS开发者官网&#xff0c;共建鸿蒙生态 2、开发工具IDE下载及使用 https://developer.huawei.com/consumer/cn/ 3、使用帮助文档 4、发布到华为应用商店 文档中心

多模态大语言模型(MLLM)-Blip2深度解读

前言 Blip2是一个多模态大语言模型&#xff0c;因其提出时间较早&#xff08;2023年&#xff09;&#xff0c;且效果较好&#xff0c;很快成为一个标杆性工作。Blip2中提出的Q-former也成为衔接多模态和文本的重要桥梁。 Blip2发表时间是2023年&#xff0c;现在引用已经3288了…

事件抽取(Event Extraction, EE)

一、引言 事件抽取&#xff08;Event Extraction, EE&#xff09;是信息抽取领域中的一个重要任务&#xff0c;旨在从非结构化文本中识别和抽取事件相关的信息。事件抽取通常包括识别事件触发词、事件类型以及事件中的参与者、时间、地点等元素&#xff0c;最终将这些信息结构…

常见的基础系统

权限管理系统支付系统搜索系统报表系统API网关系统待定。。。 Java 优质开源系统设计项目 来源&#xff1a;Java 优质开源系统设计项目 | JavaGuide 备注&#xff1a;github和gitee上可以搜索到相关项目

【含文档】基于Springboot+Android的房屋租赁App(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

【JavaEE】【多线程】进程与线程的概念

目录 进程系统管理进程系统操作进程进程控制块PCB关键属性cpu对进程的操作进程调度 线程线程与进程线程资源分配线程调度 线程与进程区别线程简单操作代码创建线程查看线程 进程 进程是操作系统对一个正在运行的程序的一种抽象&#xff0c;可以把进程看做程序的一次运行过程&a…

IMS添加实体按键流程 - Android14

IMS添加实体按键流程 - Android14 1、实体按键信息&#xff08;Mi 9 左侧实体按键&#xff09;2、硬件添加2.1 内核添加设备节点2.2 Generic.kl映射文件2.3 映射文件文件加载loadKeyMapLocked2.4 addDeviceLocked 添加设备相关对象 3、keycode对应scankode4、KeyEvent.java 添加…

京东云主机怎么用?使用京东云服务器建网站(图文教程)

京东云主机怎么用&#xff1f;非常简单&#xff0c;本文京东云服务器网jdyfwq.com使用以使用京东云服务器搭建WordPress博客网站为例&#xff0c;来详细说下京东云主机的使用方法。使用京东云服务器快速搭建WordPress网站教程&#xff0c;3分钟基于应用镜像一键搞定&#xff0c…

python之详解字符串

由字符组成的序列&#xff0c;可以用单引号或双引号括起来。 1、通过下标获取字符串的字符 1.1、获取单个字符 若要获取字符串中某一个字符&#xff0c;可以通过 字符串名[index] 索引下标的方式获取。 索引的初始值为0&#xff0c;最大值为字符串长度-1。 切记&#xff0…

一、图解C#教程

一、堆和栈 程序运行时&#xff0c;数据存储在内存中。 使用堆和栈来存储数据 1、栈 栈是一个内存数组&#xff0c;先进后出原则。 可以存储&#xff1a;某些类型变量的值&#xff1b;程序当前执行环境&#xff1b;传递给方法的参数&#xff1b; 入栈&#xff1a;把数据放…

自动驾驶-问题笔记-待解决

参考线的平滑方法 参考线平滑算法主要有三种&#xff1a; 离散点平滑&#xff1b;螺旋曲线平滑&#xff1b;多项式平滑&#xff1b; 参考链接&#xff1a;参考线平滑 对于平滑方法&#xff0c;一直不太理解平滑、拟合以及滤波三者的作用与区别&#xff1b; 规划的起点&#x…

计算机网络——email

pop3拉出来 超出ASCII码范围就不让传了 这样就可以传更大的文件

Ubuntu 安装 Docker Compose

安装Docker Compose # 删除现有的 docker-compose&#xff08;如果存在&#xff09; sudo rm -f /usr/local/bin/docker-compose ​ # 下载最新的 docker-compose 二进制文件 sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-…

JavaScript for循环语句

for循环 循环语句用于重复执行某个操作&#xff0c;for语句就是循环命令&#xff0c;可以指定循环的起点、终点和终止条件。它的格式如下 for(初始化表达式;条件;迭代因子){语句} for语句后面的括号里面&#xff0c;有三个表达式 初始化表达式(initialize):确定循环变量的初始…

[C语言]指针和数组

目录 1.数组的地址 2.通过指针访问数组 3.数组和指针的不同点 4.指针数组 1.数组的地址 数组的地址是什么&#xff1f; 看下面一组代码 #include <stdio.h> int main() { int arr[5] {5,4,3,2,1}; printf("&arr[0] %p\n", &arr[0]); printf(&qu…

LeetCode讲解篇之139. 单词拆分

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们使用一个数组记录字符串s在[0, i)区间能否使用wordDict组成 我们使用左右指针遍历字符串s的子串&#xff0c;左指针 j 为子串的左端点下标&#xff0c;右指针 i 为右端点下标的下一个 遍历过程中如果字符串s…