一、游戏背景介绍
这是一款文字类小游戏。玩家输入角色的初始属性之后,就可以开启不同的人生经历。
完整的程序代码较多,此这里只实现其中的一部分逻辑(主要目的:巩固前面学习的 Python 语法基础)。
二、设置初始属性
在游戏中我们设定四个属性:
- 颜值(face)
- 体质(strong)
- 智力(iq)
- 家境(home)
约定每个属性的范围为 [1, 10],并且总和不能超过 20。
如果玩家输入的初始属性不合理,就提示输入有误,需要重新输入。
# 人生重开模拟器 print("+---------------------------------------------------------------------+") print("| |") print("| 花有重开日, 人无再少年 |") print("| |") print("| 欢迎来到【人生重开模拟器】 |") print("| |") print("+---------------------------------------------------------------------+") # 设置初始属性 # 颜值、体质、智力、家境,总和不能超过 20,每一项取值都是 1-10 之间 # 使用循环,使得玩家在输入错误的时候可以重新输入 while True: print("请设定初始属性(可用总点数为 20)") face = int(input("设定 颜值(1-10):")) strong = int(input("设定 体质(1-10):")) iq = int(input("设定 智力(1-10):")) home = int(input("设定 家境(1-10):")) # 通过条件语句,对于用户输入的属性值做出校验检查 # 这段逻辑使用 elif 也是可以的,效果相同 # 使用 elif 则是多个分支只能进入一个,一旦某个条件满足了,就不会再走其它分支了 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(1, 6) 生成一个 [1, 6] 的随机整数,类似于掷骰子。
- 如果是单数,则性别设为男孩。
- 如果是双数,则性别设为女孩。
男孩和女孩会遇到不同的事件。
# 生成角色的性别 # 使用 random.randint(beg, end), 就能生成 [beg, end] 随机整数 point = random.randint(1, 6) # 掷骰子 if point % 2 == 1: gender = 'boy' print("你是个男孩") else: gender = 'girl' print("你是个女孩")
四、设置出生点
首先按照家境(
home),
分成四个档位:
- 10 是第一档,加成最高。
- [7, 9] 是第二档,也有一些加成。
- [4, 6] 是第三档,加成较少。
- [1, 3] 是第四档,会扣掉属性。
再扔一次骰子,生成 [1, 3] 的随机数,用来表示每一种细分情况。
这里的代码主要就是各种 if-else 构成:
# 设置出生点 point = random.randint(1, 3) # 掷骰子 if home == 10: # 第一档 print('你出生在帝都, 你的父母是高官政要') home += 1 iq += 1 face += 1 elif 7 <= home <= 9: # 第二档 if point == 1: print('你出生在大城市, 你的父母是公务员') face += 2 elif point == 2: print('你出生在大城市, 你的父母是大企业高管') home += 2 else: print('你出生在大城市, 你的父母是大学教授') iq += 2 elif 4 <= home <= 6: # 第三档 if point == 1: print('你出生在三线城市, 你的父母是教师') iq += 1 elif point == 2: print('你出生在镇上, 你的父母是医生') strong += 1 else: print("你出生在镇上, 你的父母是个体户") home += 1 else: # 第四档 if 1 <= point <= 2: print('你出生在农村里, 你的父母是辛苦劳作的农民') strong += 1 face -= 2 elif 3 <= point <= 4: print('你出生在穷乡僻壤, 你的父母是无业游民') home -= 1 else: print('你出生在镇上, 你父母感情不和') strong -= 1 print(f'颜值:{face}, 体质:{strong}, 智力:{iq}, 家境:{home}')
五、针对每一岁, 生成人生经历
按照年龄,把人生经历分成四个阶段:
- 幼年阶段 [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} 岁, ' # 生成一个 [1, 3] 的随机整数 point = random.randint(1, 3) # 下面写各种事件的代码 # 性别触发事件 if gender == 'girl' and home <= 3 and point == 1: info += '你家里人重男轻女思想非常严重, 你被遗弃了!' print(info) print("游戏结束!") sys.exit(0) # 体质触发的事件 # 使用 elif 是为了保证每年只出发一个事件 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: # 家境 < 4 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: # 无事发生 pass print('-------------------------------------------') # 打印这一年发生的事情 print(info) print(f'颜值:{face}, 体质:{strong}, 智力:{iq}, 家境:{home}') # 为了方便观察,加一个小的暂停操作 time.sleep(1)
青年、壮年、老年的相关逻辑也是类似的方法,这里就不再详细写了。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/96911.html