Python---人生重开模拟器(简版)

news2024/9/22 15:40:28

专栏:python
个人主页:HaiFan.
专栏简介:本专栏主要更新一些python的基础知识,也会实现一些小游戏和通讯录,学时管理系统之类的,有兴趣的朋友可以关注一下。

人生重开模拟器

  • 思维导图
  • 前言
  • 一、设置初始属性
    • 1.游戏标题
    • 2.属性的初始化
  • 二、设置性别
  • 三、设置出生点
  • 四、针对每一岁,自动生成人生经历
  • 总结(附代码)


思维导图

在这里插入图片描述

前言

前面我们已经学了python中的顺序,选择,循环语句以及break和continue的使用,下面根据这几个语句,来讲解一个代码案例


一、设置初始属性

相信大家都玩过人生重开模拟器这样类型的小游戏。
在游戏中,一般会有四个属性

  1. 颜值(face)
  2. 体质(strong)
  3. 智力(iq)
  4. 家境(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("家境设置错误")
        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的随机整数。

  1. 如果是单数:男孩
  2. 如果是双数:女孩

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

point = random.randint(1,6)
# print(f'随机数为:{point}')
if point % 2 == 1:
    gender = "boy"
    print("你是个男孩.")
else:
    gender = "girl"
    print("你是个女孩.")

在这里插入图片描述

三、设置出生点

首先按照家境可以把出生点分为4部分

  1. 10是第一部分,家境最好,加成也最高
  2. 7-9第二部分,也有一些加成
  3. 4-6第三部分,加成较少
  4. 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}")

四、针对每一岁,自动生成人生经历

按照年龄可以把人生分为四个截断

  1. 幼年
  2. 青年
  3. 壮年
  4. 老年

每个截断会有不同的事情发生,也可能会有一些机遇。
例如:幼年截断,智力,颜值,体质等会发生变化,在这里可以展开事件的发生。
此处只写幼年经历:
因为是每一年,可以用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 += 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("你出生在帝都,父母是世界首富.")
    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)
    
    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 += 1
        else:
            pass

    print(info)
    print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")
    print("---------------------------------------------------------------")
    time.sleep(1)






本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/171847.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

〖百宝书-思维锻炼③〗——三心理论——成功的来源

大家好&#xff0c;我是涵子&#xff0c;今天我们来聊聊三心理论。 &#x1f4ac; 人生格言&#xff1a;Stay foolish, stay kind.&#x1f4ac; &#x1f4eb; 如果文章知识点有错误的地方&#xff0c;请指正&#xff01;和大家一起学习&#xff0c;一起进步&#x1f440; &a…

Ae 效果详解:CC Snowfall

效果/模拟/CC SnowfallEffects/Simulation/CC Snowfall示例CC Snowfall &#xff08;下雪效果&#xff09;&#xff0c;可用来模拟带景深、光效和运动模糊的下雪效果。Flakes 雪花片数用于设置雪花片的数量。默认值 10000。Size 大小用于设置雪花片的大小。默认值 3.00。Variat…

连续系统PID的Simulink仿真-3

利用简化S函数&#xff0c;实现连续系统PID的Simulink仿真-2中S函数同样的功能。利用S函数简化形式实现被控对象的表达、控制器的设计及仿真结果的输出。在简化S函数中&#xff0c;flag-0时为S函数初始化&#xff0c;其中 sys包括6个参数:第1个参数表示连续系统的阶数;第2个参数…

DBCO-PEG-4ARM,四臂聚乙二醇二苯基环辛炔,4Arm PEG-DBCO

●中文名&#xff1a;四臂-聚乙二醇-二苯基环辛炔 ●英文名&#xff1a;4Arm PEG-DBCO&#xff0c;DBCO PEG 4ARM ●外观以及性质&#xff1a; ​4Arm PEG-DBCO产物呈固体或粘性液体&#xff0c;取决于PEG分子量&#xff0c;高分子DBCO功能化PEG&#xff0c;“点击化学"…

【JavaScript】事件相关知识详解

&#x1f4bb; 【JavaScript】事件相关知识详解&#x1f3e0;专栏&#xff1a;JavaScript &#x1f440;个人主页&#xff1a;繁星学编程&#x1f341; &#x1f9d1;个人简介&#xff1a;一个不断提高自我的平凡人&#x1f680; &#x1f50a;分享方向&#xff1a;目前主攻前端…

CES 2023:高通从移动互联深入布局未来智驾

作为全球规模最大、影响最为广泛的国际消费电子展&#xff0c;CES曾经因为三年疫情而无奈中断&#xff0c;如今终于在2023年1月重返美国拉斯维加斯。而不管是CES 2023的3200多家参展企业&#xff0c;还是数量超过10万的现场观众&#xff0c;当他们走出位于拉斯维加斯会议中心西…

02Docker镜像

Docker基础2&#xff08;镜像&#xff09; 一、Docker镜像介绍 1.1 简介 镜像是一种轻量级、可执行的独立软件包&#xff0c;它包含运行某个软件所需的所有内容&#xff0c;我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配…

《Buildozer打包实战指南》第六节 buildozer.spec配置文件中的其他参数

