当前位置: 首页 > news >正文

Python基础:人生重开模拟器(小游戏)

引言

手把手带你速通Python

实现人生重开模拟器(小游戏)的意义:增强对条件语句,循环语句的运用,增加写代码的乐趣。

一、 游戏介绍

网页版的人生重开模拟器:

人生重开模拟器-重来-重启 (aizhancloud.cn)

玩家输入角色的初始属性之后, 就可以开启不同的人生经历。

这里实现其核心功能,通过控制台窗口展现出来。 

 

二、实现游戏

1. 设置初始属性

在游戏中我们设定四个属性:

  • 颜值 (face)
  • 体质 (strong)
  • 智力 (iq)
  • 家境 (home)

约定每个属性的范围为 [1, 10], 并且总和不能超过 20.

如果玩家输入的初始属性不合理, 就提示输入有误, 重新输入.

print("+-------------------------------+")
print("|                               |")
print("|     花有重开日,人无再少年       |")
print("|     欢迎来到,人生重开模拟器     |")
print("|                               |")
print("+-------------------------------+")while True:print("请设置初始值(可用点数为20)")face = int(input("请输入颜值(1 ~ 10):"))iq = int(input("请输入智商(1 ~ 10):"))string = int(input("请输入体值(1 ~ 10):"))home = int(input("请输入家境(1 ~ 10):"))if face < 1 or face > 10:print("颜值输入有误")continueif iq < 1 or iq > 10:print("智商输入有误")continueif string < 1 or string > 10:print("体质输入有误")continueif home < 1 or home > 10:print("家境输入有误")continueif face + iq + string + home > 20:print("总值输入有误")continueprint("设置完成")break

 2. 设置性别

通过 random.randint(1, 6) 生成一个 [1, 6] 的随机整数, 类似于掷色子.

  • 如果是单数, 则性别设为男孩
  • 如果是双数, 则性别设为女孩.

男孩和女孩会遇到不同的事件。

point = random.randint(1,6) # 掷色子
if point % 2 == 0:gender = "boy"print("你是个男孩")
else:gender = "girl"print("你是个女孩")

3. 设置出生点

首先按照家境(home), 分成四个档位。

  • 10 是第一档. 加成最高
  • [7, 9] 是第二档. 也有一些加成
  • [4, 6] 是第三档. 加成较少
  • [1, 3] 是第四档. 会扣掉属性.

再扔一次色子, 生成 [1, 3] 的随机数, 用来表示每一种细分情况.

这里的代码主要就是各种 if else 构成.

point = random.randint(1, 3) # 掷色子
if home == 10:print('你出生在帝都, 你的父母是高官政要')home += 1iq += 1face += 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('你出生在三线城市, 你的父母是教师')iq += 1elif point == 2:print('你出生在镇上, 你的父母是医生')strong += 1else:print("你出生在镇上, 你的父母是个体户")home += 1
else:if 1 <= point <= 2:print('你出生在村里, 你的父母是辛苦劳作的农民')strong += 1face -= 2elif 3 <= point <= 4:print('你出生在穷乡僻壤, 你的父母是无业游民')home -= 1else:print('你出生在镇上, 你父母感情不和')strong -= 1

 4. 针对每一岁, 生成人生经历

按照年龄, 把人生经历分成四个阶段:

  • 幼年阶段 [1, 10]
  • 青年阶段 [11, 20]
  • 壮年阶段 [20, 50]
  • 老年阶段 50 岁以上.

每个阶段都会有不同的精力和事件发生.

  • 幼年阶段可塑性强, 体质, 颜值, 智力都会有较快变化
  • 青年阶段主要是求学, 同时父母一辈会有明显变化, 智力和家境会有明显变化.
  • 壮年阶段相对平稳, 属性变化不大, 主要是一些随机事件影响到属性.
  • 老年阶段体质, 颜值, 智力都会显著退化, 并且随着年龄的上升, 疾病/死亡的风险逐渐升高.

此处我们以幼年为例, 简单实现一下这里的处理逻辑。

  • 使用 for 循环, 按照年龄循环起来.
  • 针对每一年, 先掷一次 [1, 3] 的色子, 根据不同的随机数值, 来触发不同的事件.
  • 根据性别, 年龄, 各种属性, 来触发不同的事件.
  • 这里都使用不同的事件可能会对属性有正面/负面的影响.
  • 在每一年的最后, 打印这一年遇到的事情.
  • 如果夭折, 则直接 sys.exit(0) 退出程序.
  • 使用 if - else 的方式来组织.
  • time.sleep(1) 使程序暂停执行 1s, 方便观察程序结果. 

