首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python实现人生重开模拟器游戏.py--小白也能学会,简单易懂。

Python实现人生重开模拟器游戏.py--小白也能学会,简单易懂。

作者头像
Yubendan
发布2025-12-30 14:54:50
发布2025-12-30 14:54:50
1910
举报

接下来,我们用 Python 写一个文字游戏。

我们需要用到以下模块,具体用法下面会讲解

游戏思路

实现过程

打印菜单

简单易懂,不过多解释,直接看图:

设置初始属性

同时对剩余属性点进行对用户的提醒

代码语言:javascript
复制
print("请设置初始属性(可用点数为20)")
    face = int(input("请输入颜值(1~10):"))
    print(f"属性点还剩{20 - face}点。")
    strong = int(input("请输入体质(1~10):"))
    print(f"属性点还剩{20 - face - strong}点。")
    iq = int(input("请输入智力(1~10):"))
    print(f"属性点还剩{20 - face-strong - iq}点。")
    home = int(input("请输入家境(1~10):"))
    print(f"属性点还剩{20 - face - strong - iq -home}点。")

为了防止用户输入错误,我们用 if 语句进行对用户输入值的一种判断

同时用 while 语句返回,使用户重新输入

代码语言:javascript
复制
# 使用循环使玩家在输入错误时重新输入
while True:
    print("请设置初始属性(可用点数为20)")
    face = int(input("请输入颜值(1~10):"))
    print(f"属性点还剩{20 - face}点。")
    strong = int(input("请输入体质(1~10):"))
    print(f"属性点还剩{20 - face - strong}点。")
    iq = int(input("请输入智力(1~10):"))
    print(f"属性点还剩{20 - face-strong - iq}点。")
    home = int(input("请输入家境(1~10):"))
    print(f"属性点还剩{20 - face - strong - iq -home}点。")


    # 通过条件语句对用户输入的值进行检查

    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

这段逻辑使用 elif 也是可以的。

使用 elif 则是多个分支只能进一个,一个条件满足就不会进入其他分支。

这里的 continue 一旦一个条件满足就跳出本次循环,也不会进入其他分支,效果一致。

随机生成角色性别

这边我们使用随机数,来对角色的性别进行一个随机生成。

奇数代表男孩,偶数代表女孩。

当然使用随机数就需要导入我们的 random 模块了。

代码语言:javascript
复制
# 生成角色的性别
# 使用 random.randint(beg,end),生成[beg,end] 随机整数

point = random.randint(1,6)
if point % 2 == 1:
    gender = "boy"
    print("你是个男孩。")
else:
    gender = "girl"
    print("你是个女孩。")

随机生成出生地

提到随机,当然必不可少的还是我们的随机数。

为了方便,就直接生成 1~3 的随机数。

每一个数字代表一种可能。

同时根据家境的初始值和随机数分成不同档次,并且根据家境不同带来属性加成。

代码语言:javascript
复制
# 设置角色的出身地
# 为了简单,就直接生成 1~3 的随机数
point = random.randint(1,3)
if home == 10:  # 第一档次
    print("你出生在皇宫,你是皇子")
    home += 1
    iq += 1
    face += 1
elif 7 <= home <= 10:  # 第二档次
     if point == 1:
         print("你出生在帝都,你是将军的孩子")
         strong += 2
         home += 2
     elif  point == 2:
         print("你出生在帝都,你是宰相的孩子")
         iq += 2
         home += 2
     else:
         print("你出生在帝都,你是皇帝的私生子")
         iq += 2
         strong += 1
         home += 1

elif 4 <= home <= 7:  # 第三档次
    if point == 1:
        print("你出生在镇上,你是铁匠的孩子")
        strong += 1
    elif point == 2:
        print("你出生在镇上,你是医师的孩子")
        iq += 1
    else:
        print("你出生在镇上,你是富商的孩子")
        iq += 1
        strong += 1
else:               # 第四档次
    if point == 1:
        print("你出生在野外,你是个乞丐")
        strong -= 1
        face -= 2
        home -= 2
    elif point == 2:
        print("你出生在农村,你是农民的孩子")
        iq -= 1
        face -= 1
        home -= 1
    else:
        print("你出生在镇里,你是普通家庭的孩子")

# 再输出一次状态

print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")

 实现随机事件

