【Python】人生重开模拟器(实现代码)

一、游戏背景介绍

这是一款文字类小游戏。玩家输入角色的初始属性之后,就可以开启不同的人生经历。

完整的程序代码较多,此这里只实现其中的一部分逻辑(主要目的:巩固前面学习的 Python 语法基础)。


二、设置初始属性

在游戏中我们设定四个属性:
  1. 颜值(face)
  2. 体质(strong)
  3. 智力(iq)
  4. 家境(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 则是多个分支只能进入一个,一旦某个条件满足了,就不会再走其它分支了
    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(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("你是个女孩")


四、设置出生点

首先按照家境( home), 分成四个档位:
  1. 10 是第一档,加成最高。
  2. [7, 9] 是第二档,也有一些加成。
  3. [4, 6] 是第三档,加成较少。
  4. [1, 3] 是第四档,会扣掉属性。

再扔一次骰子,生成 [1, 3] 的随机数,用来表示每一种细分情况。

这里的代码主要就是各种 if-else 构成:

# 设置出生点
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('你出生在三线城市, 你的父母是教师')
        iq += 1
    elif point == 2:
        print('你出生在镇上, 你的父母是医生')
        strong += 1
    else:
        print("你出生在镇上, 你的父母是个体户")
        home += 1
else:
    # 第四档
    if 1 <= point <= 2:
        print('你出生在农村里, 你的父母是辛苦劳作的农民')
        strong += 1
        face -= 2
    elif 3 <= point <= 4:
        print('你出生在穷乡僻壤, 你的父母是无业游民')
        home -= 1
    else:
        print('你出生在镇上, 你父母感情不和')
        strong -= 1
print(f'颜值:{face}, 体质:{strong}, 智力:{iq}, 家境:{home}')


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

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

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

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

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

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

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

青年、壮年、老年的相关逻辑也是类似的方法,这里就不再详细写了。

"人生重开模拟器"通常是指一种游戏或编程项目,玩家在游戏中通过设定各种条件,体验不同的人生路径。而将修仙元素融入这种模拟器,可能会涉及到角色扮演和策略设计的部分。具体的代码实现会包含以下几个部分: 1. **角色管理**:创建人物类,包括基础属性如生命值、法力值,以及修炼等级等。 2. **事件驱动**:利用条件分支结构,比如随机生成修行任务、机缘巧合等,触发不同的剧情发展。 3. **修炼系统**:编写函数来描述修炼过程,比如每日打坐、服用丹药提升修为。 4. **战斗模块**:如果游戏中有对抗机制,可以添加战斗算法,根据双方修为决定胜负。 5. **资源获取和消耗**:设计获取资源(如灵石、药材)的逻辑,并控制修炼、升级所需资源。 6. **GUI界面**:可选的图形用户界面,显示角色状态、世界地图等信息。 由于这需要具备一定的编程知识和理解游戏开发的基本流程,下面提供一个简化的伪代码示例: ```python class Player: def __init__(self, name, initial_health, initial_mana): self.name = name self.health = initial_health self.mana = initial_mana self.level = 1 def practice(self): # 学习和修炼 ... def fight(self, enemy): # 战斗逻辑 ... # 主程序 def game_loop(): player = Player("张三", 100, 50) while True: event = random.choice(["修炼", "遇敌"]) if event == "修炼": player.practice() elif event == "遇敌": enemy = Enemy(random.randint(1, 10)) player.fight(enemy) game_loop() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炫酷的伊莉娜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值