这里只是以幼年为例,简单实现了一下。 

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(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 += '你和别的小朋友经常打架'iq -= 1strong += 1else:info += '你经常被别的小朋友欺负'strong -= 1# 智商触发的事件elif iq < 5:info += '你看起来傻傻的, 'if home >= 8 and age >= 6:info += '你的父母给你送到更好的学校学习'elif 4 <= home <= 7:if gender == 'boy':info += '你的父母鼓励你多运动, 加强身体素质'strong += 1else:info += '你的父母鼓励你多打扮自己'face += 1else:info += '你的父母为此经常吵架'if point == 1:strong -= 1elif point == 2:iq -= 1# 健康成长else:info += '你健康成长, 'if point == 1:info += '看起来更聪明了'iq += 1elif point == 2:info += '看起来更好看了'face += 1else:info += '看起来更结实了'strong += 1print('-------------------------------------------')print(info)print(f'strong={strong}, face={face}, iq={iq}, home={home}')time.sleep(1)

若感兴趣,可以扩展更多。🌹😉

三、所有代码

import random
import sys
import timeprint("+-------------------------------+")
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("颜值输入有误")continueif iq < 1 or iq > 10:print("智商输入有误")continueif strong < 1 or strong > 10:print("体质输入有误")continueif home < 1 or home > 10:print("家境输入有误")continueif face + iq + strong + home > 20:print("总值输入有误")continueprint("设置完成")breakpoint = random.randint(1,6) # 掷色子
if point % 2 == 0:gender = "boy"print("你是个男孩")
else:gender = "girl"print("你是个女孩")point = random.randint(1, 3) # 掷色子
if home == 10:print('你出生在帝都, 你的父母是高官政要')home += 1iq += 1face += 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('你出生在三线城市, 你的父母是教师')iq += 1elif point == 2:print('你出生在镇上, 你的父母是医生')strong += 1else:print("你出生在镇上, 你的父母是个体户")home += 1
else:if 1 <= point <= 2:print('你出生在村里, 你的父母是辛苦劳作的农民')strong += 1face -= 2elif 3 <= point <= 4:print('你出生在穷乡僻壤, 你的父母是无业游民')home -= 1else:print('你出生在镇上, 你父母感情不和')strong -= 1for age in range(1, 11):info = f'你今年 {age} 岁, 'point = random.randint(1, 3)# 性别触发事件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 += '你和别的小朋友经常打架'iq -= 1strong += 1else:info += '你经常被别的小朋友欺负'strong -= 1# 智商触发的事件elif iq < 5:info += '你看起来傻傻的, 'if home >= 8 and age >= 6:info += '你的父母给你送到更好的学校学习'elif 4 <= home <= 7:if gender == 'boy':info += '你的父母鼓励你多运动, 加强身体素质'strong += 1else:info += '你的父母鼓励你多打扮自己'face += 1else:info += '你的父母为此经常吵架'if point == 1:strong -= 1elif point == 2:iq -= 1# 健康成长else:info += '你健康成长, 'if point == 1:info += '看起来更聪明了'iq += 1elif point == 2:info += '看起来更好看了'face += 1else:info += '看起来更结实了'strong += 1print('-------------------------------------------')print(info)print(f'strong={strong}, face={face}, iq={iq}, home={home}')time.sleep(1)

相关文章:

  • 2024年数维杯国际大学生数学建模挑战赛C题时间信号脉冲定时噪声抑制与大气时延抑制模型解题全过程论文及程序
  • CUDA与OpenGL混合编程图形渲染
  • vLLM实战部署embedding、reranker、senseVoice、qwen2.5、qwen3模型
  • [蓝桥杯]约瑟夫环
  • Qt/C++编写GB28181服务端工具/绿色版开箱即用/对标wvp-gb28181/实时画面预览/录像回放下载
  • 5.29 自学测试 Linux基础 Day4
  • 基于大模型的急性乳腺炎全病程风险预测与综合治疗方案研究
  • 快乐大冒险:解锁身体里的 “快乐密码”
  • 海外tk抓包简单暴力方式
  • 如何评估 RAG 的分块Chunking策略
  • node-sass 报错
  • 小云天气APP:精准预报,贴心服务
  • 《P2960 [USACO09OCT] Invasion of the Milkweed G》
  • 悲观锁与乐观锁:并发编程中的两种核心控制策略详解
  • 洋流的实时原位预测
  • 大数据-275 Spark MLib - 基础介绍 机器学习算法 集成学习 随机森林 Bagging Boosting
  • Git实战--基于已有分支克隆进行项目开发的完整流程
  • Chapter 10 Inductive DC–DC Converters
  • 性能测试实例(http和ldap协议压测)
  • 15-2021剑侠情缘2-各种修复完善+虚拟机单机端+外网服务端整理+文本教程+视频教程
  • h5制作网页/应用商店关键词优化
  • 给公司做的东西放到私人网站上/成都新闻今日最新消息
  • 泰州网站建设哪家好/网站分析
  • 银行网站开发技术方案/株洲seo推广
  • 邯郸移动网站建设公司/seo研究
  • 商业计划书ppt免费模板下载/aso应用优化