哈喽哇宝子们~在经过简单的Python的语法和循环条件语句的学习后我们已经掌握了一定的Python知识,接下来跟着可莉来实践一下吧!
游戏内容
在游戏开始时会选择天赋,并且在用属性点对初始属性进行加点,每一步操作都可能决定在这一生中的命运如何,具体游戏页面如下:
代码实现
因为代码重复性高,可莉只将在前12岁之前实现的代码给大家全部写了出来
接下来让可莉带着你来把代码一块一块的写出来吧~
1. 设置初始属性
我们将会在游戏中有以下四条属性:
- 颜值 (face)
- 体质 (strong)
- 智力 (iq)
- 家境 (home)
而且我们规定,我们约定每个属性的范围为 [1, 10], 并且总和不能超过 20。
代码实现:
# 设置初始属性 | |
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("初始属性设定完成!") | |
break |
为了防止加点错误,我们在一个循环中来设置初始属性,当设置有误的时候就重新开始循环,直到全部设置都没有问题的时候break出循环。
这样就实现了一个简单的初始属性加点设置。
2. 设置性别
性别将会在之后的人生中触发不同的机遇,所以我们需要将性别进行设置。
我们通过 random.randint(1, 6) 生成一个 [1, 6] 的随机整数, 然后通过随机产生的数字来进行随机性别的选择。规则如下:
- 如果是单数, 则性别设为男孩
- 如果是双数, 则性别设为女孩
代码实现:
point = random.randint(1,6) #随机生成数字来决定是男孩还是女孩 | |
if point % 2 == 1: | |
gender = 'boy' | |
print("你是个男孩") | |
else: | |
gender = 'girl' | |
print("你是个女孩") |
3. 设置出生点
人生的出生点将会随着初始属性的值来进行决定,并且需要有一定的随机性。比如说一个初始家境好的人他的出生点是不是就会好呢,但是不能只有一个好的地方,所以我们需要对每一个阶层的家境再进行随机的选择。
我们将家境分级为以下四档:
- 10 是第一档. 加成最高
- [7, 9] 是第二档. 也有一些加成
- [4, 6] 是第三档. 加成较少
- [1, 3] 是第四档. 会扣掉属性
然后在这个分级的基础上我们再在每个档位的里面进行随机的细分选择。
代码实现:
#通过随机掷骰子来决定出生环境(前提是由玩家所填入的家境决定基本环境) | |
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 += 3 | |
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('你出生在穷乡僻壤,你父母情感不和') | |
strong -= 1 |
以上代码就是依据基础的家境再进行随机的选择出生地,使游戏的神秘性和趣味性更强了~
4、生成人生经历
在游戏中我们将依照年龄将人生经历分为四个阶段,分别是:
- 幼年阶段 [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}岁' | |
point = random.randint(1, 3) | |
# 性别触发实践 | |
if gender == 'girl' and home <= 4 and point == 1: | |
info += '你家里人重男轻女思想非常严重,你被遗弃了' | |
print(info) | |
print("游戏结束!") | |
sys.exit(0) | |
#体质触发的事件 | |
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 += '你的父母给你送到的更好的学校学习' | |
iq += 1 | |
elif 4 <= home <= 7: | |
if gender == 'boy': | |
info += '你的父母鼓励你多运动,加强身体素质' | |
strong += 1 | |
elif gender == 'girl': | |
info += '你的父母鼓励你多打扮' | |
face -= 1 | |
else: | |
info += '你的父母经常以为你傻乎乎的而吵架' | |
if point == 1: | |
strong -= 1 | |
elif point == 2: | |
iq -= 1 | |
#如果上述条件都不满足,则是健康的度过了一年 | |
else: | |
info += '你健康成长' | |
if point == 1: | |
face += 1 | |
elif point == 2: | |
strong += 1 | |
else: | |
iq += 1 | |
print('-------------------------------------------') | |
print(info) | |
print(f'strong={strong}, face={face}, iq={iq}, home={home}') | |
time.sleep(2) |
这就是可莉写的人生重开模拟器在幼年阶段的全部代码~虽然不多,但是逻辑清晰,大家可以好好参考哦~
完整代码
import random | |
import time | |
import sys | |
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("初始属性设定完成!") | |
break | |
# 性别选择① | |
point = random.randint(1,6) #随机生成数字来决定是男孩还是女孩 | |
if point % 2 == 1: | |
gender = 'boy' | |
print("你是个男孩") | |
else: | |
gender = 'girl' | |
print("你是个女孩") | |
# #性别选择② | |
# print(" 1、为男孩 2、为女孩") | |
# point = input("请输入一个数字") | |
# if point == 1: | |
# gender = 'boy' | |
# elif point == 2: | |
# gender = 'girl' | |
# else: | |
# print("输入有误 请重新输入!!") | |
#通过随机掷骰子来决定出生环境(前提是由玩家所填入的家境决定基本环境) | |
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 += 3 | |
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('你出生在穷乡僻壤,你父母情感不和') | |
strong -= 1 | |
#在设置完基础环境之后,进行每年的随机事件的触发 | |
for age in range(1,11): | |
info = f'你今年{age}岁' | |
point = random.randint(1, 3) | |
# 性别触发实践 | |
if gender == 'girl' and home <= 4 and point == 1: | |
info += '你家里人重男轻女思想非常严重,你被遗弃了' | |
print(info) | |
print("游戏结束!") | |
sys.exit(0) | |
#体质触发的事件 | |
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 += '你的父母给你送到的更好的学校学习' | |
iq += 1 | |
elif 4 <= home <= 7: | |
if gender == 'boy': | |
info += '你的父母鼓励你多运动,加强身体素质' | |
strong += 1 | |
elif gender == 'girl': | |
info += '你的父母鼓励你多打扮' | |
face -= 1 | |
else: | |
info += '你的父母经常以为你傻乎乎的而吵架' | |
if point == 1: | |
strong -= 1 | |
elif point == 2: | |
iq -= 1 | |
#如果上述条件都不满足,则是健康的度过了一年 | |
else: | |
info += '你健康成长' | |
if point == 1: | |
face += 1 | |
elif point == 2: | |
strong += 1 | |
else: | |
iq += 1 | |
print('-------------------------------------------') | |
print(info) | |
print(f'strong={strong}, face={face}, iq={iq}, home={home}') | |
time.sleep(2) |
以上就是该篇博客所实现的人生重开模拟器的全部代码啦。千万不要忘记导入对time.sleep(2)和exit模块的导入,要不然调用的语句将无法使用哦。
可莉的话
相比那些冷冰冰的知识来说可莉还是更喜欢写这种好玩的游戏~
之后可莉还会带来更多好玩的游戏来教给你们,你们要和可莉一起认真学习哦~
可莉要去重启人生了 加油学习吧旅行者!!