我们将人的一生分为多个阶段,并且每年进行一种随机事件。

同时结合我们的随机数增加更多可能。

我们先写幼年阶段

首先,遍历我们的幼年年龄,对每一年进行一个随机事件。

代码语言:javascript
复制
for age in range(1,11):
        // 随机事件

为了方便我们将一整年的打印都整理到一个字符串里,在这一年的结尾统一打印。

代码语言:javascript
复制
info = f"你今年{age}岁。"

接下来我们开始写事件,分多种属性触发,增加我们的随机性:

性别触发随机事件
代码语言:javascript
复制
    if gender == "girl" and home <= 6 and point == 3:
        info += "你家里人重男轻女,你被遗弃了。"
        print(info)
        print("游戏结束!")
        sys.exit(0)

可以看见,我们这里用 sys.exit(0) 使我们的程序退出结束。

所以,我们需要导入我们的 sys 模块。

体质触发随机事件

家境不同得出不同结果。

代码语言:javascript
复制
    elif  strong < 5 and home <= 4 and point == 2:
        info += "你生了一场病。"
        if home >= 5:
            info += "你在父母的细心照顾下康复了。"
            strong += 1
            home -= 1
        else:
            info += "你的家境不好无法帮你医治。"
            strong -= 1
颜值触发随机事件

根据性别不同得出不同处理方法

代码语言:javascript
复制
    elif face <= 4 and age >= 5:
        info += "你长得太丑了,别的小朋友不喜欢你。"
        if iq >= 5:
            info += "你决定用学习充实自己。"
            iq += 2
        else:
            if gender == "boy":
                info += "你经常和他们打架。"
                if strong <= 4:
                    info += "你打不过他们,被欺凌至死。"
                    print(info)
                    print("游戏结束!")
                    sys.exit(0)
                else:
                    info += "他们都打不过你,但都不和你玩了。"
                    strong += 2
            else:
                info += "你经常被欺负。"
                strong -= 2
智商触发随机事件

根据家境不同,不同情况。

代码语言:javascript
复制
    elif iq <= 5 and point == 3:
        info += "你看起来并不聪明"
        if home <= 5:
            info += "你的家境并不好,无法送你去学习。"
        else:
            info += "你的家境不错,被送进私塾里学习。"
            iq += 2
以上都不触发

以上都不触发,可见我们健康成长。

并随着年纪增长,属性值得到增长。

代码语言:javascript
复制
 else:
        info += "你健康成长。"
        strong += 1
        iq += 1
        face += 1

 其他阶段都是大同小异,就不多写了。

优化用户体验

为了使用户便于观察所以我们每次都打印一下属性栏。

并且增加每年的分割线。

不知道大家有没有发现,我们还有一个模块没有使用。

就是我们的 time 模块。

我们将使用这个模块使我们的程序每次都暂停1s。

方便我们用户的体验。

代码语言:javascript
复制
    print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")
    print("----------------------------------------------------------")
    # 为了方便观察暂停1s
    time.sleep(1)

整体代码展示,带注释

代码语言:javascript
复制
# 人生重开模拟器~
# by-于本淡

import random
import sys
import time

#菜单
print(" +----------------------------------------------+ ")
print(" |                                              | ")
print(" |          花有重开日,人无再少年。               |  ")
print(" |                                              |  ")
print(" |          欢迎来到人生重开模拟器!               |  ")
print(" |                                              | ")
print(" |                               by-于本淡       | ")
print(" |                                              | ")
print(" +----------------------------------------------+")

# 设置初始属性
# 颜值,体质,智力,家境,取值1~10之间,总值不超过20.

# 使用循环使玩家在输入错误时重新输入
while True:
    print("请设置初始属性(可用点数为20)")
    face = int(input("请输入颜值(1~10):"))
    print(f"属性点还剩{20 - face}点。")
    strong = int(input("请输入体质(1~10):"))
    print(f"属性点还剩{20 - face - strong}点。")
    iq = int(input("请输入智力(1~10):"))
    print(f"属性点还剩{20 - face-strong - iq}点。")
    home = int(input("请输入家境(1~10):"))
    print(f"属性点还剩{20 - face - strong - iq -home}点。")

    # 通过条件语句对用户输入的值进行检查
    # 这段逻辑使用 elif 也是可以的
    # 使用 elif 则是多个分支只能进一个,一个条件满足就不会进入其他分支
    # 这里的 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


