python 模拟人生
故事背景:
2B先生和美丽是一对恋人,自从来到北京打拼两年后,两人关系渐渐发生了微妙的变化,故事从此开始... ...有点像北京爱情故事,但没有复仇情节
1 #! /usr/bin/env python 2 # -*- coding:utf-8 -*- 3 #__author__:leon 4 5 import sys 6 import time 7 8 class Person(object): 9 rolesflag = {"loser":32,"peri":36,"fat_cat":31} # 定义输出颜色标示 10 def __init__(self,name,age,sex,role,asset): 11 self.name = name 12 self.age = age 13 self.sex = sex 14 self.role = role 15 self.asset = asset 16 def talk(self, msg, tone='normal'): 17 ''' 18 :param msg:交谈的字体颜色定义 19 :return: 20 ''' 21 if tone == 'angry': 22 for s in msg: 23 sys.stdout.write('\033[31;1m%s\033[0m' % s) 24 sys.stdout.flush() 25 time.sleep(0.1) 26 sys.stdout.write('\n') 27 else: 28 for s in msg: 29 sys.stdout.write('\033[%d;1m%s\033[0m' % (self.rolesflag[self.role], s)) 30 sys.stdout.flush() 31 time.sleep(0.1) 32 sys.stdout.write('\n') 33 34 def asset_total(self, money, action): 35 ''' 36 角色拥有的资产值,计算赚的钱与花的钱 37 :param: money 钱的数目 38 :param: action 花费 39 ''' 40 if action == 'earn': 41 self.asset += money 42 print('\033[32;1m%s赚了 %s 元!资产增加 %s 元\033[0m' % (self.name, money, self.asset)) 43 elif action == 'cost': 44 self.asset -= money 45 print('\033[31;1m%s花了 %s 元! 仅剩 %s 元\033[0m' % (self.name, money, self.asset)) 46 47 def progress_test(): 48 """ 49 定义进度条 50 """ 51 bar_length=80 52 for percent in range(0, 101): 53 hashes = '#' * int(percent/100.0 * bar_length) 54 spaces = ' ' * (bar_length - len(hashes)) 55 sys.stdout.write("\rLoading: [%s] %d%%"%(hashes + spaces, percent)) 56 sys.stdout.flush() 57 time.sleep(0.05) 58 59 def introduce(p1,p2,p3): 60 ''' 61 初始化人物角色,开场介绍。 62 :param p1: 屌丝角色 63 :param p2: 土豪角色 64 :param p3: 美女角色 65 :return:None 66 ''' 67 print('') 68 print('*' * 150) 69 print('\033[31;1m 欢迎登陆模拟人生游戏 \033[0m'.center(150)) 70 print('*' * 150) 71 72 print('游戏人物简介:') 73 p1.talk('[%s]: 我是2B,今年%d岁,我是一个从农村出来的孩子,对未来充满憧憬,虽然穷,但是有个美丽的女朋友一直是我的骄傲!代言loser' % (p1.name, p1.age)) 74 p2.talk('[%s]: 我是土豪猫,今年%d岁,一个准官二代。有车有房,身边除了钱就是妹子,生活已经没有多大追求了,除了嗑药,把妹是我唯一的爱好!代言fat_cat' % (p2.name, p2.age)) 75 p3.talk('[%s]: 我是美丽,今年%d岁,人如其名,除了好看以外还有着36D的骄傲,那个谁谁谁都可以演《美人鱼》一炮而红,我不甘心,我要奢侈生活!代言peri' % (p3.name, p3.age)) 76 77 def show_story(): 78 ''' 79 故事背景介绍 80 :return: 81 ''' 82 print('-' * 150) 83 print('第一章:故事背景'.center(150)) 84 print('-' * 150) 85 print('2B和美丽是发小,从初中开始幼稚恋一直到大学毕业,毕业后一起到大北京闯荡江湖。' 86 '\n2B通过自己的努力奋斗,终于找到了一份8000块的工作,美丽也找到一份5000块的工作' 87 '\n通过两人的努力奋斗,小两口终于有点小积蓄了,可是他们发现房价越来越高了,在看看自己的积蓄才这么一点点:') 88 p1.asset_total(20000, 'earn') 89 p3.asset_total(10000, 'earn') 90 print('2B发现了美丽的不爽,心想:不如先把婚给结了,然后再考虑未来,否则媳妇儿跑了,再找就麻烦了,于是开始准备求婚计划了... ...') 91 time.sleep(0.5) 92 93 def show_crisis(): 94 ''' 95 感情出现信任危机 96 :return: 97 ''' 98 print('-' * 150) 99 print('第二章:求婚显危机'.center(150)) 100 print('-' * 150) 101 p1.talk('[%s]: 美丽,我们一起了这么多年,我的真心天地可鉴,请嫁给我吧!' % p1.name) 102 p3.talk('[%s]: 2B,我们恋爱那么久,没车没房,买个爱马仕的包包,我想都不敢想,以后的生活怎么过啊?' % p3.name) 103 p1.talk('[%s]: 美丽,我们一起努力,以后生活肯定会过得更好的!' % p1.name) 104 p3.talk('[%s]: 我受够了这样的生活,放弃吧!猫对我很好,我想我们该结束了'% p3.name) 105 p2.talk('[%s]: 对,我对美丽是真心的,你这么穷,就别瞎胡闹了!' % p2.name) 106 p1.talk('[%s]: 美丽,你说的是真的吗,你爱他吗?' % p1.name) 107 p3.talk('[%s]: 我不管,我只想过我要的生活,我们over吧' % p3.name,) 108 p1.talk('[%s]: 给我点时间想想吧,到时候我们再做决定!' % p1.name) 109 p3.talk('[%s]: 好吧,就给你1天时间!' % p3.name) 110 time.sleep(0.5) 111 112 def choose(): 113 """ 114 用户交互,做出感情决定 115 """ 116 print('-' * 150) 117 print('约定的时间到了,开始选择: \033[31;1m1 不答应 2 答应\033[0m') 118 while True: 119 one = input('2B,请选择 1 或者 2 :').strip() 120 if one == '': 121 continue 122 two = input('美丽,请选择1或者2:').strip() 123 if two == '': 124 continue 125 if one in ['1', '2'] and two in ['1', '2']: 126 if one == '2' and two == '2': 127 together() 128 break 129 elif one == '1' or two == '1': 130 separate() 131 break 132 else: 133 print('你不按套路出牌啊,说好的选择1和2,你偏选3,告诉你选择3等于重来,哈哈', 'angry') 134 135 def together(): 136 ''' 137 角色2B 和 美丽 选择在一起,最终结局输出 138 :return: 139 ''' 140 print('-' * 150) 141 print('第三章:在一起后结局'.center(150)) 142 print('-' * 150) 143 print('美丽回心转意,答应了2B的求婚,两人最终在一起!') 144 p1.talk('[%s]: 美丽,你终于想通啦,我们才是门当户对啊!' % p1.name) 145 p3.talk('[%s]: 嗯,即使猫有车有房,但是他整天去泡妞娘,还吸毒,这种人太不靠谱了!' % p3.name) 146 p3.talk('[%s]: 我们通过自己的努力,也会有房有车有爱马仕的!' % p3.name) 147 p2.talk('[%s]: 美丽,我不是你说的那样的人,你误会了!' % p2.name) 148 p3.talk('[%s]: 2B我们离开这里吧,我不想再见到他了' % p3.name) 149 p1.talk('[%s]: 好,我们一起走!' % p1.name) 150 print('2B和美丽离开了大北京,经过若干年的努力也有房有车了,猫因为吸毒久了,最终挂了!') 151 print('\033[31;1m 剧 终 \033[0m'.center(150, '*')) 152 153 def separate(): 154 ''' 155 角色2B 和 美丽 选择在不一起,最终结局输出 156 :return: 157 ''' 158 print('-' * 150) 159 print('第三章:2B失败了,美丽和高富帅走了'.center(150)) 160 print('-' * 150) 161 p1.talk('[%s]: 美丽,你真狠心,真的能忘记过去吗?' % p1.name) 162 p3.talk('[%s]: 我不能,但是我能改变现在... ...' % p3.name, 'angry') 163 p1.talk('[%s]: 希望你不要后悔' % p1.name) 164 p3.talk('[%s]: 2B你也别太难过,找个好人就嫁了吧。猫,我们走吧!' % p3.name, 'angry') 165 print('伤心过后的2B,参加Python培训,最终当上CIO,也买车买房了。(怎么可能呢?哈哈)') 166 print('当了CIO的2B在公司门口唱了一首《没有理想的人不伤心》一炮走红,老板为了公司打广告一口气给了2B一大笔奖金:') 167 p1.asset_total(5000000, 'earn') 168 print('终有一天,2B在五星级酒店吃饭看到一个服务员,当场惊呆了!') 169 p1.talk('[%s]: 你怎么会在这里?' % p1.name, 'angry') 170 p3.talk('[%s]: 猫去年因为吸毒挂了,留下了一堆债务还有我... ...' % p3.name, ) 171 p1.talk('[%s]: 造孽啊,早知今日,何必当初呢!' % p1.name, 'angry') 172 p3.talk('[%s]: 2B,你能帮帮我吗?' % p3.name, ) 173 p1.talk('[%s]: 100W如何?' % p1.name, 'angry') 174 p3.talk('[%s]: 我不要钱,我只想给肚子里的孩子找个爹' % p3.name) 175 p1.talk('[%s]: 别做梦啦,把孩子打掉吧,虽然他是无辜的,但也成不了富二代了!' % p1.name, 'angry') 176 print('最终2B潇洒的丢了50W,扬长而去... ...美丽最终选择离开了大北京,回到老家继续苦逼的生活!') 177 print('\033[31;1m 剧 终 \033[0m'.center(150, '*')) 178 179 if __name__ == "__main__": 180 p1 = Person("loser",22,"Male","loser",8000) 181 p2 = Person("fat_cat",31,"Male","fat_cat",500000) 182 p3 = Person("peri",21,"Female","peri",5000) 183 progress_test() 184 introduce(p1,p2,p3) 185 show_story() 186 show_crisis() 187 choose()
流程图稍后附上
胸怀天下,有容乃大