【Python】人生重开模拟器

【Python】人生重开模拟器

这是一款之前很火的文字类小游戏,玩家在输入初始属性后,就可以开启不同的人生经历。现在简单的写一下这个小游戏(游戏的基本逻辑)

描述:我们设置这个小游戏有四个属性:颜值(face)、体质(strong)、智力(iq)、家境(home)。每个属性的范围为[1,10],并且这四个属性的总和不超过20。

1.写一下界面和设置初始属性:

界面:

print("+-----------------------------------------------------+")
print("|                                                     |")
print("|                                                     |")
print("|                  花有重开日,人无在少年!                |")
print("|                                                     |")
print("|                  欢迎来到,人生重开模拟器!               |")
print("|                                                     |")
print("+-----------------------------------------------------+")

初始属性:

#设置初始属性
#颜值(face)、体质(strong)、智力(iq)、家境(home)
#while True这个循环是为了在玩家输入错误时可以重新输入!
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

2.设置性别:

这里我们用一个random.randint(1,6)生成随机整数(相当于骰子点数)来实现:

  • 如果是单数,则是男孩;

  • 如果是双数,则是女孩。

  • 男孩和女孩会发生不同的事件。

#在使用random函数时,要在前面加上import random
point=random.randint(1,6)
if point%2==0:
    gender="girl"
    print("你是个女孩")

if point%2==1:
    gender="boy"
    print("你是个男孩")

3.设置出生点(家境+随机数):

按照家境分为四个档次:

  • 满分10分为第一档,加成最高;

  • 7-9分为第二档,加成低于第一档;

  • 4-6分为第三档,加成较少;

  • 1-3分为第四档,会扣初始属性。

再次投骰子,生成1-3的随机数,用来细分每一种情况(这里为了简化,所以只设置了3种情况,当然想写就可以写多一些!)

point=random.randint(1,3)
if home==10:
    print("你出生在帝都,你的父母是高官政要")
    home+=1
    iq+=1
    face+=1
elif home>=7 and home<=9:
    if point==1:
        print("你出生在大城市,你的父母是公务员")
        face+=2
    elif point==2:
        print("你出生在大城市,你的父母是公司高管")
        home+=2
    else:
        print("你出生在大城市,你的父母是大学教授 ")
        iq+=2
elif home<=6 and home>=4:
    if point==1:
        print("你出生在三线城市,你的父母是教师")
        iq+=1
    elif point==2:
        print("你出生在镇上,你的父母是医生")
        strong+=1
    else:
        print("你出生在镇上,你的父母是个体户")
        home+=1
else:
    if point==1:
        print("你出生在村里,你的父母是幸苦劳作的农民")
        strong+=1
        face-=1
    elif point==2:
        print("你出生在穷乡僻壤,你的父母是无业游民")
        home-=1
    else:
        print("你出生在村里,你的父母感情不和")
        strong-=1

print(f'strong={strong},face={face},iq={iq},home={home}')
#这一句可以注释掉,不写这句也可!

4.针对每一岁,有不同的人生经历:

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

  • 幼年阶段 [1, 10]

  • 青年阶段 [11, 20]

  • 壮年阶段 [20, 50]

  • 老年阶段 50 岁以上

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

  • 幼年阶段可塑性强, 体质, 颜值, 智力都会有较快变化

  • 青年阶段主要是求学, 同时父母一辈会有明显变化, 智力和家境会有明显变化.

  • 壮年阶段相对平稳, 属性变化不大, 主要是一些随机事件影响到属性.

  • 老年阶段体质, 颜值, 智力都会显著退化, 并且随着年龄的上升, 疾病/死亡的风险逐渐升高.。

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

  • 使用 for 循环, 按照年龄循环起来.

  • 针对每一年, 先掷一次 [1, 3] 的色子, 根据不同的随机数值, 来触发不同的事件.

  • 根据性别, 年龄, 各种属性, 来触发不同的事件. 这里都使用 if - else 的方式来组织.

  • 不同的事件可能会对属性有正面/负面的影响.

  • 在每一年的最后, 打印这一年遇到的事情.

  • 如果夭折, 则直接 sys.exit(0) 退出程序.

  • 使用 time.sleep(1) 使程序暂停执行 1s, 方便观察程序结果

for age in range(1, 11):
    info = f'你今年 {age} 岁, '
    point = random.randint(1, 3)
    # 性别触发事件
    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 += 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:
            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'strong={strong}, face={face}, iq={iq}, home={home}')
    time.sleep
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值