当前位置:   article > 正文

Python实现人生重开模拟器游戏.py--小白也能学会,简单易懂。_python编写模拟器

python编写模拟器

接下来,我们用 Python 写一个文字游戏。

我们需要用到以下模块,具体用法下面会讲解

游戏思路

实现过程

打印菜单

简单易懂,不过多解释,直接看图:

设置初始属性

同时对剩余属性点进行对用户的提醒

  1. print("请设置初始属性(可用点数为20)")
  2. face = int(input("请输入颜值(1~10):"))
  3. print(f"属性点还剩{20 - face}点。")
  4. strong = int(input("请输入体质(1~10):"))
  5. print(f"属性点还剩{20 - face - strong}点。")
  6. iq = int(input("请输入智力(1~10):"))
  7. print(f"属性点还剩{20 - face-strong - iq}点。")
  8. home = int(input("请输入家境(1~10):"))
  9. print(f"属性点还剩{20 - face - strong - iq -home}点。")

为了防止用户输入错误,我们用 if 语句进行对用户输入值的一种判断

同时用 while 语句返回,使用户重新输入

  1. # 使用循环使玩家在输入错误时重新输入
  2. while True:
  3. print("请设置初始属性(可用点数为20)")
  4. face = int(input("请输入颜值(1~10):"))
  5. print(f"属性点还剩{20 - face}点。")
  6. strong = int(input("请输入体质(1~10):"))
  7. print(f"属性点还剩{20 - face - strong}点。")
  8. iq = int(input("请输入智力(1~10):"))
  9. print(f"属性点还剩{20 - face-strong - iq}点。")
  10. home = int(input("请输入家境(1~10):"))
  11. print(f"属性点还剩{20 - face - strong - iq -home}点。")
  12. # 通过条件语句对用户输入的值进行检查
  13. if face < 1 or face > 10:
  14. print("颜值设置有误!")
  15. continue
  16. if strong < 1 or strong > 10:
  17. print("体质设置有误!")
  18. continue
  19. if iq < 1 or iq > 10:
  20. print("智力设置有误!")
  21. continue
  22. if home < 1 or home > 10:
  23. print("家境设置有误!")
  24. continue
  25. if face + strong + iq + home > 20:
  26. print("总属性值总和超过20!设置有误!")
  27. continue
  28. # 上列数值输入合法就跳出循环
  29. # 将数据再次展示给用户
  30. print("初始属性设置完毕!")
  31. print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")
  32. break

这段逻辑使用 elif 也是可以的。

使用 elif 则是多个分支只能进一个,一个条件满足就不会进入其他分支。

这里的 continue 一旦一个条件满足就跳出本次循环,也不会进入其他分支,效果一致。

随机生成角色性别

这边我们使用随机数,来对角色的性别进行一个随机生成。

奇数代表男孩,偶数代表女孩。

当然使用随机数就需要导入我们的 random 模块了。

  1. # 生成角色的性别
  2. # 使用 random.randint(beg,end),生成[beg,end] 随机整数
  3. point = random.randint(1,6)
  4. if point % 2 == 1:
  5. gender = "boy"
  6. print("你是个男孩。")
  7. else:
  8. gender = "girl"
  9. print("你是个女孩。")

随机生成出生地

提到随机,当然必不可少的还是我们的随机数。

为了方便,就直接生成 1~3 的随机数。

每一个数字代表一种可能。

同时根据家境的初始值和随机数分成不同档次,并且根据家境不同带来属性加成。

  1. # 设置角色的出身地
  2. # 为了简单,就直接生成 1~3 的随机数
  3. point = random.randint(1,3)
  4. if home == 10: # 第一档次
  5. print("你出生在皇宫,你是皇子")
  6. home += 1
  7. iq += 1
  8. face += 1
  9. elif 7 <= home <= 10: # 第二档次
  10. if point == 1:
  11. print("你出生在帝都,你是将军的孩子")
  12. strong += 2
  13. home += 2
  14. elif point == 2:
  15. print("你出生在帝都,你是宰相的孩子")
  16. iq += 2
  17. home += 2
  18. else:
  19. print("你出生在帝都,你是皇帝的私生子")
  20. iq += 2
  21. strong += 1
  22. home += 1
  23. elif 4 <= home <= 7: # 第三档次
  24. if point == 1:
  25. print("你出生在镇上,你是铁匠的孩子")
  26. strong += 1
  27. elif point == 2:
  28. print("你出生在镇上,你是医师的孩子")
  29. iq += 1
  30. else:
  31. print("你出生在镇上,你是富商的孩子")
  32. iq += 1
  33. strong += 1
  34. else: # 第四档次
  35. if point == 1:
  36. print("你出生在野外,你是个乞丐")
  37. strong -= 1
  38. face -= 2
  39. home -= 2
  40. elif point == 2:
  41. print("你出生在农村,你是农民的孩子")
  42. iq -= 1
  43. face -= 1
  44. home -= 1
  45. else:
  46. print("你出生在镇里,你是普通家庭的孩子")
  47. # 再输出一次状态
  48. print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")

 实现随机事件

