<人生重开模拟器>——《Python项目实战》

Python172

<人生重开模拟器>——《Python项目实战》

目录

1.模拟实现 "人生重开模拟器"

1.1 问题导引:

1.2 问题分析:

2. 模拟实现分析及步骤:

3.完整源码:

4.写在最后的话:

后记:●由于作者水平有限,文章难免存在谬误之处,敬请读者斧正,俚语成篇,恳望指教!

——By 作者:新晓·故知

1.模拟实现 "人生重开模拟器"

1.1 问题导引:

GIF演示:
"人生重开模拟器"是一款文字类小游戏. 玩家可根据提示输入角色的初始属性之后, 就可以开启不同的人生经历. 具体可以网上搜索"人生重启模拟器",就能找到这款游戏的许多版本。

这里我们找到了一款版本用于演示: (以下图片源于网络,这里只用于演示学习)
链接网址:人生重启模拟器 游戏界面:
这里我们选择"技能"拉满选项(幻想一下那些我们所羡慕的故事里的开挂人生):
<人生重开模拟器>——《Python项目实战》
<人生重开模拟器>——《Python项目实战》
<人生重开模拟器>——《Python项目实战》
<人生重开模拟器>——《Python项目实战》
以上就是我们在网上搜索用于演示的"人生重启模拟器"游戏, 原来故事里的"开挂人生"是如此的顺利平坦,令人羡慕,作者自愧不如,而那终究是幻想,认清现实,依旧负重前行!

友情提示:适当参与游戏放松,过度游戏有害健康!

1.2 问题分析:

其实这款游戏的底层逻辑就是编程语言语句的交互运用。通过不同的语句交互(例如顺序语句、循环语句、判断语句等)根据不同的数据数值,执行相应的语句,打印相应的文字。
那么我们接下来就使用Python语言模拟实现这款游戏。由于完整的程序代码较多,此处我们 只实现其中的一部分逻辑,用于演示并巩固我们之前所学的Python的知识。

2. 模拟实现分析及步骤:

(1) 设置角色初始属性
在游戏中我们设定四个属性 .

  • 颜值(face)
  • 体质(strong)
  • 智力(iq)
  • 家境(home)

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

如果玩家输入的初始属性不合理 , 就提示输入有误 , 重新输入。
<人生重开模拟器>——《Python项目实战》

(2) 设置生成角色的性别
通过 random.randint(1, 6) 生成一个 [1, 6] 的随机整数。

  • 如果是单数,则性别设为男孩
  • 如果是双数,则性别设为女孩.

男孩和女孩会遇到不同的事件 .
<人生重开模拟器>——《Python项目实战》

(3) 设置角色的出生环境及背景
首先按照家境 (home), 分成四个档位 .

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

生成 [1, 3] 的随机数 , 用来表示每一种细分情况 .
这里的代码主要就是各种 if else 构成
<人生重开模拟器>——《Python项目实战》

(4)对角色的不同人生阶段添加测试用例:
按照年龄 , 把人生经历分成四个阶段 :

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

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

  • 童年阶段可塑性强,体质,颜值,智力都会有较快变化
  • 青年阶段主要是求学,同时父母一辈会有明显变化,智力和家境会有明显变化.

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

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

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

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

  • 针对每一年,先生成[1, 3]档,根据不同的随机数值,来触发不同的事件.

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

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

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

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

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

童年阶段:
<人生重开模拟器>——《Python项目实战》

说明:由于是模拟实现"人生重启模拟器",因此我们把基本原理学会后,可自行添加"脑洞大开"的人生经历,这里只简单的举例用于演示。

青年阶段:
<人生重开模拟器>——《Python项目实战》
<人生重开模拟器>——《Python项目实战》
<人生重开模拟器>——《Python项目实战》

3.完整源码:

人生重开模拟器

import random
import sys
import time

print("***************************************************")
print('*                                                 *')
print('*             《人生模拟重启器》——Python版            *')
print('*                                                 *')
print('*                                                 *')
print('*              但惜今生,不问来世                    *')
print('*                             ——By  作者:新晓·故知 *')
print('*                                                 *')
print("***************************************************")

#1. 设置角色初始属性
颜值、体质、智力、家境,这几项属性点数总和不能超过设定的阈值(这里我们设置为20), 每一项取值都是 1-10 之间

使用循环, 使玩家在输入错误的时候, 可以重新输入.

while True:
    #尽管是while True,但不一定是死循环,可以在代码块里使用break跳出整个循环
    print("请设置初始属性(可用属性点总数为 20)")
    face = int(input("请输入颜值属性点数(1-10):"))
    strong = int(input("请输入体质属性点数(1-10):"))
    iq = int(input("请输入智力属性点数(1-10):"))
    home = int(input("请输入家境属性点数(1-10):"))

    # 通过使用条件语句, 对于玩家输入的属性值做出校验检查
    # 以下这段逻辑, 也可以使用elif:使用 elif 则是多个分支只能进一个, 一旦某个条件满足了, 就不会再走其他的分支了.

    # 这里虽然没有使用 elif , 但是使用了 continue, 一旦某个条件满足, continue 就会跳出本次循环, 后续的条件判定不再执行
    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(beg, end), 就能生成 [beg, end] 随机整数

