Python---“双城人生模拟”

        前言·

在平时大家容易在微信的小程序里面或者网页端玩过“文字类的游戏人生模拟器”;接下来用Python实现这个。    (因为完整的程序代码较多, 此处我只实现其中的一部分逻辑

1.设置初始属性

在游戏中设定四个属性:
  • 颜值 (face)
  • 体质 (strong)
  • 智力 (iq)
  • 家境 (home)

我们约定每个属性的范围为 [1, 10], 并且总和不能超过 20。

可能会出现玩家输入初始属性不合理, 就提示输入有误, 重新输入,所以要预防,比较玩家千千万,总有那么几个输错的      /(ㄒoㄒ)/~~。

print('+-------------------------------------------+')
print('|                                           |')
print('|                 双城人生模拟                |')
print('|                                           |')
print('|       人生重来无数次,这次总该赢了吧?         |')
print('|                                           |')
print('+-------------------------------------------+')
# 对各种属性的循环判断
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("初始属性设定完成!")
    print(f'颜值:{face}, 体质:{strong}, 智力: {iq},家境:{home}')
    break

2. 设置性别

通过 random.randint(1, 6) 生成一个 [1, 6] 的随机整数 , 类似于掷色子。
  • 如果是单数, 则性别设为男孩
  • 如果是双数, 则性别设为女孩.
男孩和女孩会遇到不同的事件。
point = random.randint(1, 6)
if point % 2 == 1:
    gender = 'boy'
    print("你是男孩")
else:
    gender = 'girl'
    print("你是女孩")
随机数: 
#要实现随机数,要使用random.randint(beg,end)这个模块,[beg,end]是闭区间
#实现1-6的随机数
point = random.randint(1, 6)

 ⭐⭐⭐使用这个随机数这个模块,记得在最上面引入

import random

3.设置出生点

依据家境(用 home 表示)将其划分为四个档位。各档位的具体划分及对应的属性影响规则如下:

  • 当家境数值为 10 时,处于第一档,该档位能为角色带来最高的属性加成。
  • 若家境数值在 7 到 9 这个区间(包含 7 和 9),属于第二档,此档位也会为角色提供一定的属性加成。
  • 当家境数值处于 4 到 6 这个范围(包含 4 和 6),处于第三档,该档位为角色提供的属性加成相对较少。
  • 要是家境数值在 1 到 3 这个区间(包含 1 和 3),则处于第四档,此档位不仅不会提供加成,反而会扣掉角色的部分属性。
 

        在完成上述家境档位划分后,需要模拟扔一次色子的操作,生成一个范围在 1 到 3 之间的随机数,这个随机数用于表示每种细分情况,而代码的实现主要是通过一系列的 if - else 语句来完成。

point = random.randint(1, 3)
if home == 10:
    print("你出生在菲罗斯家族,是一个科技和商业闻名的大家族,加入卡米尔的麾下,你有望掌握海克斯科技并且加入议会!")
    face += 1
    iq += 2
    home += 3
elif 7 <= home <= 9:
    if point == 1:
        print("你出生在下城,隶属炼金男爵的麾下,利用微光科技和暴力手段巩固自己的权力,试图与上城的议会抗礼。")
        face -= 1
        iq += 2
        home += 3
        strong += 1
    elif point == 2:
        print("你出生在下城,加入炼金科技工会,获得会长的重视,负责炼金科技的生产和推广,为下城提供科技。")
        iq += 1
        strong += 3
    else:
        print("你出生在基西克家族,是皮尔特沃夫的执法官家族,你跟随你姐姐凯特琳巡逻上城。")
        face += 2
        iq += 1
        home +=2
        strong += 2
elif 4 <= home <= 6:
    if point == 1:
        print("你出生在吉拉曼家族,是一个富有的商业家族,专注贸易,获得梅尔的赞赏,你也有望加入议会。")
        face += 2
        iq += 2
        home += 2
        strong += 1
    elif point == 2:
        print("你出生在海斯拉家族,以财富和商业实力著称,专注于贸易和资源控制。霍斯克尔是你的叔叔,他想让你加入议会。")
        face += 2
        home += 1
    else:
        print("你出生在野火帮,加入艾克领导的反抗组织,反对炼金男爵的统治,致力于保护下城的底层民众。")
        face += 1
        strong += 3
else:
    if point == 1:
        print("你出生在上城,加入教育与培训机构,为年轻人提供海克斯科技或机械工程的学习机会。")
        face += 1
        home += 2
        strong += 2
    elif point == 2:
        print("你出生在上城,是一家娱乐休闲场所(音乐厅)的老板,整日沉迷如何赚钱。")
        face += 1
        iq += 2
        home -= 1
    else:
        print("你出生在下城,游走在地下黑市,出售偷来的物品、炼金科技产品或违禁品。")
        face += 1
        iq += 3
        home -= 1
        strong += 2
print(f'颜值:{face}, 智力:{iq},家境:{home},体质:{strong}')

4.人生经历

将人生按年龄划分为四个阶段:

  • 幼年阶段:[1, 10] 岁
  • 青年阶段:[11, 20] 岁
  • 壮年阶段:[20, 50] 岁
  • 老年阶段:50 岁以上
 

每个阶段人们所拥有的精力不同,发生的事件也各异。

 
  • 幼年阶段:此阶段个体可塑性极高,体质、颜值以及智力等方面都会快速变化。
  • 青年阶段:主要活动为求学,同时父母的状况会出现明显改变,自身的智力和家境也会有显著变化。
  • 壮年阶段:整体状态相对稳定,各项属性变化不明显,主要是一些随机事件会对属性产生影响。
  • 老年阶段:体质、颜值和智力均会显著衰退,并且随着年龄增长,患病风险以及面临死亡的可能性逐渐增大。
 

        这里以幼年阶段为例,简单实现相关处理逻辑。通过 for 循环,按照年龄逐年进行循环。对于每一年,先进行一次 [1, 3] 的随机数生成(类似掷色子),依据生成的不同随机数值触发不同事件。并且根据个体的性别、年龄以及各种属性,利用 if - else 语句来组织触发不同事件。不同事件对属性的影响有正面也有负面。在每一年结束时,打印出这一年所遇到的事情。若发生夭折情况,则直接通过 sys.exit (0) 退出程序。另外,使用 time.sleep (1) 让程序暂停执行 1 秒,以便更清晰地观察程序运行结果。

syssystem的缩写,和time都是Python提供的模块,sleep的功能是使程序每条运行的时间,单位是秒

 ⭐⭐⭐使用这个两个个模块,记得在最上面各自引入!

import sys
import time
for age in range(1,11):
    info=f'你今年{age}岁,'
    point = random.randint(1, 3)
    #从性别来触发事件
    if gender == 'girl' and home <= 4 and point == 1:
        info += f'你家里人重男轻女,决定将你抛弃在下城自生自灭!'
        print(info)
        print("游戏结束")
        sys.exit(0)
 # 体质触发的事件
    elif strong < 4 and point != 3:
        info += '你生了一场病, '
        if home >= 4:
            info += '在父母的精心照料下恢复了健康'
            strong += 1
            home -= 1
        else:
            info += '你的父母没精力管你, 你的身体状况更糟糕了'
            strong -= 1
# 颜值触发的事件
    elif face <= 4 and age >= 7:
        info += '你因为长的太丑, 别的小朋友不喜欢你, '
        if iq > 4:
            info += '你决定用学习填充自己'
            iq += 1
        else:
            if gender == 'boy':
                info += '你和别的小朋友经常打架'
                iq -= 1
                strong += 1
            else:
                info += '你经常被别的小朋友欺负'
                strong -= 1
# 智商触发的事件
    elif iq < 5:
         info += '你看起来傻傻的, '
         if home >= 5 and age >= 6:
             info += '你的父母给你送到更好的学校学习'
         elif 4 <= home <= 6:
            if gender == 'boy':
                info += '你的父母鼓励你多运动, 加强身体素质'
                strong += 1
            else:
                info += '你的父母鼓励你多打扮自己'
                face += 1
         else:
            info += '你的父母为此经常吵架'
            if point == 1:
                strong -= 1
            elif point == 2:
                iq -= 1
            else:
                pass
# 健康成长
    else:
        info += '你健康成长,'
        if point == 1:
            info += '看起来更聪明了'
            iq += 1
        elif point == 2:
            info += '看起来更好看了'
            face += 1
        else:
            info += '看起来更结实了'
            strong += 1

5.结束

在结尾的时候记得打印下来最终的四个属性,便于观察。

    print('-------------------------------------------')
    print(info)
    print(f'strong={strong}, face={face}, iq={iq}, home={home}')
    time.sleep(1)

-----------------------------------------------------结束语-------------------------------------------------------------- 

春风若有怜花意,可否许我在少年!

这个小游戏挺简单的,当然在人生经历这一块我就只写的幼年的,至于后面的都是重复写的,上述的完整代码可以去Giteehttps://gitee.com/wake-up-after-dark/

这里的仓库(pythonProject) 中的good.py。 

咳咳咳~~因为我玩游戏都是随便玩玩,对数值这一块欠缺很多,所以,代码运行出结果的时候可能上句的因对不住下局果,所以想借用的朋友,记得自己改一下数值哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

J 2

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

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

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

打赏作者

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

抵扣说明:

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

余额充值