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()
View Code

流程图稍后附上

posted @ 2016-03-05 23:23  Leon2016  阅读(608)  评论(0编辑  收藏  举报