赞
踩
接下来,我们用 Python 写一个文字游戏。
我们需要用到以下模块,具体用法下面会讲解
简单易懂,不过多解释,直接看图:
同时对剩余属性点进行对用户的提醒
- 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 语句返回,使用户重新输入
- # 使用循环使玩家在输入错误时重新输入
- 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 模块了。
- # 生成角色的性别
- # 使用 random.randint(beg,end),生成[beg,end] 随机整数
-
- point = random.randint(1,6)
- if point % 2 == 1:
- gender = "boy"
- print("你是个男孩。")
- else:
- gender = "girl"
- print("你是个女孩。")
提到随机,当然必不可少的还是我们的随机数。
为了方便,就直接生成 1~3 的随机数。
每一个数字代表一种可能。
同时根据家境的初始值和随机数分成不同档次,并且根据家境不同带来属性加成。
- # 设置角色的出身地
- # 为了简单,就直接生成 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}岁。"
接下来我们开始写事件,分多种属性触发,增加我们的随机性:
- if gender == "girl" and home <= 6 and point == 3:
- info += "你家里人重男轻女,你被遗弃了。"
- print(info)
- print("游戏结束!")
- sys.exit(0)
可以看见,我们这里用 sys.exit(0) 使我们的程序退出结束。
所以,我们需要导入我们的 sys 模块。
家境不同得出不同结果。
- 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 += "你健康成长。"
- strong += 1
- iq += 1
- face += 1
其他阶段都是大同小异,就不多写了。
为了使用户便于观察所以我们每次都打印一下属性栏。
并且增加每年的分割线。
不知道大家有没有发现,我们还有一个模块没有使用。
就是我们的 time 模块。
我们将使用这个模块使我们的程序每次都暂停1s。
方便我们用户的体验。
- print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")
- print("----------------------------------------------------------")
- # 为了方便观察暂停1s
- time.sleep(1)
- # 人生重开模拟器~
- # 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)
还有,这个程序和这篇博客是我连续肝了几个小时出来的,希望大家多多点赞收藏关注啦,求求了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。