目录 android.permissions android.features android.api android.minapi android.sdk android.ndk android.ndk_api android.private_storage android.ndk_path android.sdk_path android.ant_path android.skip_update android.accept_sdk_license android.a…

【Linux】基础:线程的概念

【Linux】基础&#xff1a;线程的概念 摘要&#xff1a;本文介绍Linux下的线程概念&#xff0c;首先将会线程在系列教材中的定义进行抛出&#xff0c;从常规的操作系统进行理解线程的概念&#xff0c;在具体说明Linux下的进线程的管理与组织方式&#xff0c;以及由于该组织方式…

2022年度笔记本十大热门品牌销量排行榜

近年来&#xff0c;由于大环境的改变&#xff0c;线上教育、线上办公等的需求使得平板电脑出货量逐步提升。同时&#xff0c;5G时代来临&#xff0c;万物互联是未来的趋势&#xff0c;手机由于操作系统和交互上的局限性&#xff0c;笔记本电脑将会扮演更加重要的角色。未来&…

Arduino开发ESP8266连接无线路由器

实现ESP8266连接一个WIFI路由器ESP8266选择多个路由器中信号将强的进行连接源代码如下/* ESP8266模块连接网络实验1、代码段1实现连接无线路由器实验2、代码段2实现esp8266搜索已存在网络中质量较好的并进行连接*/#include <ESP8266WiFi.h> // 提供 Wi-Fi 功能的库#inclu…

监控安防人员入门基础

1、 决定视频流畅程度的是以下哪个属性&#xff1f; A、分辨率 B、率上限 C、帧率 D、编码方式 题解&#xff1a;一幅完整的视频画面为一帧&#xff0c;每秒显示的帧的数目为帧率&#xff0c;帧率越高&#xff0c;视频更流畅。因此答案是&#xff1a;C 2、 关于图像分辨率和…

solr业务域配置

SolrSolr作为一个Java开发的高性能&#xff0c;用于对查询性能进行优化的全文搜索服务器&#xff0c;它的使用需要配置业务域&#xff1a;第一步是添加中文分析器上传中文分析器并解压&#xff0c;复制jar包到solr的lib文件夹下&#xff1a;cp IKAnalyzer2012FF_u1.jar /usr/lo…

FA-PEG-DBCO,DBCO-PEG-Folate,叶酸聚乙二醇环辛炔

●中文名&#xff1a;叶酸聚乙二醇环辛炔&#xff0c;叶酸聚乙二醇二苯基环辛炔&#xff0c;DBCO-PEG-叶酸 ●英文名&#xff1a;FA-PEG-DBCO &#xff0c; Folate-PEG-DBCO&#xff0c;DBCO-PEG- FA&#xff0c;DBCO-PEG-Folate&#xff0c;DBCO-PEG- Folic acid ●外观以及…

使用集简云将UpTimer同步到Notion

使用UpTimer同步到Notion 对于集简云我们应当非常熟悉了&#xff0c;之前讲过很多流程啦~ 利用集简云将Notion数据库更新订阅到Outlook和微信[1] 【干货分享】集简云 2步轻松定制个人RSS阅读器 |高效获取信息[2] 释放双手|自动化NOTION的最佳平台推荐|NOTION同步滴答清单|懒人[…

【人工智能原理自学】高维空间:机器如何面对越来越复杂的问题

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;笔记来自B站UP主Ele实验室的《小白也能听懂的人工智能原理》。 &#x1f514;本文讲解高维空间&#xff1a;机器如何面对越来越复杂的问题&#xff0c;一起卷起来叭&#xff01…

使用TortoiseGit同步项目到GitHub简单教程

1.TortoiseGit简介与安装 TortoiseGit是Git的Windows桌面可视化工具&#xff0c;通过软件的操作来实现git命令的效果&#xff0c;对git小白较友好。TortoiseGit可以通过官网https://tortoisegit.org/下载&#xff0c;下载之后即可按照普通软件的方式进行安装&#xff0c;每一步…

Could not find a version that satisfies the requriement xxx

Could not find a version that satisfies the requriement xxx1. 场景描述2. 解决办法2.1 升级pip2.2 更换镜像源2.3 查询所有安装的模块3.Awakening1. 场景描述 使用python自带的pip安装一些包时&#xff0c;总是会报以下错误 使用yum也会报一些错&#xff0c;反正就是装不上…

Windows10彻底关闭自动更新

文章目录前言无赖步骤关闭自动更新服务关闭自动更新策略效果总结前言 在写这篇总结之前&#xff0c;我已经尝试过多次关闭Win10的自动更新了&#xff0c;一般来说更新之后可以使操作系统更加健壮&#xff0c;但总会有一些原因让我们不想更新&#xff0c;比如我最近总是需要远程…

110、【树与二叉树】leetcode ——669. 修剪二叉搜索树:递归法(C++版本)

题目描述 解题思路 大题思路类似于 450.删除二叉搜索树中的节点&#xff08;递归法迭代法&#xff09; &#xff0c;区别在于删除的是某一区域的节点值&#xff0c;并且要保留区域内部的节点值。 对于第一次找到结点值小于low的情况&#xff0c;有两种&#xff1a;&#xff08…