当前位置:   article > 正文

Python实现简单版本的人生重开模拟器_重开人生模拟器开发原理

重开人生模拟器开发原理

介绍

“人生重开模拟器”,这是一款文字类小游戏,在百度也可以直接搜到各种网页版本。
玩家输入角色的初始属性之后,就可以开启不同的人生经历。
这里只是简单的实现一下(不然代码量太多)

1. 设置初始属性

在游戏中我们设定4个属性

  • 颜值(face)
  • 体质(strong)
  • 智力(iq)
  • 家境(home)
    我们约定每个属性的范围为[1,10],并且4个属性的总和不能超过20.

如果玩家输入的值有误,或者超过就重新输入

# 设置属性值
while True:
    print('请依次输入,颜值、体质、智力、家境(总和不能超过20)')
    count = 20
    face = int(input('请输入颜值0~10: '))
    if face < 1 or face > 10 or face > 20:
        print('设置的值违规')
        continue
    count -= face
    strong = int(input('请输入体质0~10: '))
    if strong < 1 or strong > 10 or strong > count:
        print('设置的值违规')
        continue
    count -= strong
    iq = int(input('请输入智力0~10: '))
    if iq < 1 or iq > 10 or iq > count:
        print('设置的值违规')
        continue
    count -= iq
    home = int(input('请输入家境0~10: '))
    if home < 1 or home > 10 or home > count:
        print('设置的值违规')
        continue
    if face + strong + iq + home <= 20:
        print('属性设置完成,随机生成性别...')
        break
    else:
        print('属性值设置错误总和不能超过20')

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

2. 设置性别

通过random.randint(1,6)的随机整数,类似于色子

  • 如果生成的是奇数就是男孩
  • 如果生成的是偶数就是女孩
  • 男孩和女孩会遇到不同的事件.
# 随机生成性别
sex = random.randint(1, 6)
if sex % 2 == 0:
    sex = 'girl'
    print('游戏开始你是一个女孩')
else:
    sex = 'boy'
    print('游戏开始你是一个男孩')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

3. 设置出生点

首先按照家境(home),分成4个档次

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

再生成[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('你出生在三线城市,你的父母是老师')
        iq += 1
    elif point == 2:
        print('你出生在镇上,你的父母是医生')
        strong += 1
    else:
        print('你出生在镇上,你的父母是个体户')
        home += 1
else:
    if point == 1:
        print('你出生在村里,你的父母是辛苦劳作的农民')
        strong += 1
        face -= 2
    elif point == 2:
        print('你出生在穷乡僻壤,你的父母是无业游民')
        home -= 1
    else:
        print('你出生在镇上,你父母感情不和')
        strong -= 1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

4. 针对每一岁生成人生经历

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

  • 幼年阶段 [1, 10]
  • 青少年阶段 [11, 25]
  • 壮年阶段 [25, 50]
  • 老年阶段 50 岁以上.

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

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

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

  • 使用 for 循环, 按照年龄循环起来.
  • 针对每一年, 随机生成1~3的数字, 根据不同的随机数值, 来触发不同的事件.
  • 根据性别, 年龄, 各种属性, 来触发不同的事件. 这里都使用 if - else 的方式来组织.
  • 不同的事件可能会对属性有正面/负面的影响.
  • 在每一年的最后, 打印这一年遇到的事情.
  • 如果夭折, 则直接 sys.exit(0) 退出程序.
  • 使用 time.sleep(2) 使程序暂停执行 2s, 方便观察程序结果.
# 生成人生经历
for age in range(1, 60):
    info = f'你今年{age}岁'
    point = random.randint(1, 3)
    # 触发性别事件
    if sex == '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
            if strong <= 0:
                print('你没有战胜病魔去世了')
                sys.exit(0)
    # 颜值触发事件
    elif face < 4 and age >= 7:
        info += '你因为长的丑,遭到别的小朋友嫌弃,'
        if iq > 5:
            info += '你决定用学习填充自己'
            iq += 1
        else:
            if sex == 'boy':
                info += '你和别的小朋友经常打架'
                iq -= 1
                strong += 1
            else:
                info += '你经常被别的小朋友欺负'
                strong -= 1
    # 智商触发事件
    elif iq < 5:
        info += '你看起来傻傻的,'
        if home >= 8 and age >= 6:
            info += '你的父母给你送到更好的学习学习'
            iq += 1
        elif 4 <= home <= 7:
            if sex == 'boy':
                info += '你的父母鼓励多运动,加强身体素质'
                strong += 1
            else:
                info += '你的父母鼓励你多打扮自己'
                face += 1
        else:
            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:
            info += '看起来更结实了'
            strong += 1

    print('===============================================================================')
    print(info)
    print(f'颜值={face},体质={strong},智力={iq},家境={home}')
    time.sleep(2)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/191730
推荐阅读
相关标签
  

闽ICP备14008679号