# 生成角色的性别
# 使用 random.randint(beg,end),生成[beg,end] 随机整数

point = random.randint(1,6)
if point % 2 == 1:
    gender = "boy"
    print("你是个男孩。")
else:
    gender = "girl"
    print("你是个女孩。")

# 设置角色的出身地
# 为了简单,就直接生成 1~3 的随机数
point = random.randint(1,3)
if home == 10:  # 第一档次
    print("你出生在皇宫,你是皇子")
    home += 1
    iq += 1
    face += 1
elif 7 <= home <= 10:  # 第二档次
     if point == 1:
         print("你出生在帝都,你是将军的孩子")
         strong += 2
         home += 2
     elif  point == 2:
         print("你出生在帝都,你是宰相的孩子")
         iq += 2
         home += 2
     else:
         print("你出生在帝都,你是皇帝的私生子")
         iq += 2
         strong += 1
         home += 1

elif 4 <= home <= 7:  # 第三档次
    if point == 1:
        print("你出生在镇上,你是铁匠的孩子")
        strong += 1
    elif point == 2:
        print("你出生在镇上,你是医师的孩子")
        iq += 1
    else:
        print("你出生在镇上,你是富商的孩子")
        iq += 1
        strong += 1
else:               # 第四档次
    if point == 1:
        print("你出生在野外,你是个乞丐")
        strong -= 1
        face -= 2
        home -= 2
    elif point == 2:
        print("你出生在农村,你是农民的孩子")
        iq -= 1
        face -= 1
        home -= 1
    else:
        print("你出生在镇里,你是普通家庭的孩子")

print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")

# 幼年阶段
for age in range(1,11):
    # 把一整年的打印都整理到一个字符串里,在这一年的结尾统一打印
    info = f"你今年{age}岁。"
    # 生成一个 [1,3] 的随机数
    point = random.randint(1, 3)
    # 接下来编写触发的事件

    # 性别触发的事件
    if gender == "girl" and home <= 6 and point == 3:
        info += "你家里人重男轻女,你被遗弃了。"
        print(info)
        print("游戏结束!")
        sys.exit(0)
    # 体质触发的事件
    elif  strong < 5 and home <= 4 and point == 2:
        info += "你生了一场病。"
        if home >= 5:
            info += "你在父母的细心照顾下康复了。"
            strong += 1
            home -= 1
        else:
            info += "你的家境不好无法帮你医治。"
            strong -= 1
    # 颜值触发随机事件
    elif face <= 4 and age >= 5:
        info += "你长得太丑了,别的小朋友不喜欢你。"
        if iq >= 5:
            info += "你决定用学习充实自己。"
            iq += 2
        else:
            if gender == "boy":
                info += "你经常和他们打架。"
                if strong <= 4:
                    info += "你打不过他们,被欺凌至死。"
                    print(info)
                    print("游戏结束!")
                    sys.exit(0)
                else:
                    info += "他们都打不过你,但都不和你玩了。"
                    strong += 2
            else:
                info += "你经常被欺负。"
                strong -= 2
    # 智商触发的事件
    elif iq <= 5 and point == 3:
        info += "你看起来并不聪明"
        if home <= 5:
            info += "你的家境并不好,无法送你去学习。"
        else:
            info += "你的家境不错,被送进私塾里学习。"
            iq += 2
    # 健康成长
    else:
        info += "你健康成长。"

    print(info)
    print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")
    print("----------------------------------------------------------")
    # 为了方便观察暂停1s
    time.sleep(1)

结语

这个文字游戏是博主一个个代码敲出来的,游戏逻辑可能不大充分。

仅供参考!更多内容还需要大家来扩展啦!

至于为什么博主的随机事件这么少?

我只想说,那是游戏策划的事,跟我有什么关系。(狗头保命qwq)

还有,这个程序和这篇博客是我连续肝了几个小时出来的,希望大家多多点赞收藏关注啦,求求了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 游戏思路
  • 实现过程
    • 打印菜单
    • 设置初始属性
    • 随机生成角色性别
    • 随机生成出生地
      • 性别触发随机事件
      • 体质触发随机事件
      • 颜值触发随机事件
      • 智商触发随机事件
      • 以上都不触发
    • 优化用户体验
  • 整体代码展示,带注释
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档