我们将人的一生分为多个阶段,并且每年进行一种随机事件。

同时结合我们的随机数增加更多可能。

我们先写幼年阶段

首先,遍历我们的幼年年龄,对每一年进行一个随机事件。

  1. for age in range(1,11):
  2. // 随机事件

为了方便我们将一整年的打印都整理到一个字符串里,在这一年的结尾统一打印。

info = f"你今年{age}岁。"

接下来我们开始写事件,分多种属性触发,增加我们的随机性:

性别触发随机事件

  1. if gender == "girl" and home <= 6 and point == 3:
  2. info += "你家里人重男轻女,你被遗弃了。"
  3. print(info)
  4. print("游戏结束!")
  5. sys.exit(0)

可以看见,我们这里用 sys.exit(0) 使我们的程序退出结束。

所以,我们需要导入我们的 sys 模块。

体质触发随机事件

家境不同得出不同结果。

  1. elif strong < 5 and home <= 4 and point == 2:
  2. info += "你生了一场病。"
  3. if home >= 5:
  4. info += "你在父母的细心照顾下康复了。"
  5. strong += 1
  6. home -= 1
  7. else:
  8. info += "你的家境不好无法帮你医治。"
  9. strong -= 1

颜值触发随机事件

根据性别不同得出不同处理方法

  1. elif face <= 4 and age >= 5:
  2. info += "你长得太丑了,别的小朋友不喜欢你。"
  3. if iq >= 5:
  4. info += "你决定用学习充实自己。"
  5. iq += 2
  6. else:
  7. if gender == "boy":
  8. info += "你经常和他们打架。"
  9. if strong <= 4:
  10. info += "你打不过他们,被欺凌至死。"
  11. print(info)
  12. print("游戏结束!")
  13. sys.exit(0)
  14. else:
  15. info += "他们都打不过你,但都不和你玩了。"
  16. strong += 2
  17. else:
  18. info += "你经常被欺负。"
  19. strong -= 2

智商触发随机事件

根据家境不同,不同情况。

  1. elif iq <= 5 and point == 3:
  2. info += "你看起来并不聪明"
  3. if home <= 5:
  4. info += "你的家境并不好,无法送你去学习。"
  5. else:
  6. info += "你的家境不错,被送进私塾里学习。"
  7. iq += 2

以上都不触发

以上都不触发,可见我们健康成长。

并随着年纪增长,属性值得到增长。

  1. else:
  2. info += "你健康成长。"
  3. strong += 1
  4. iq += 1
  5. face += 1

 其他阶段都是大同小异,就不多写了。

优化用户体验

为了使用户便于观察所以我们每次都打印一下属性栏。

并且增加每年的分割线。

不知道大家有没有发现,我们还有一个模块没有使用。

就是我们的 time 模块。

我们将使用这个模块使我们的程序每次都暂停1s。

方便我们用户的体验。

  1. print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")
  2. print("----------------------------------------------------------")
  3. # 为了方便观察暂停1s
  4. time.sleep(1)

