人生重开模拟器
- 代码展示:
- 实现思路
- 序言
- 一、设置初始属性
- 1.游戏标题
- 2.属性初始化
- 二、设置角色性别
- 三、设置角色出生点
- 四、针对每一年的岁数,自动生成人生经历
- 总结
代码展示:
# 人生重开模拟器
import random
import sys
import timeprint('+-----------------------------------------------+')
print(' ')
print(' 花有重开日,人无再少年 ')
print(' ')
print(' 欢迎来到人生重开模拟器 ')
print(' ')
print('+-----------------------------------------------+')# 设置初始属性
# 颜值, 体质, 家境, 智力, 总和不能超过20,每一项的取值都是 1-10 之间# 使用循环,使玩家输入错误的时候可以重新输入.
while True:print("请设置初始属性(可用点数值为20) ")Face = int(input("请输入颜值(1-10): "))Strong = int(input("请输入体质(1-10): "))Home = int(input("请输入家境(1-10): "))IQ = int(input("请输入智力(1-10): "))# 通过条件语句对于用户输入的属性值进行校验检查# 这段逻辑,使用elif是否可以呢?其实是完全可以的,效果是相同的# 使用elif则是多个分支只能进一个,一旦某个条件满足了,就不会再走其它分支了.# 此处虽然没有使用elif,但是有了continue,一旦某个条件满足,continue 就会使循环从头再来,也就没有机会# 继续去执行后续的条件判定了if Face < 1 or Face > 10:print("颜值设置有误!")continueif Strong < 1 or Face > 10:print("体质设置有误!")continueif Home < 1 or Face > 10:print("家境设置有误!")continueif IQ < 1 or Face > 10:print("智力设置有误!")continueif Face + Strong + Home + IQ > 20:print("总的属性之和超出20,设置有误")continue# 如果当前上面的条件都没有被触发,则认为玩家输入的数据是合法的# 此时就可以跳出循环,结束输入print("初始属性输入完毕!")print(f"颜值: {Face}, 体质: {Strong}, 家境: {Home}, 智力: {IQ}")break# 生成角色的性别
# 使用 random.randint(beg,end),就能生成[beg,end}的随机整数
point = random.randint(1,6)
if point % 2 == 1:gender = 'boy'print("你是一个男孩")
else:gender = 'girl'print("你是一个女孩")# 设定角色的出生点
point = random.randint(1,3)
if Home == 10:# 第一档print("你出生在帝都,你的父母是高官政要")Home += 1Face += 1IQ += 1
elif 7 <= Home <= 9:# 第二档if point == 1:print("你出生在大城市,父母是公务员")Face += 2elif point == 2:print("你出生在大城市,父母是企业高管")Home += 2else:print("你出生在大城市,父母是大学教授")IQ += 2
elif 4 <= Home <= 6:# 第三档if point == 1:print("你出生在三线城市,你的父母是医生")Strong += 1elif point == 2:print("你出生在镇上,你的父母是教师")IQ += 1else:print("你出生在镇上,你的父母是个体户")Home += 1
else:# 第四档if point == 1:print("你出生在农村,父母是辛苦劳作的农民")Strong += 1Face -= 2elif point == 2:print("你出生在穷乡,你的父母是无业游民")Home -= 1else:print("你出生在镇上,你的父母感情不和")Strong -= 1
print(f"颜值: {Face},体质: {Strong}, 家境: {Home}, 智力: {IQ}")# 幼年阶段
for age in range(1,11):# 把一整年的打印都整理到一个字符串中,在这一年的结尾统一打印info = f'你今年{age}岁.'#生成一个[1,3]的随机整数point = random.randint(1,3)# 接下来编写各种事件的代码#使用elif是为了保证每一次只触发一个事件!# 性别触发的事件if gender == 'girl' and Home <= 3 and point == 1:info += '你的家里人重男轻女的思想非常严重,你被遗弃了!'print(info)print("游戏结束!")sys.exit(0)# 体质触发的事件elif Strong < 6 and point < 3:info += "你生了一场病,"if Home >= 5:info += '在父母的悉心照料下,你康复了.'Strong += 1Home -= 1else:info += '你的父母没精力管你,你的身体状况更糟糕了.'Strong -= 1# 颜值触发的事件elif Face <= 4 and age >= 7:info += '你长得太丑了,别人不喜欢你.'if IQ >= 5:info += '你决定用学习填充自己.'IQ += 1else:if gender == 'boy':info += '你和别的小朋友进场打架!'Strong += 1IQ -= 1else:info += '你经常被别的小朋友欺负!'Strong -= 1#通过智商触发的事件elif IQ < 5:info += '你看起来傻傻的.'if Home >= 8 and age >= 6:info += '你的父母将你送到更好的学校学习.'IQ += 1elif 4 <= Home <= 7:if gender == 'boy':info += '你的父母鼓励你多运动,争取成为运动员.'Strong += 1else:info += '你的父母鼓励你多打扮自己.'Face += 1else:# 家境 < 4info += '你的父母为此经常吵架.'if point == 1:Strong -= 1elif point == 2:IQ -= 1else:pass# 健康成长事件else:info += '你健康成长.'if point == 1:info += '你看起来更结实了.'Strong += 1elif point == 2:info += '你看起来更好看了.'Face += 1else:pass# 打印这一年发生的事情print(info)print(f"颜值: {Face},体质: {Strong}, 家境: {Home}, 智力: {IQ}")print('----------------------------------------------------')#为了方便观察,加一个小小的暂停操作time.sleep(1)
实现思路
1.设置初始属性
2.设置角色性别
3.设置角色出生点
4.针对每一年的岁数,自动生成人生经历
序言
在前面学习Python的过程中,我们学习了顺序,选择和循环语句,也学到了有关continue和break的使用,因此,我们依靠这些知识,来完成一个简单的"小游戏"
一、设置初始属性
相信大家在网上也看到过这款游戏,这款游戏有四个属性,分别是:
1. 颜值(Face) 2. 体力(Strong)3. 家境(Home) 4. 智商(IQ)
因此在这里,我们要规定属性的范围以及四个属性之和不能超过我们所规定的范围
所以在这,我们假设规定它们的属性都是在1 ~ 10的范围之内,其总和不超过20。
1.游戏标题
在游戏的开头,我们可以先打印个标题供给玩家看:
2.属性初始化
这四个属性由玩家自己输入,由于我们之前学习过input函数,因此在此处,使用input函数来帮我们完成初始化操作
到这里,虽然完成了属性的初始化操作,但是不够完善。由于玩家的操作使我们意料不到的,因此我们还得设置每个属性值的范围以及超出范围之后打印提示信息的操作。所以这项操作就要使用if 和 elif语句了
当我们在某个属性发生错误时,错误信息会直接打印在屏幕上面,程序会直接结束,而不会让玩家重新输入。为了让玩家能够重新输入属性值的功能,我们就要用到循环的操作语句-----while循环
注意 : 代码块的缩进
如果以上条件都没有被触发,就可以说明玩家输入的数据是符合规定的,我们就可以再次打印每个属性的信息,然后跳出循环,继续执行后续操作。
在这里,细心地同学会看到这里的代码怎么都是使用if语句,怎么没有使用elif语句呢?其实这里使用elif语句也是完全可以的。但这里需要注意的是 : 使用elif语句则是多个分支只能进一个,一旦某个条件满足了,就不会再走其它分支了。
在我们这段代码里,虽然没有使用elif语句,但是我们使用了continue语句,一旦某个条件满足,continue 就会使循环从头再来,也就没有机会继续去执行后续的条件判定了.
二、设置角色性别
因为我们不能提前知道玩家的性别,所以我们设置性别随机。在此处又需要使用到一个函数 : random.randint ,通过这个函数,我们就能过生成1 ~ 6的随机数。
注:
我们假设规定: 如果是单数,就为男孩。反之,则为女孩。
三、设置角色出生点
我们假设按照家境这一属性,将出生点分为四个档位
- 当 Home = 10 时为第一档,此时家境最好,属性加成最高
- 当 Home = 7 ~ 9 时为第二档,此时有部分属性加成
- 当 Home = 4 ~ 6 时为第三档,此时属性的加成较少
- 当 Home = 1 ~ 3 时为第四档,此时会扣除部分属性值
当然,也可以加多几部分,让这小游戏有更高的可玩度
然后生成1 ~ 3的随机数,每一种数字代表一种情况
在选则完后,打印角色的相关属性
四、针对每一年的岁数,自动生成人生经历
按照年龄,我们可以将角色分为四个阶段:
1.幼年[1,10] 2.青年[11,20]3.壮年[20,50] 4.老年 50岁以上
每个阶段都有可能会产生不一样的事件,也可能出现一些机遇.
例如: 在这段代码中,我们只写了幼年这一阶段.因为我们要打印每一年所发生的事件,因此需要使用for循环,通过字符串拼接,不断循环,最后输出字符串即可。在针对事件的发生,我们既可以使用随机数,根据所产生的数字代表该事件的发生,也可以根据性别、颜值、体质等来触发相关事件.由于每一种事件会产生不一样的影响,如果发生夭折等突然去世的情况时,我们可以使用 sys.exit(0) 退出程序,然后为了方便观察,再加上一个暂停的操作-------time.sleep(1)
# 幼年阶段
for age in range(1,11):# 把一整年的打印都整理到一个字符串中,在这一年的结尾统一打印info = f'你今年{age}岁.'#生成一个[1,3]的随机整数point = random.randint(1,3)# 接下来编写各种事件的代码#使用elif是为了保证每一次只触发一个事件!# 性别触发的事件if gender == 'girl' and Home <= 3 and point == 1:info += '你的家里人重男轻女的思想非常严重,你被遗弃了!'print(info)print("游戏结束!")sys.exit(0)# 体质触发的事件elif Strong < 6 and point < 3:info += "你生了一场病,"if Home >= 5:info += '在父母的悉心照料下,你康复了.'Strong += 1Home -= 1else:info += '你的父母没精力管你,你的身体状况更糟糕了.'Strong -= 1# 颜值触发的事件elif Face <= 4 and age >= 7:info += '你长得太丑了,别人不喜欢你.'if IQ >= 5:info += '你决定用学习填充自己.'IQ += 1else:if gender == 'boy':info += '你和别的小朋友进场打架!'Strong += 1IQ -= 1else:info += '你经常被别的小朋友欺负!'Strong -= 1#通过智商触发的事件elif IQ < 5:info += '你看起来傻傻的.'if Home >= 8 and age >= 6:info += '你的父母将你送到更好的学校学习.'IQ += 1elif 4 <= Home <= 7:if gender == 'boy':info += '你的父母鼓励你多运动,争取成为运动员.'Strong += 1else:info += '你的父母鼓励你多打扮自己.'Face += 1else:# 家境 < 4info += '你的父母为此经常吵架.'if point == 1:Strong -= 1elif point == 2:IQ -= 1else:pass# 健康成长事件else:info += '你健康成长.'if point == 1:info += '你看起来更结实了.'Strong += 1elif point == 2:info += '你看起来更好看了.'Face += 1else:pass# 打印这一年发生的事情print(info)print(f"颜值: {Face},体质: {Strong}, 家境: {Home}, 智力: {IQ}")print('----------------------------------------------------')#为了方便观察,加一个小小的暂停操作time.sleep(1)
注:在这里使用sys.exit 和 time.sleep的时候,需要先使用important语句,将模块的名字"导入"进来.
总结
写到这里,相信大家对这款小游戏制作有提升了不少的认识。虽然我们这这里只写了一个幼年阶段,但我相信,只要你们看完这篇文章,一定会有能力继续去实现其余的人生阶段,令游戏变得更加完善。
今天的分享就到这里啦,感谢大家的阅读,我们下次再见 !
See You ~