Python实现人生重开模拟器小游戏讲解
目录
- 思维导图
- 前言
- 一、设置初始属性
- 1.游戏标题
- 2.属性的初始化
- 二、设置性别
- 三、设置出生点
- 四、针对每一岁自动生成人生经历
- 总结(附代码)
思维导图
前言
前面我们已经学了python中的顺序,选择,循环语句以及break和continue的使用,下面根据这几个语句,来讲解一个代码案例
一、设置初始属性
相信大家都玩过人生重开模拟器这样类型的小游戏。
在游戏中,一般会有四个属性
- 颜值(face)
- 体质(strong)
- 智力(iq)
- 家境(home)
在这里可以约定一下属性的范围,以及4个属性的总和不能超过多少。
我们约定属性的范围为1-10,总和不得超过20.
1.游戏标题
在这里可以先把游戏的标题打印在开头
print("******************************************") print(" ") print(" 人生重开模拟器 ") print(" ") print(" 花有重开日 人无在少年 ") print(" ") print("******************************************")
2.属性的初始化
这四个属性可以由玩家自己输入,这就用到了之前讲到的input
函数,通过这个函数,来完成属性的初始化。
print("请设置初始属性(可用属性值:20)") face = int(input("设定颜值(1-10)")) iq = int(input("设定智力(1-10)")) strong = int(input("设定体质(1-10)")) home = int(input("设定家境(1-10)"))
这样就完成了属性的输入,这样并不完善,前面我们已经约定过了,属性不得超过多少,总和不得超过多少,所以下面要用我们学到过的if-elif-else
语句,对这四个属性和总和进行判断。
if face < 1 or face > 10: print("颜值设置错误") continue elif iq < 1 or iq > 10: print("智力设置错误") continue elif strong < 1 or strong > 10: print("体质设置错误") continue elif home < 1 or home > 10: print("android家境设置错误") continue elif face + iq + strong + home > 20: print("总属性超过20") continue print("初始属性设置完毕") print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")
每当某一个属性不符合的时候,就把原因打印的屏幕上并重新输入属性值,如果符合约定,则把四个属性值打印在屏幕上。
当某个判断出现错误的时候,代码会直接结束程序,而不会让玩家循环输出,这是因为缺少了一个循环,那么我们就要设置一个能够使得属性初始化但不符合约定,就要让玩家重新输入属性值的功能。这个时候就用到了while循环
while True: print("请设置初始属性(可用属性值:20)") face = int(input("设定颜值(1-10)")) iq = int(input("设定智力(1-10)")) strong = int(input("设定体质(1-10)")) home = int(input("设定家境(1-10)")) if face < 1 or face > 10: print("颜值设置错误") continue elif iq < 1 or iq > 10: print("智力设置错误") continue elif strong < 1 or strong > 10: print("体质设置错误") continue elif home < 1 or home > 10: print("家境设置错误") continue elif face + iq + strong + home > 20: print("总属性超过20") continue print("初始属性设置完毕") print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")
当所有判断都满足约定的时候,就不能在继续循环了,要结束程序,这个时候就break
就派上了用场,满足判定,直接跳出while
循环。
在上面这个代码尾部加上break
即可注意break的位置要缩进。
二、设置性别
设置性别是一个有意思的话题,性别一定要做到随机,设置随机数就用到了一个函数random.randint
,这个函数是python中自带的模块,使用前要先调用一下这个模块import random
通过 random.randint(1,6)
可以生成一个1-6的随机整数。
- 如果是单数:男孩
- 如果是双数:女孩
男孩女孩会遇到不同的事件。
point = random.randint(1,6) # print(f'随机数为:{point}') if point % 2 == 1: gender = "boy" print("你是个男孩.") else: gender = "girl" print("你是个女孩.")
三、设置出生点
首先按照家境可以把出生点分为4部分
- 10是第一部分,家境最好,加成也最高
- 7-9第二部分,也有一些加成
- 4-6第三部分,加成较少
- 1-4第四部分,会扣掉属性
当然,大家在自己写的时候,可以多写几个部分,让游戏充满更多的可能。
然后,在生成1-3之间的随机数,每一个数字代表一种情况。
point = random.randint(1,3) if home == 10: #第一部分 print("你出生在帝都,父母是世界首富.") home += 1 face += 1 iq += 1 elif home >= 7 and home <=9: #第二部分 if point == 1: print("你出生在一线城市,父母是医生.") face += 2 elif point == 2: print("你出生在一线城市,父母是资深程序员.") iq += 2 else: print("你出生在一线城市,父母是健身教练.") strong += 3 face += 1 iq -= 1 elif home >= 4 and home <= 6: #第三部分 if point == 1: print("你出生在三线城市,父母是企业管理.") iq += 1 elif point == 2: print("你出生在三线城市,父母是小学老师.") iq += 1 else: print("你出生在三线城市,父母是自己开店做生意.") home += 1 else: #第四部分 if point == 1: print("你出生在农村,父母是农民.") strong += 2 face -= 1 elif point == 2: print("你出生在山里,父母是猎人.") strong += 2 home -= 1 face -= 1 else: print("你出生在小镇上,父母是镇长.") face += 1 home += 1 print(f"颜值:{face},体量:{strong},智力:{iq},家境:{home}")
四、针对每一岁自动生成人生经历
按照年龄可以把人生分为四个截断
- 幼年
- 青年
- 壮年
- 老年
每个截断会有不同的事情发生,也可能会有一些机遇。
例如:幼年截断,智力,颜值,体质等会发生变化,在这里可以展开事件的发生。
此处只写幼年经历:
因为是每一年,可以用for循环展开,把每一年的经历,用字符串进行拼接,循环到最后,输出字符串即可,针对事件的发生,可以用随机数,根据数字来发生事件,也可以根据性别,颜值,体质等来触发事件,不同的事件有不同的影响,如果得病去世,可以直接用sys.exit(0)
退出程序,使用time.sleep(1)
可以使程序暂停一秒,便于观察。
for age in range(1,11): #把一整年的打印都整理到一个字符串中,在这一年的结尾统一打印 info = f'你今年{age}岁' #生成一个一到三的随机整数 point = random.randint(1,3) #接下来编写各种事件的代码 #性别触发的事件 if gender == 'girl' and home <= 3 and point == 1: 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 += '你和别的小朋友打架.' strong += 1 iq -= 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 else: info += '你的古父母鼓励你多打扮自己.' face += 1 else: info += '你的父母经常为此吵架.' if point == 1: strong -= 1 elif point == 2: iq -= 1 else: pass #健康成长 else: info += '你健康成长.' if point == 1: info += '你看起来更结实了.' strong += 1 elif point == 2: info += '你看起来更好看了.' face开发者_JAVA += 1 else: pass #打印这一年发生的事情 print(info) print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}") print("---------------------------------------------------------------") time.sleep(1)
总结(附代码)
在这里,并不把四个截断全部写完,只写一个幼年阶段。把这一篇文章看完,相信大家有能力自行实现后续内容,让游戏变得更完整。
注:在使用sys.exit和time.sleep的时候别忘了调用一下
import sys
import time
""" 人生重开模拟器 花有重开日,人无在少年 """ import random import sys import time print("******************************************") print(" ") print(" 人生重开模拟器 ") print(" ") print(" 花有重开日 人无在少年 ") print(" ") print("******************************************") while True: print("请设置初始属性(可用属性值:20)") face = int(input("设定颜值(1-10)")) iq = int(input("设定智力(1-10)")) strong = int(input("设定体质(1-10)")) home = int(input("设定家境(1-10)")) if face < 1 or face > 10: print("颜值设置错误") continue elif iq < 1 or iq > 10: print("智力设置错误") continue elif strong < 1 or strong > 10: print("体质设置错误") continue elif home < 1 or home > 10: print("家境设置错误") continue elif face + iq + strong + home > 20: print("总属性超过20") continue print("初始属性设置完毕") print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}") break 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(js"你出生在帝都,父母是世界首富.") home += 1 face += 1 iq += 1 elif home >= 7 and home <=9: if point == 1: print("你出生在一线城市,父母是医生.") face += 2 elif point == 2: print("你出生在一线城市,父母是资深程序员.") iq += 2 else: print("你出生在一线城市,父母是健身教练.") strong += 3 face += 1 iq -= 1 elif home >= 4 and home <= 6: if point == 1: print("你出生在三线城市,父母是企业管理.") iq += 1 elif point == 2: print("你出生在三线城市,父母是小学老师.") iq += 1 else: print("你出生在三线城市,父母是自己开店做生意.") home += 1 else: if point == 1: print("你出生在农村,父母是农民.") strong += 2 face -= 1 elif point == 2: print("你出生在山里,父母是猎人.") strong += 2 home -= 1 face -= 1 else: print("你出生在小镇上,父母是镇长.") face += 1 home += 1 print(f"颜值:{face},体量:{strong},智力:{iq},家境:{home}") for age in range(1,11): info = f'你今年{age}岁' point = random.randint(1,3) if gender == 'girl' and home <= 3 and point == 1: info += '你的家里人重男轻女思想非常严重,把你丢弃了.' print("游戏结束.") sys.exit(0) ejavascriptlif 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 += '你和别的小朋友打架.' strong += 1 iq -= 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 else: info += '你的古父母鼓励你多打扮自己.' face += 1 else: info += '你的父母经常为此吵架.' if point == 1: strong -= 1 javascript elif point == 2: iq -= 1 else: pass else: info += '你健康成长.' if point == 1: info += '你看起来更结实了.' strong += 1 elif point == 2: info += '你看起来更好看了.' face += 1 else: pass print(info) print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}") print("---------------------------------------------------------------") time.sleep(1)
到此这篇关于Python实现人生重开模拟器小游戏讲解的文章就介绍到这了,更多相关Python人生重开模拟器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
精彩评论