整体代码展示,带注释

  1. # 人生重开模拟器~
  2. # by-于本淡
  3. import random
  4. import sys
  5. import time
  6. #菜单
  7. print(" +----------------------------------------------+ ")
  8. print(" | | ")
  9. print(" | 花有重开日,人无再少年。 | ")
  10. print(" | | ")
  11. print(" | 欢迎来到人生重开模拟器! | ")
  12. print(" | | ")
  13. print(" | by-于本淡 | ")
  14. print(" | | ")
  15. print(" +----------------------------------------------+")
  16. # 设置初始属性
  17. # 颜值,体质,智力,家境,取值1~10之间,总值不超过20.
  18. # 使用循环使玩家在输入错误时重新输入
  19. while True:
  20. print("请设置初始属性(可用点数为20)")
  21. face = int(input("请输入颜值(1~10):"))
  22. print(f"属性点还剩{20 - face}点。")
  23. strong = int(input("请输入体质(1~10):"))
  24. print(f"属性点还剩{20 - face - strong}点。")
  25. iq = int(input("请输入智力(1~10):"))
  26. print(f"属性点还剩{20 - face-strong - iq}点。")
  27. home = int(input("请输入家境(1~10):"))
  28. print(f"属性点还剩{20 - face - strong - iq -home}点。")
  29. # 通过条件语句对用户输入的值进行检查
  30. # 这段逻辑使用 elif 也是可以的
  31. # 使用 elif 则是多个分支只能进一个,一个条件满足就不会进入其他分支
  32. # 这里的 continue 一旦一个条件满足就跳出本次循环,也不会进入其他分支,效果一致
  33. if face < 1 or face > 10:
  34. print("颜值设置有误!")
  35. continue
  36. if strong < 1 or strong > 10:
  37. print("体质设置有误!")
  38. continue
  39. if iq < 1 or iq > 10:
  40. print("智力设置有误!")
  41. continue
  42. if home < 1 or home > 10:
  43. print("家境设置有误!")
  44. continue
  45. if face + strong + iq + home > 20:
  46. print("总属性值总和超过20!设置有误!")
  47. continue
  48. # 上列数值输入合法就跳出循环
  49. print("初始属性设置完毕!")
  50. print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")
  51. break
  52. # 生成角色的性别
  53. # 使用 random.randint(beg,end),生成[beg,end] 随机整数
  54. point = random.randint(1,6)
  55. if point % 2 == 1:
  56. gender = "boy"
  57. print("你是个男孩。")
  58. else:
  59. gender = "girl"
  60. print("你是个女孩。")
  61. # 设置角色的出身地
  62. # 为了简单,就直接生成 1~3 的随机数
  63. point = random.randint(1,3)
  64. if home == 10: # 第一档次
  65. print("你出生在皇宫,你是皇子")
  66. home += 1
  67. iq += 1
  68. face += 1
  69. elif 7 <= home <= 10: # 第二档次
  70. if point == 1:
  71. print("你出生在帝都,你是将军的孩子")
  72. strong += 2
  73. home += 2
  74. elif point == 2:
  75. print("你出生在帝都,你是宰相的孩子")
  76. iq += 2
  77. home += 2
  78. else:
  79. print("你出生在帝都,你是皇帝的私生子")
  80. iq += 2
  81. strong += 1
  82. home += 1
  83. elif 4 <= home <= 7: # 第三档次
  84. if point == 1:
  85. print("你出生在镇上,你是铁匠的孩子")
  86. strong += 1
  87. elif point == 2:
  88. print("你出生在镇上,你是医师的孩子")
  89. iq += 1
  90. else:
  91. print("你出生在镇上,你是富商的孩子")
  92. iq += 1
  93. strong += 1
  94. else: # 第四档次
  95. if point == 1:
  96. print("你出生在野外,你是个乞丐")
  97. strong -= 1
  98. face -= 2
  99. home -= 2
  100. elif point == 2:
  101. print("你出生在农村,你是农民的孩子")
  102. iq -= 1
  103. face -= 1
  104. home -= 1
  105. else:
  106. print("你出生在镇里,你是普通家庭的孩子")
  107. print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")
  108. # 幼年阶段
  109. for age in range(1,11):
  110. # 把一整年的打印都整理到一个字符串里,在这一年的结尾统一打印
  111. info = f"你今年{age}岁。"
  112. # 生成一个 [1,3] 的随机数
  113. point = random.randint(1, 3)
  114. # 接下来编写触发的事件
  115. # 性别触发的事件
  116. if gender == "girl" and home <= 6 and point == 3:
  117. info += "你家里人重男轻女,你被遗弃了。"
  118. print(info)
  119. print("游戏结束!")
  120. sys.exit(0)
  121. # 体质触发的事件
  122. elif strong < 5 and home <= 4 and point == 2:
  123. info += "你生了一场病。"
  124. if home >= 5:
  125. info += "你在父母的细心照顾下康复了。"
  126. strong += 1
  127. home -= 1
  128. else:
  129. info += "你的家境不好无法帮你医治。"
  130. strong -= 1
  131. # 颜值触发随机事件
  132. elif face <= 4 and age >= 5:
  133. info += "你长得太丑了,别的小朋友不喜欢你。"
  134. if iq >= 5:
  135. info += "你决定用学习充实自己。"
  136. iq += 2
  137. else:
  138. if gender == "boy":
  139. info += "你经常和他们打架。"
  140. if strong <= 4:
  141. info += "你打不过他们,被欺凌至死。"
  142. print(info)
  143. print("游戏结束!")
  144. sys.exit(0)
  145. else:
  146. info += "他们都打不过你,但都不和你玩了。"
  147. strong += 2
  148. else:
  149. info += "你经常被欺负。"
  150. strong -= 2
  151. # 智商触发的事件
  152. elif iq <= 5 and point == 3:
  153. info += "你看起来并不聪明"
  154. if home <= 5:
  155. info += "你的家境并不好,无法送你去学习。"
  156. else:
  157. info += "你的家境不错,被送进私塾里学习。"
  158. iq += 2
  159. # 健康成长
  160. else:
  161. info += "你健康成长。"
  162. print(info)
  163. print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")
  164. print("----------------------------------------------------------")
  165. # 为了方便观察暂停1s
  166. time.sleep(1)

结语

这个文字游戏是博主一个个代码敲出来的,游戏逻辑可能不大充分。

仅供参考!更多内容还需要大家来扩展啦!

至于为什么博主的随机事件这么少?

我只想说,那是游戏策划的事,跟我有什么关系。(狗头保命qwq)

还有,这个程序和这篇博客是我连续肝了几个小时出来的,希望大家多多点赞收藏关注啦,求求了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/537866
推荐阅读
相关标签
  

闽ICP备14008679号