point = random.randint(1, 6)
#此处的random是python中的一个模块! 相当于C++中的STL(封装好的代码块,我们直接使用即可!)
#这里使用其他模块,需要先使用import语句,把模块的名字"导入"进来,pycharm有自动导入的功能
print(f'point = {point}')
if point % 2 == 1:
    gender = 'boy'
    print('你出生了,是个男孩。')
else:
    gender = 'girl'
    print('你出生了,是个女孩。')

3.设置角色的出生环境及背景
为了简单方便, 这里我们就直接生成 1-3 的随机数进行模拟
#这里我们将角色的家庭背景及环境设置四个档位梯度,不同档位会对属性有加成或减低
point = random.randint(1, 3)
if home == 10:
    # 第一档
    print('你出生在首都, 你的父母是高官政要')
    home += 1
    iq += 1
    face += 1
elif 7 = 5:
            info += '在父母的悉心照料下, 你康复了'
            strong += 1
            home -= 1
        else:
            info += '你的父母无法照料你, 你的身体每况愈下'
            strong -= 1
    # 颜值触发的事件
    elif face = 7:
        info += '你由于很丑, 其他小朋友不喜欢你. '
        if iq > 5:
            info += '你决定通过学习提升自己!'
            iq += 1
        else:
            if gender == 'boy':
                info += '你和别的小朋友经常打架!'
                strong += 1
                iq -= 1
            else:
                info += '你经常被别的小朋友欺负!'
                strong -= 1
    # 智商触发的事件
    elif iq < 5:
        info += '你有点呆呆的 '
        if home >= 8 and age >= 6:
            info += '你的父母把你送到更好的学校学习'
            iq += 1
        elif 4  6 and point < 3:
        info += '你参加省级运动会,并获得了金牌'
        if  home >= 5:
            info += '你被以"体育特长生"的名义保送到顶尖大学深造'
            home += 1
            strong += 1
        else:
            info += '你的体育天赋被埋没...'
            home -= 2
            face -= 1
    #颜值触发的事件
    elif face >=5 and home >= 7:
        info += '你被许多人喜欢,如众星捧月'
        if iq > 5:
            info += '你颜值、家境、才华并存,人生顺利平坦'
            home += 1
        else:
            info += '你出身条件好,但却不能自立自强'
            iq -= 2
    # 打印这一年发生的事情
    print(info)
    print(f'颜值: {face}, 体质: {strong}, 智力: {iq}, 家境: {home}')
    print('------------------------------------------------------')
    # 为了方便观察, 加一个小小的暂停操作
    time.sleep(1)
#6.壮年阶段
for age in range(20,50):
    info = f'你今年{age}岁.'
    point = random.randint(1,3)
    #性别触发的事件
    if gender == 'boy' and iq > 7:
        info +='你事业有成,家庭和睦'
        home += 2
        face += 1
    else:
        if home = 6:
        info += '你子孙满堂,晚年享福'
        home += 1
        strong += 1
    #体质触发的事件
    elif strong > 5 and  iq > 6:
        info += '你是工作单位骨干,领导成员攻坚克难'
        if face >= 5:
            info += '你被应邀担任单位发言人'
            home += 2
        else:
            #Do Nothing!

            pass
    # 打印这一年发生的事情
    print(info)
    print(f'颜值: {face}, 体质: {strong}, 智力: {iq}, 家境: {home}')
    print('------------------------------------------------------')
    # 为了方便观察, 加一个小小的暂停操作
    time.sleep(1)

说明:
import random
import sys
import time
这是导入的封装好的模块,直接使用,方便简单。

4.写在最后的话:

"从某一方面来说,人生是选择出来的。虽然我们不能选择和决定我们的原生家庭,但是我们以后的人生走向却取决于我们此刻的选择与努力!
不必抱怨命运不公,我们从底层一路走来,见识过许许多多的人和事,也学会从不同角度看待这个社会。我们所经历的困苦与磨难,从某种角度而言,何尝不是独特的人生经历呢?
我们的人生,非言语所能概括和衡量!那些外人看不出、猜不透的故事才组成了我们的这一生!不要轻易否定一切,从不同角度看待,或许又是另一种理解。
我们的未来就在我们的脚下,但行好事,负重前行,别停留!"

后记: ●由于作者水平有限,文章难免存在谬误之处,敬请读者斧正,俚语成篇,恳望指教!

——By 作者:新晓·故知

Original: https://blog.csdn.net/m0_57859086/article/details/127464321
Author: 新晓·故知
Title: <人生重开模拟器>——《Python项目实战》