110
社区成员
发帖
与我相关
我的任务
分享课程:《Python程序设计》
班级: 2333
姓名: 江天明
学号:20233311
实验教师:王志强
实验日期:2024年5月15日
必修/选修: 公选课
Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
例如:编写从社交网络爬取数据,实现可视化舆情监控或者情感分析。
例如:利用公开数据集,开展图像分类、恶意软件检测等
例如:利用Python库,基于OCR技术实现自动化提取图片中数据,并填入excel中。
例如:爬取天气数据,实现自动化微信提醒
例如:利用爬虫,实现自动化下载网站视频、文件等。
例如:编写小游戏:坦克大战、贪吃蛇、扫雷等等
注:在Windows/Linux系统上使用VIM、PDB、IDLE、Pycharm等工具编程实现。
批阅:注意本次实验不算做实验总分,前三个实验每个实验15分,累计45分。本次实践算入综合实践,打分为45分。
评分标准:
(1)程序能运行,功能丰富。(需求提交源代码,并建议录制程序运行的视频)10分
(2)综合实践报告,要体现实验分析、设计、实现过程、结果等信息,格式规范,逻辑清晰,结构合理。20分。
(3)实验4的遇到的问题以及感想体会。5分。
(4)对全课进行总结,并写课程感想体会、意见和建议等。10分。
壹、 实验分析
(1) 实验分析
本次实验主要是,由各自最想编什么,比如爬虫啊,数据集啊,分类啊,或小游戏之类自己比较喜欢的东西来充分展现自己在Python课上学到的知识。爬虫的代码之前自己曾了解过做过相关的问题,所以这一次就不再重做了。主要是之前自己曾很沉迷于人生重开模拟器这种小游戏,所以自己也想开始做一个。
(2) 实现过程
1.0版本:刚刚开始的设想就是设计初始值,然后根据不同的事件增加减少初始值,是种非常简单的套路,其中也就不过用了一首else之类的,语句也就是普通的循环和条件,也没有过多复杂的东西,理解,明版本大概花了三个小时编写完成,主体是编写了后续的事件。 我认为本次小游戏最主要的是其中的逻辑,逻辑要明确。怎么说呢,就是不同的初始值,比如不同的颜值,不同的身体强度,不同的家境和不同的智商会很大程度上影响到之后事件的发展。比如智商高,可能会成绩好,然后受到追捧,比如说颜值低可能会导致不讨喜,但是却会有个人独处的时间,从而提升自己的学习能力,知识得到增长。
然后不同的年龄阶段,会触发不同的事件。比如幼年阶段(1-10岁)是可塑的阶段,此时其颜值,智商,体力和家境都可能会有大起大落的变化,此时的数值变化很大。在青年阶段(10-25)正是求学的阶段,其智商可能会影响其之后的人生发展。中年阶段(25-50)其可能事业比较平稳,蒸蒸日上,家境不断提升,也有可能受到月周年危机,家境容貌都在日益下降。老年阶段(50岁之后)体质逐渐下降,容貌逐渐下,直到结束。
2.0版本:此次版本升级是在开始加入了抽卡池和商店系统。卡池里面有垃圾卡,正常卡,稀有卡和特殊卡4种。其中垃圾卡里面都是陷阱卡,小丑牌之类的东西,会减少能力值。反正4种类型的卡牌分别对着不同的机遇。然后设置了商店系统和人物面板。人物商店以及学校,这三个都是由类来定义的,即class。把这三个汇聚在主菜单函数里,集成一下。
相比于1.0版本,其中用的代码更加复杂,各个事件之间的逻辑也更加清晰,增加了商店系统和抽卡系统,更具有可玩性。
(3) 结果
大致上是完成了预期,收获颇丰,也在其中学到了很多!
(4) 展望
准备,后续采用GUI可视化,在编写程序的这几周我实际上是尝试编写过。首先采用的是PyQt5(一个跨平台的C++开发库)。但是白手起家,学了一会,觉得自己无法快速掌握,于是去转向之前就熟悉的Tkinter,以下是我初步编写的相关可视化模块:

import tkinter as tk
import sys
def redirect_stdout_to_tkinter(text_widget):
class StdoutRedirector:
def __init__(self, text_widget):
self.text_widget = text_widget
def write(self, message):
self.text_widget.insert('end', message)
self.text_widget.see('end')
sys.stdout = StdoutRedirector(text_widget)
# 创建Tkinter窗口
window = tk.Tk()
# 创建文本框用于显示输出
output_text = tk.Text(window)
output_text.pack()
# 重定向标准输出到文本框
redirect_stdout_to_tkinter(output_text)
textExample = tk.Text(window, height=10) # 创建文本输入框
# 第5步,安置文本框
textExample.pack() # 把Text放在window上面,显示Text这个控件
# 第6步,获取文本框输入
def getTextInput():
result = textExample.get("1.0", "end") # 获取文本输入框的内容
print(result) # 输出结果
# Tkinter 文本框控件中第一个字符的位置是 1.0,可以用数字 1.0 或字符串"1.0"来表示。
# "end"表示它将读取直到文本框的结尾的输入。我们也可以在这里使用 tk.END 代替字符串"end"。
# 第7步,在图形化界面上设定一个button按钮(#command绑定获取文本框内容的方法)
btnRead = tk.Button(window, height=1, width=10, text="get", command=getTextInput) # command绑定获取文本框内容的方法
# 第8步,安置按钮
btnRead.pack() # 显示按钮
window.mainloop()
主要现在是如何把上述程序给增添到原程序中, 如何将这段程序植入到原程序中,并且没有错误,这还需要我进行进一步的研究。
貳、 实验代码与编写过程(注释体现思路!!!)(实验结论在最后,老师不要嫌弃我代码写了2000多行QAQ)
(1) 实验代码(2000多行,大家浅看一下,本次编写的是小游戏,但是侧重于内在的逻辑,设计了抽卡池系统与商店系统,更改了好几个版本,邀请了同学来测试,发现bug后又进行了几次debug。)(已上传到gitee)
import random
import sys
import time
#设计抽卡库
card_junk = ['*你触发了我的陷阱卡*(junk)', '小丑牌(junk)', '左眼胎记(junk)', '讨厌香菜(junk)', '上个存档的轮回(junk)', '*这是张闪卡*(junk)', '*这是张废卡*(junk)', '红桃A(junk)', '好坏骰子(junk)', '凡庸(junk)', '鲤鱼王(junk)']
card_normal = ['相貌平平(normal)', '歪瓜裂枣(normal)', '相貌出众(normal)', '智力平平(normal)', '略显迟钝(normal)', '聪颖过人(normal)', '家境平凡(normal)', '家徒四壁(normal)', '富二代(normal)', '体力一般(normal)', '体弱多病(normal)', '身强体壮(normal)']
card_rare = ['天使下凡(rare)', '妖魔鬼怪(rare)', '爱因斯坦(rare)', '白痴(rare)', '富可敌国(rare)', '孤苦伶仃(rare)', '金刚不坏(rare)', '胎死腹中(rare)']
card_special = ['青梅竹马(*special*)', '灵童转世(*special*)', '恶魔附体(*special*)', '救世大任(*special*)']
#设计特殊事件标签
birthmark = False
coriander = False
solitude = False
company_have = False
fool = False
smart = False
lonely_self = False
adopted = False
class Peple:
"""
定义一个人类
"""
# 颜值
face = 0
# 智力
iq = 0
# 体质
strong = 0
# 家境
home = 0
# 性别,true男false女
sex = False
# 背包字典
bag = {}
# 岁数
old = 0
# 钱
dollars = 0
def openBag(self):
"""打开背包"""
print('背包:')
print('╔════════════════════════╦═══════════════════════╗')
print('║ 道 具 ║ 数 量 ║')
print('╠════════════════════════╬═══════════════════════╣')
for key, value in self.bag.items():
print(f'║ {key} ║ {value} ║')
print('╠═══════════════════════╬═══════════════════════╣')
while True:
try:
command = input('请输入需要使用的道具,0退出:')
if command == '0':
break
if self.bag[command] >= 1:
if command == '强壮药水':
self.strong += 1
print('你使用了强壮药水,体质加一')
self.bag[command] -= 1
elif command == '智力药水':
self.iq += 1
print('你使用了智力药水,智力加一')
self.bag[command] -= 1
elif command == '美容药水':
self.face += 1
print('你使用了美容药水,颜值加一')
self.bag[command] -= 1
elif command == '彩票':
a = random.randint(1, 10)
# 如果抽中6,得大奖
if a == 6:
self.dollars += 15
print('恭喜你获得500W大奖!')
# 如果抽中2,得小奖
if (a == 2)|(a == 7):
self.dollars += 2
print('恭喜你获得500奖励!')
if a != 6 and a != 2:
print('很遗憾,没中奖.')
self.bag[command] -= 1
command = eval(input('是否继续?1或2:'))
if command == 1:
continue
elif command == 2:
break
else:
print('错误')
continue
except:
print('输入有误!')
continue
def study(self):
"""学习"""
while True:
try:
a = random.randint(100, 1000)
b = random.randint(100, 1000)
c = eval(input(f'{a} + {b} = '))
if c == a + b:
if not self.isInSchool:
self.knowledge += 1 * self.iq
print(f'回答正确,知识+{1 * self.iq},是否继续学习?1或2')
try:
d = eval(input())
if d == 1:
continue
elif d == 2:
break
else:
print('错误')
continue
except:
print('错误')
continue
else:
self.knowledge += 2 * self.iq
print(f'良好的学习环境使你事半功倍,知识+{2 * self.iq},是否继续学习?1或2')
try:
d = eval(input())
if d == 1:
continue
elif d == 2:
break
else:
print('错误')
continue
except:
print('错误')
continue
else:
print('回答错误,继续努力,是否继续学习?1或2')
try:
d = eval(input())
if d == 1:
continue
elif d == 2:
break
else:
print('错误')
continue
except:
print('错误')
continue
except:
print('错误,是否继续学习?1或2')
try:
d = eval(input())
if d == 1:
continue
elif d == 2:
break
else:
print('错误')
continue
except:
print('错误')
continue
class Store:
"""
定义一个商店类
"""
# 商品字典
wares = {}
def __init__(self):
self.wares = {
'强壮药水': 1,
'智力药水': 2,
'美容药水': 1,
'彩票': 2
}
def init(self):
print('你进入了商店')
print('商品列表:')
print('╔════════════════════════╦═══════════════════════╗')
print('║ 商 品 ║ 价 格 ║')
print('╠════════════════════════╬═══════════════════════╣')
for key, value in self.wares.items():
print(f'║ {key} ║ {value} ║')
print('╠═══════════════════════╬═══════════════════════╣')
print('您的钱数:', my.dollars)
while True:
a = input('输入商品名称,或输入0退出')
if a == '0':
break
else:
try:
dollars = self.wares[a]
if my.dollars < dollars:
print('钱不足')
b = input('是否重新输入?(是:1,否:2)')
if b == '1':
continue
elif b == '2':
break
else:
print('错误')
else:
my.dollars -= dollars
try:
my.bag[a] += 1
except:
my.bag[a] = 1
print('购买成功')
except:
print('错误')
b = input('是否重新输入?(是:1,否:2)')
if b == '1':
continue
elif b == '2':
break
else:
print('错误')
class School:
"""
定义一个学校类
"""
def __init__(self):
pass
def init(self):
print('你进入了学校,这里学习氛围良好,学习知识×2')
my.isInSchool = True
my.study()
self.leaveIt()
def leaveIt(self):
print('你离开了学校')
my.isInSchool = False
def showMainMenu():
"""显示主菜单"""
while True:
print('主菜单')
print('命令:')
print('去商店(1)')
print('打开背包(2)')
print('学习(3)')
if my.old <= 22:
print('去学校(4)')
command = eval(input('输入命令...'))
if command == 1:
store.init()
elif command == 2:
my.openBag()
elif command == 3:
my.study()
elif command == 4:
school.init()
else:
break
print("****************************************************")
print('* *')
print('* -人生重开模拟器- *')
print('* *')
print('* *')
print('* 但惜今生 不问来世 *')
print('* 你猜你要怎么着? *')
print('* By jiang *')
print('* *')
print("****************************************************")
print('按回车键继续!')
input()
print('---------------------------------------------------')
#0.游戏版号与署名
print('设计与制作:JIANG')
print('游戏版本号:2.1.1')
print('--------------------------------------------------')
print('按回车键继续!')
input()
print('***************************************************')
print('** 这垃圾人生我一秒钟也不想多呆! **')
print('***************************************************')
print('按回车键继续!')
input('')
print('按回车键进行抽卡!')
#设置抽卡系统
card_pool=[]
my = Peple()
store = Store()
school = School()
card_1=random.randint(0,2) #face
card_2=random.randint(3,5) #iq
card_3=random.randint(6,8) #home
card_4=random.randint(9,11) #strong
card_pool.append(card_normal[card_1])
card_pool.append(card_normal[card_2])
card_pool.append(card_normal[card_3])
card_pool.append(card_normal[card_4])
rare_cards=[]
rare_card_1=random.randint(0,1)
rare_card_2=random.randint(2,3)
rare_card_3=random.randint(4,5)
rare_card_4=random.randint(6,7)
rare_cards.append(card_rare[rare_card_1])
rare_cards.append(card_rare[rare_card_2])
rare_cards.append(card_rare[rare_card_3])
rare_cards.append(card_rare[rare_card_4])
card_5=random.randint(0,1)
card_6=random.randint(2,3)
rare_chance=random.randint(1,6)
if rare_chance == 1:
pass
elif rare_chance == 2 or rare_chance == 3:
card_pool.append(rare_cards[card_5])
elif rare_chance == 4 or rare_chance == 5:
card_pool.append(rare_cards[card_6])
elif rare_chance == 6:
card_pool.append(rare_cards[card_5])
card_pool.append(rare_cards[card_6])
special_chance = random.randint(1,6)
while special_chance == 1:
card_7 = random.randint(0,3)
card_pool.append(card_special[card_7])
break
#垃圾卡洗牌
random.shuffle(card_junk)
junk_card = 0
#其他卡放完了放垃圾卡
while len(card_pool) <8:
junk_card = card_junk.pop()
card_pool.append(junk_card)
input()
print('抽卡中... ...')
time.sleep(1.5)
print()
print('————你抽到的卡————')
#抽牌库洗牌
random.shuffle(card_pool)
for x in card_pool[0:-1]:
print(x)
time.sleep(0.5)
time.sleep(1.0)
print(card_pool[-1])
print('————按回车键继续!————')
#1. 设置角色初始属性
# 颜值、体质、智力、家境,这几项属性点数总和不能超过设定的阈值(这里我们设置为20), 每一项取值都是 1-10 之间
# 使用循环, 使玩家在输入错误的时候, 可以重新输入.
while True:
#尽管是while True,但不一定是死循环,可以在代码块里使用break跳出整个循环
print("请设置初始属性(可用属性点总数为:20)")
print()
face = int(input("请输入颜值属性点数(1-10):"))
print("剩余可用属性点总数为:",20-face)
print()
strong = int(input("请输入体质属性点数(1-10):"))
print("剩余可用属性点总数为:",20-face-strong)
print()
iq = int(input("请输入智力属性点数(1-10):"))
print("剩余可用属性点总数为:",20-face-strong-iq)
print()
home = int(input("请输入家境属性点数(1-10):"))
print()
# 通过使用条件语句, 对于玩家输入的属性值做出校验检查
# 以下这段逻辑, 也可以使用elif:使用 elif 则是多个分支只能进一个, 一旦某个条件满足了, 就不会再走其他的分支了.
# 这里虽然没有使用 elif , 但是使用了 continue, 一旦某个条件满足, continue 就会跳出本次循环, 后续的条件判定不再执行
if face < 1 or face > 10:
print("颜值属性点数设置有误!")
continue
if strong < 1 or strong > 10:
print("体质属性点数设置有误!")
continue
if iq < 1 or iq > 10:
print("智力属性点数设置有误!")
continue
if home < 1 or home > 10:
print("家境属性点数设置有误!")
continue
if face + strong + iq + home > 20: # 如果当前的条件都没有被触发, 则认为玩家输入的数据是合法的.
print("属性点数设置错误!属性点数之和超出阈值(20)")
continue
my.face = face
my.strong = strong
my.iq = iq
my.home = home
my.dollars = home
print("初始属性设置完成!")
# 此时就可以跳出循环结束输入了
print("颜值 体质 智力 家境")
print(f"{face:3}{strong:5} {iq:4} {home:4}")
input('(按回车键开始你的人生)')
print()
break
#垃圾牌:card_junk =
# ['*你触发了我的陷阱卡*(junk)', '小丑牌(junk)', '左眼胎记(junk)', '讨厌香菜(junk)',
# '上个存档的轮回(junk)', '*这是张闪卡*(junk)', '*这是张废卡*(junk)', '红桃A(junk)',
# '好坏骰子(junk)', '凡庸(junk)', '鲤鱼王']
while '*你触发了我的陷阱卡*(junk)' in card_pool:
print('-----------------------------------------')
print('*你出生时触发了我的陷阱卡*')
print('*陷阱卡特效*')
trap_card = random.randint(1,7)
trap_point = random.randint(1,4)
if trap_card == 1:
print('*丑*(No.1):颜值 -1')
face -= 1
elif trap_card == 2:
print('*疾*(No.2):体质 -1')
strong -= 1
elif trap_card == 3:
print('*愚*(No.3):智力 -1')
iq -= 1
elif trap_card == 4:
print('*贫*(No.4):家境 -1')
home -= 1
elif trap_card == 5:
print('*庸*(No.5):随机属性 -1')
if trap_point == 1:
face -= 1
elif trap_point == 2:
strong -= 1
elif trap_point == 3:
iq -= 1
else:
home -= 1
elif trap_card == 6:
print('*污秽之灵*(No.6):随机属性 -1')
if trap_point == 1:
face -= 1
elif trap_point == 2:
strong -= 1
elif trap_point == 3:
iq -= 1
else:
home -= 1
else:
print('*上帝之怒*(No.7):随机属性 -2')
if trap_point == 1:
face -= 2
elif trap_point == 2:
strong -= 2
elif trap_point == 3:
iq -= 2
else:
home -= 2
break
while '小丑牌(junk)' in card_pool:
print('-----------------------------------------')
print('你出生时抽到了*小丑牌*!')
time.sleep(0.8)
print('来和小丑玩个游戏吧,玩完你就可以出生了喔!')
time.sleep(0.8)
print('小丑:我面前有三个倒放的罐子,有一个下面有宝藏,你猜猜是哪个吧')
joker_point = random.randint(1,3)
choose = int(input('你选择(1, 2 or 3):'))
trap_point = random.randint(1,4)
if choose == joker_point:
print('小丑:哼,不过就是运气罢了... ...(随机属性 +1)')
if trap_point == 1:
face += 1
elif trap_point == 2:
strong += 1
elif trap_point == 3:
iq += 1
else:
home += 1
else:
print('小丑:哈哈哈哈,接受惩罚吧... ...(随机属性 -1)')
if trap_point == 1:
face -= 1
elif trap_point == 2:
strong -= 1
elif trap_point == 3:
iq -= 1
else:
home -= 1
break
while '左眼胎记(junk)' in card_pool:
birthmark = True
break
while '讨厌香菜(junk)' in card_pool:
coriander = True
break
while '好坏骰子(junk)' in card_pool:
print('-----------------------------------------')
print('你出生时抽到了*好坏骰子*!')
time.sleep(0.8)
print('你出生前使用了好坏骰子。')
time.sleep(0.8)
print('你将骰子向空中投去,骰子在空中翻滚', end='')
time.sleep(0.3)
print('.',end='')
time.sleep(0.3)
print('.',end='')
time.sleep(0.3)
print('.',end='')
time.sleep(0.3)
print('.',end='')
time.sleep(0.3)
print('.',end='')
time.sleep(0.3)
print('.',end='')
time.sleep(0.3)
badOrGood_point = random.randint(1,2)
dice_point = random.randint(1,6)
trap_point = random.randint(1,4)
if badOrGood_point == 1:
print('你接住了骰子。')
time.sleep(0.8)
print('幸好,这是个好骰子。(投出的点数会加到随机属性上)')
time.sleep(0.8)
if dice_point == 1:
print('你投出了 ———— 1')
if trap_point == 1:
face += 1
elif trap_point == 2:
strong += 1
elif trap_point == 3:
iq += 1
else:
home += 1
elif dice_point == 2:
print('你投出了 ———— 2')
if trap_point == 1:
face += 2
elif trap_point == 2:
strong += 2
elif trap_point == 3:
iq += 2
else:
home += 2
elif dice_point == 3:
print('你投出了 ———— 3')
if trap_point == 1:
face += 3
elif trap_point == 2:
strong += 3
elif trap_point == 3:
iq += 3
else:
home += 3
elif dice_point == 4:
print('你投出了 ———— 4')
if trap_point == 1:
face += 4
elif trap_point == 2:
strong += 4
elif trap_point == 3:
iq += 4
else:
home += 4
elif dice_point == 5:
print('你投出了 ———— 5')
if trap_point == 1:
face += 5
elif trap_point == 2:
strong += 5
elif trap_point == 3:
iq += 5
else:
home += 5
else:
print('你投出了 ———— 6')
if trap_point == 1:
face += 6
elif trap_point == 2:
strong += 6
elif trap_point == 3:
iq += 6
else:
home += 6
else:
print('你接住了骰子。')
time.sleep(0.8)
print('糟糕,这是个坏骰子。(投出的点数会减在随机属性上)')
time.sleep(0.8)
if dice_point == 1:
print('你投出了 ———— 1')
if trap_point == 1:
face -= 1
elif trap_point == 2:
strong -= 1
elif trap_point == 3:
iq -= 1
else:
home -= 1
elif dice_point == 2:
print('你投出了 ———— 2')
if trap_point == 1:
face -= 2
elif trap_point == 2:
strong -= 2
elif trap_point == 3:
iq -= 2
else:
home -= 2
elif dice_point == 3:
print('你投出了 ———— 3')
if trap_point == 1:
face -= 3
elif trap_point == 2:
strong -= 3
elif trap_point == 3:
iq -= 3
else:
home -= 3
elif dice_point == 4:
print('你投出了 ———— 4')
if trap_point == 1:
face -= 4
elif trap_point == 2:
strong -= 4
elif trap_point == 3:
iq -= 4
else:
home -= 4
elif dice_point == 5:
print('你投出了 ———— 5')
if trap_point == 1:
face -= 5
elif trap_point == 2:
strong -= 5
elif trap_point == 3:
iq -= 5
else:
home -= 5
else:
print('你投出了 ———— 6')
if trap_point == 1:
face -= 6
elif trap_point == 2:
strong -= 6
elif trap_point == 3:
iq -= 6
else:
home -= 6
break
while '凡庸(junk)' in card_pool:
print('-----------------------------------------')
print('你出生时抽到了*凡庸*')
time.sleep(0.8)
print('你',end='')
time.sleep(0.3)
print('愿',end='')
time.sleep(0.3)
print('意',end='')
time.sleep(0.3)
print('接',end='')
time.sleep(0.3)
print('受',end='')
time.sleep(0.3)
print('凡',end='')
time.sleep(0.3)
print('庸',end='')
time.sleep(0.3)
print('的',end='')
time.sleep(0.3)
print('一',end='')
time.sleep(0.3)
print('生',end='')
time.sleep(0.3)
print('吗',end='')
time.sleep(0.3)
print('?')
time.sleep(0.5)
choose = int(input('1:愿意\n2:拒绝\n你选择:'))
if choose == 1:
time.sleep(0.3)
print('接受凡庸的尽头,将是深渊')
else:
time.sleep(0.3)
print('即便拒绝了凡庸,或许你也逃脱不了命运... ...')
break
while '鲤鱼王' in card_pool:
print('-----------------------------------------')
print('你出生时抽到了*鲤鱼王*!')
time.sleep(0.8)
print('就决定是你了!鲤鱼王,使用*水溅跃*!')
time.sleep(0.8)
print('但',end='')
time.sleep(0.3)
print('是',end='')
time.sleep(0.3)
print('什',end='')
time.sleep(0.3)
print('么',end='')
time.sleep(0.3)
print('也',end='')
time.sleep(0.3)
print('没',end='')
time.sleep(0.3)
print('有',end='')
time.sleep(0.3)
print('发',end='')
time.sleep(0.3)
print('生',end='')
time.sleep(0.3)
print('.',end='')
time.sleep(0.3)
print('.',end='')
time.sleep(0.3)
print('.')
print('评价是不如皮卡丘~')
time.sleep(0.5)
break
my.face = face
my.strong = strong
my.iq = iq
my.home = home
my.dollars = home
print('-----------------------------------------')
input('(按回车键继续)')
print()
# 2.设置生成角色的性别
# 使用 random.randint(beg, end), 就能生成 [beg, end] 随机整数
point = random.randint(1, 6)
#此处的random是python中的一个模块! 相当于C++中的STL(封装好的代码块,我们直接使用即可!)
#这里使用其他模块,需要先使用import语句,把模块的名字“导入”进来,pycharm有自动导入的功能
# print(f'point = {point}')
while '胎死腹中(rare)' in card_pool:
chance_live = random.randint(1,12-strong)
if chance_live == 1:
time.sleep(1.0)
info = '你本应胎死腹中,但你的挣扎让老天爷动容。你奇迹般的活下来了'
print(info)
strong -= 5
break
else:
time.sleep(1.0)
info = '你不幸胎死腹中!'
print(info)
print('游戏结束!')
sys.exit(0)
if point % 2 == 1:
gender = 'boy'
print('你出生了,是个男孩。')
else:
gender = 'girl'
print('你出生了,是个女孩。')
# 3.设置角色的出生环境及背景
# 为了简单方便, 这里我们就直接生成 1-3 的随机数进行模拟
#这里我们将角色的家庭背景及环境设置四个档位梯度,不同档位会对属性有加成或减低
#抽卡到的家境点数和稀有卡会造成影响
point = random.randint(1, 3)
while birthmark:
print('你出生时,左眼上有胎记。')
face -= 1
break
while coriander:
print('你出生时,就已经讨厌香菜。(但是作者是香菜党...)')
break
while '白痴(rare)' in card_pool:
fool = True
break
while '爱因斯坦(rare)' in card_pool:
smart = True
time.sleep(1.0)
print('你一出生就会说话了。(因为你抽到了*爱因斯坦*)')
iq += 10
break
while '家徒四壁(normal)' in card_pool:
home -= 3
break
time.sleep(1.0)
if '富可敌国(rare)' in card_pool:
print('你出生在首都, 家里经营着海内外市值上亿的公司')
company_have=True
home += 10
elif '孤苦伶仃(rare)' in card_pool:
if point == 1:
print('你孤苦无依,独自降生到这个世界上')
lonely_self=True
home -= 10
elif '富二代(normal)' in card_pool:
if point == 1:
print('你出生在首都, 家里经营着海内外市值上亿的公司')
company_have=True
home += 10
elif point == 2:
print('你出生在县城, 父亲是当地有名的暴发户')
home += 8
else:
print('你出生在偏僻的乡村,但是家里负责矿山的开采')
print('你与村里其他的孩子处境截然不同,遭受嫉妒')
home += 8
iq -= 1
elif home == 10:
# 第一档
print('你出生在首都, 你的父母是高官政要')
home += 3
iq += 3
face += 2
elif 7 <= home <= 9:
# 第二档
if point == 1:
print('你出生在大城市, 父母是公务员')
face += 2
elif point == 2:
print('你出生在大城市, 父母是企业高管')
home += 2
else:
print('你出生在大城市, 父母是大学教授')
iq += 2
elif 4 <= home <= 6:
# 第三档
if point == 1:
print('你出生在县城, 你的父母是医生')
strong += 1
elif point == 2:
print('你出生在乡镇, 你的父母是老师')
iq += 1
else:
print('你出生在乡镇, 你的父母是个体户')
home += 1
else:
# 第四档
if point == 1:
print('你出生在农村, 你的父母是辛苦劳作的农民')
strong += 1
face -= 2
elif point == 2:
print('你出生在农村, 你的父母奔波劳碌,家庭状况不是很好')
home -= 1
else:
point_x=random.randint(1,2)
if point_x==1:
print('你出生在穷乡僻壤, 你的父母艰辛茹苦,抚养你长大')
strong -= 1
else:
print('你孤苦无依,独自降生到这个世界上')
lonely_self=True
home -= 10
time.sleep(1.0)
print()
print('-----------------------')
print("- 颜值 体质 智力 家境 -")
print(f"- {face:3}{strong:5} {iq:4} {home:4} -")
print('-----------------------')
# 4.童年阶段
for age in range(1, 11):
# 把一整年的打印都整理到一个字符串中, 在这一年的结尾统一打印
info = f'你今年 {age} 岁. '
my.old = age
# 生成一个 [1, 3] 的随机整数.
point = random.randint(1, 3)
point_y = random.randint(1,3)
# 接下来编写各种事件的代码
if strong <= -8:
info += '你生了场重病,'
if '金刚不坏(rare)' in card_pool:
info += '但是你金刚不坏,渡过危机'
strong +=5
else:
info += "你不治身亡。"
print(info)
print('游戏结束!')
sys.exit(0)
elif home <= -10:
if lonely_self:
info += "你因没饭吃而饥饿。"
strong -= 8
else:
info += "你家破产了,你因没饭吃而饥饿。"
strong -= 5
elif lonely_self == True:
if adopted == False:
if point == 1:
info += '你的家庭养不起你,你不幸被遗弃!'
print(info)
print('游戏结束!')
sys.exit(0)
elif point == 2:
info += '你的母亲丢下了你,你被裹在襁褓里,放在路边。'
print(info)
point_x=random.randint(1,2)
if point_x==1:
print('你的命运是如此悲惨,以至于没有好心人收养你。')
print('游戏结束!')
sys.exit(0)
else:
print('有位好心人发现了你,将你拾起,收养了你。')
adopted = True
if point_y == 1:
home += 3
elif point_y == 2:
home += 5
elif point_y == 3:
home += 10
elif point == 3:
info += '你被父母送到了孤儿院里,'
print(info)
print('有好心人发现了你,收养了你。')
adopted = True
if point_y == 1:
home += 3
elif point_y == 2:
home += 5
elif point_y == 3:
home += 10
elif adopted == True:
if strong < 4 or point_y == 3:
info += '你患了一场大病,'
if home >= 5:
info += '在养父母的悉心照料下, 你康复了'
strong += 1
home -= 1
else:
info += '你的养父母无法照料你, 你的身体每况愈下'
strong -= 1
# 颜值触发的事件
elif point_y == 1 and face <= 4 and age >= 7:
info += '你由于很丑, 其他小朋友不喜欢你. '
if iq > 5:
info += '你决定通过学习提升自己!'
iq += 1
else:
if gender == 'boy':
info += '你和别的小朋友经常打架!'
strong += 1
iq -= 1
elif gender == 'girl':
info += '你经常照镜子,对自己的颜值没有自信'
face -= 1
iq -= 1
else:
info += '你经常被别的小朋友欺负!'
strong -= 1
elif point_y == 1 and face >= 6 and age >=7:
info += '你由于很好看, 经常被长辈们夸赞. '
if iq > 5:
info += '你经常照镜子,思考自己的存在。'
iq += 1
else:
if gender == 'boy':
info += '你和别的小朋友关系很好'
strong += 1
face += 1
if gender == 'girl':
info += '你经常照镜子,学会打扮自己'
face +=1
# 智商触发的事件
elif point_y == 2 and 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:
# 家境 < 4
info += '你虽然出身条件不好,但却有快乐的童年'
if point == 1:
strong -= 1
elif point == 2:
iq -= 1
else:
pass
elif point_y == 2 and iq >5:
info += '你有点小聪明,'
if age <7:
info += '你喜欢一个人拼拼图、搭积木。'
iq += 1
else:
if home >=8:
info += '你的养父母把你送到更好的学校学习'
iq += 1
elif 4 <= home <= 7:
info += '你在县城的小学名列前茅'
iq += 1
else:
info += '获得了老师的赞赏'
if point == 1:
face += 1
elif point == 2:
iq += 1
else:
pass
# 健康成长事件
else:
info += '你一生健康,没有患过大病 '
if point == 1:
info += '你的身体很强壮'
strong += 1
elif point == 2:
info += '你的自身条件不断提升'
face += 1
else:
# 无事发生
pass
elif fool == True:
info += '你是一个白痴,'
if home >=7:
info += '你的父母耐心教导你,'
if point == 1:
info += '你不为所动,父母觉得是对牛弹琴'
iq -= 2
home -= 1
elif point == 2:
info += '你有所感悟,但是不多'
iq += 1
else:
info += '你顿悟了!头好痒,要长脑子了!'
iq +=5
fool = False
elif home <7:
if face >=6:
info += '但你长得很好看,'
if point_y == 1 :
info += '你照镜子,但是只会呆呆地看着。'
face += 1
iq += 1
elif point_y == 2 and age < 7:
info += '你由于很好看, 经常被长辈们夸赞.'
face += 3
elif point_y == 2 and age >=7:
info += '你由于很好看, 经常被长辈们夸赞. '
elif point_y == 3:
if iq >= 5 or point == 1:
info += '你发呆的时候顿悟了!'
iq += 5
fool = False
elif point == 2:
info += '你喜欢发呆... ...'
iq += 1
else:
info += '你不知道你的相貌意味着什么,'
if gender == 'boy':
info += '你总是在外头弄得自己一身泥泞'
strong += 1
face -= 1
elif gender == 'girl':
info += '你害怕别人的目光'
face -=1
iq -= 1
else:
if iq >= 5 and point == 1:
info += '你发呆的时候顿悟了!'
iq += 5
fool = False
elif point == 2:
info += '你喜欢发呆... ...'
iq += 1
else:
if gender == 'boy':
info += '别的小朋友总是欺负你'
strong -= 1
face -= 1
elif gender == 'girl':
info += '你只和你的娃娃相伴'
face -=1
iq -= 1
elif smart == True:
if gender == 'girl' and home <= 3 and point == 1:
info += '你的家庭封建思想重男轻女,你不幸被遗弃!'
print(info)
print('游戏结束!')
sys.exit(0)
#sys也是python中提供的一个模块,直接使用即可
# 体质触发的事件
# 使用 elif 是为了保证每年只触发一个事件!
elif strong < 4 or ('体弱多病(normal)' in card_pool) and point_y < 3:
info += '你患了一场大病'
if home >= 5 or ('金刚不坏(rare)' in card_pool):
info += '在父母的悉心照料下, 你康复了'
strong += 1
home -= 1
else:
info += '你的父母无法照料你, 你的身体每况愈下'
strong -= 1
elif point_y==3 and ('身强体壮(normal)' in card_pool):
info += '你身强体壮,几乎不生病'
strong += 2
elif point_y==3 and ('体弱多病(normal)' in card_pool):
info += '你体弱多病,身体很虚弱'
strong -= 2
# 智商触发的事件(优先)
elif point_y == 3 and ('聪颖过人(normal)' in card_pool):
info += '你发现自己尤其聪颖,常常思考世界的存在'
iq += 3
elif point_y == 2 and iq > 5 or ('聪颖过人(normal)' in card_pool):
info += '你过于聪明,被称为神童,'
if age <7:
info += '你喜欢一个人看书学习,很快就掌握了高中的知识'
iq += 1
else:
if home >=8:
info += '你的父母发现你天赋异禀,将你送到更好的学校学习'
iq += 2
elif 4 <= home <= 7:
info += '你在县城的小学名列前茅,你不屑于做小学的题目'
iq += 2
else:
info += '你在课堂上解决了老师都不会的难题,'
if point == 1:
info += '你被同学所羡慕'
face += 2
iq += 1
elif point == 2:
info += '你被同学所嫉妒'
iq += 3
else:
iq += 3
# 颜值触发的事件
elif point_y == 3 and ('相貌出众(normal)' in card_pool):
info += '你经常照镜子,发现自己相貌异常出众!'
face += 2
elif point_y == 3 and ('歪瓜裂枣(normal)' in card_pool):
info += '你经常照镜子,发现自己长得歪瓜裂枣!'
face -= 2
elif point_y == 1 and face <= 4 or ('歪瓜裂枣(normal)' in card_pool) and age >= 7:
info += '你由于很丑, 其他小朋友不喜欢你. '
if iq > 5:
info += '你决定通过学习提升自己!'
iq += 3
else:
if gender == 'boy':
info += '你和别的小朋友经常打架!'
strong += 1
elif gender == 'girl':
info += '你经常照镜子,对自己的颜值没有自信'
face -= 1
else:
info += '你经常被别的小朋友欺负!'
strong -= 1
elif point_y == 1 and face >= 6 or ('相貌出众(normal)' in card_pool) and age >=7:
info += '你由于很好看, 经常被长辈们夸赞. '
if iq > 5:
info += '你经常照镜子,思考自己的存在,常常有所顿悟 '
iq += 3
else:
if gender == 'boy':
info += '你和别的小朋友关系很好 '
strong += 1
face += 1
if gender == 'girl':
info += '你经常照镜子,学会打扮自己 '
face +=1
# 健康成长事件
else:
info += '你一生健康,没有患过大病 '
if point == 1:
info += '你的身体很强壮,但是没有人发现你的潜能'
strong += 1
iq -= 2
elif point == 2:
info += '你的自身条件不断提升,继续努力学习新的知识'
face += 1
iq += 1
else:
# 无事发生
pass
elif '天使下凡(rare)' in card_pool:
# 体质触发的事件
if strong < 4 or ('体弱多病(normal)' in card_pool)and point_y < 3:
info += '你患了一场大病'
if home >= 5 or ('金刚不坏(rare)' in card_pool):
info += '在父母的悉心照料下, 你康复了'
strong += 1
home -= 1
else:
info += '你的父母无法照料你, 你的身体每况愈下'
strong -= 1
elif point_y==3 and ('身强体壮(normal)' in card_pool):
info += '你身强体壮,几乎不生病'
strong += 2
elif point_y==3 and ('体弱多病(normal)' in card_pool):
info += '你体弱多病,身体很虚弱'
strong -= 2
# 颜值触发的事件
elif point_y == 1 :
info += '你经常照镜子,发现自己相貌异常出众!'
face += 2
elif point_y == 2 and age < 7:
info += '你由于很好看, 经常被长辈们夸赞.'
face += 3
elif point_y == 2 and age >=7:
info += '你由于很好看, 经常被长辈们夸赞. '
if iq > 5:
info += '你经常照镜子,认识到自己的美貌将会给自己带来什么'
iq += 2
face += 2
else:
if gender == 'boy':
info += '你和别的小朋友关系很好'
strong += 1
face += 1
if gender == 'girl':
info += '你经常照镜子,学会打扮自己'
face +=1
iq += 1
elif point_y == 3:
chance = random.randint(1,3)
info += '你被星探看中,准备去面试童星,'
if chance > 1:
info += '但你的才华看来还不够,面试失败... ...'
face -= 2
else:
info += '结果面试成功了,你大放异彩!'
face += 2
home += 2
elif '妖魔鬼怪(rare)' in card_pool:
if home <= 3 and point == 1:
info += '你长相奇丑,而你的父母封建思想严重,你不幸被遗弃!'
print(info)
print('游戏结束!')
sys.exit(0)
#sys也是python中提供的一个模块,直接使用即可
# 体质触发的事件
elif strong < 4 or ('体弱多病(normal)' in card_pool)and point_y < 3:
info += '你患了一场大病'
if home >= 5 or ('金刚不坏(rare)' in card_pool):
info += '在父母的悉心照料下, 你康复了'
strong += 1
home -= 1
else:
info += '你的父母无法照料你, 你的身体每况愈下'
strong -= 1
elif point_y==3 and ('身强体壮(normal)' in card_pool):
info += '你身强体壮,几乎不生病'
strong += 2
elif point_y==3 and ('体弱多病(normal)' in card_pool):
info += '你体弱多病,身体很虚弱'
strong -= 2
# 颜值触发的事件
elif point_y == 3 and ('歪瓜裂枣(normal)' in card_pool):
info += '你经常照镜子,发现自己长得奇丑无比!'
face -= 2
elif point_y == 1 and face <= 4 or ('歪瓜裂枣(normal)' in card_pool) and age >= 7:
info += '你由于实在是太丑, 其他小朋友讨厌你. '
if iq > 5:
info += '你决定通过学习提升自己!'
iq += 1
else:
if gender == 'boy':
info += '你和别的小朋友经常打架!'
strong += 1
iq -= 1
elif gender == 'girl':
info += '你不敢照镜子'
face -= 2
iq -= 1
else:
info += '你经常被别的小朋友欺负!'
strong -= 1
# 智商触发的事件
elif point_y == 3 and ('聪颖过人(normal)' in card_pool):
info += '你发现自己聪颖过人!'
iq += 2
elif point_y == 3 and ('略显迟钝(normal)' in card_pool):
info += '你发现自己比别的小朋友迟钝'
iq -= 2
elif point_y == 2 and iq < 5 or ('略显迟钝(normal)' in card_pool):
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:
# 家境 < 4
info += '你虽然出身条件不好,但却有快乐的童年'
if point == 1:
strong -= 1
elif point == 2:
iq -= 1
else:
pass
elif point_y == 2 and iq > 5 or ('聪颖过人(normal)' in card_pool):
info += '你有点小聪明,'
if age <7:
info += '你喜欢一个人拼拼图、搭积木。'
iq += 1
else:
if home >=8:
info += '你的父母把你送到更好的学校学习'
iq += 1
elif 4 <= home <= 7:
info += '你在县城的小学名列前茅'
iq += 1
else:
info += '获得了老师的赞赏'
if point == 1:
face += 1
elif point == 2:
iq += 1
else:
pass
# 健康成长事件
else:
info += '你一生健康,没有患过大病 '
if point == 1:
info += '你的身体很强壮'
strong += 1
elif point == 2:
info += '你的自身条件不断提升'
face += 1
else:
# 无事发生
pass
else:
if gender == 'girl' and home <= 3 and point == 1:
info += '你的家庭封建思想重男轻女,你不幸被遗弃!'
print(info)
print('游戏结束!')
sys.exit(0)
#sys也是python中提供的一个模块,直接使用即可
# 体质触发的事件
# 使用 elif 是为了保证每年只触发一个事件!
elif strong < 4 or ('体弱多病(normal)' in card_pool) and point_y < 3:
info += '你患了一场大病'
if home >= 5 or ('金刚不坏(rare)' in card_pool):
info += '在父母的悉心照料下, 你康复了'
strong += 1
home -= 1
else:
info += '你的父母无法照料你, 你的身体每况愈下'
strong -= 1
elif point_y==3 and ('身强体壮(normal)' in card_pool):
info += '你身强体壮,几乎不生病'
strong += 2
elif point_y==3 and ('体弱多病(normal)' in card_pool):
info += '你体弱多病,身体很虚弱'
strong -= 2
# 颜值触发的事件
elif point_y == 3 and ('相貌出众(normal)' in card_pool):
info += '你经常照镜子,发现自己相貌异常出众!'
face += 2
elif point_y == 3 and ('歪瓜裂枣(normal)' in card_pool):
info += '你经常照镜子,发现自己长得歪瓜裂枣!'
face -= 2
elif point_y == 1 and face <= 4 or ('歪瓜裂枣(normal)' in card_pool) and age >= 7:
info += '你由于很丑, 其他小朋友不喜欢你. '
if iq > 5:
info += '你决定通过学习提升自己!'
iq += 1
else:
if gender == 'boy':
info += '你和别的小朋友经常打架!'
strong += 1
iq -= 1
elif gender == 'girl':
info += '你经常照镜子,对自己的颜值没有自信'
face -= 1
iq -= 1
else:
info += '你经常被别的小朋友欺负!'
strong -= 1
elif point_y == 1 and face >= 6 or ('相貌出众(normal)' in card_pool) and age >=7:
info += '你由于很好看, 经常被长辈们夸赞. '
if iq > 5:
info += '你经常照镜子,思考自己的存在。'
iq += 1
else:
if gender == 'boy':
info += '你和别的小朋友关系很好'
strong += 1
face += 1
if gender == 'girl':
info += '你经常照镜子,学会打扮自己'
face +=1
# 智商触发的事件
elif point_y == 3 and ('聪颖过人(normal)' in card_pool):
info += '你发现自己聪颖过人!'
iq += 2
elif point_y == 3 and ('略显迟钝(normal)' in card_pool):
info += '你发现自己比别的小朋友迟钝'
iq -= 2
elif point_y == 2 and iq < 5 or ('略显迟钝(normal)' in card_pool):
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:
# 家境 < 4
info += '你虽然出身条件不好,但却有快乐的童年'
if point == 1:
strong -= 1
elif point == 2:
iq -= 1
else:
pass
elif point_y == 2 and iq > 5 or ('聪颖过人(normal)' in card_pool):
info += '你有点小聪明,'
if age <7:
info += '你喜欢一个人拼拼图、搭积木。'
iq += 1
else:
if home >=8:
info += '你的父母把你送到更好的学校学习'
iq += 1
elif 4 <= home <= 7:
info += '你在县城的小学名列前茅'
iq += 1
else:
info += '获得了老师的赞赏'
if point == 1:
face += 1
elif point == 2:
iq += 1
else:
pass
# 健康成长事件
else:
info += '你一生健康,没有患过大病 '
if point == 1:
info += '你的身体很强壮'
strong += 1
elif point == 2:
info += '你的自身条件不断提升'
face += 1
else:
# 无事发生
pass
my.face = face
my.strong = strong
my.iq = iq
my.home = home
my.old = age
my.dollars = home
print("是否进入选项?(Y/N)")
answer = input()
if answer == 'Y':
showMainMenu()
else:
pass
face = my.face
strong = my.strong
iq = my.iq
home = my.home
age = my.old
home = my.dollars
# 打印这一年发生的事情
print(info)
# 为了方便观察, 加一个小小的暂停操作
time.sleep(2.0)
print()
print('-----------------------')
print("- 颜值 体质 智力 家境 -")
print(f"- {face:3}{strong:5} {iq:4} {home:4} -")
print('-----------------------')
#5.青年阶段
for age in range(15, 25):
info = f'你今年{age}岁.'
my.old = age
point = random.randint(1, 3)
if strong <= -8:
info += '你生了场重病,'
if '金刚不坏(rare)' in card_pool:
info += '但是你金刚不坏,渡过危机'
strong +=5
else:
info += "你不治身亡。"
print(info)
print('游戏结束!')
sys.exit(0)
elif home <= -10:
info += "你家破产了,你因没饭吃而饥饿。"
strong -= 5
elif fool:
info += '你还是一个白痴,不被人正眼相待... ...'
strong -= 3
home -= 3
face -= 3
iq -= 3
elif company_have:
if age < 20:
info += '你在父母的公司里学习本领,励志继承公司'
iq += 3
home += 1
elif age == 20:
info += '你继承了公司'
else:
info += '在你的管理下,公司蒸蒸日上'
home += 2
elif solitude:
chance = random.randint(1,3)
if chance > 1:
info += '你独处在外,'
chance_x = random.randint(1,10)
if chance_x == 10:
info += '你遇到了劫匪,被绑架到了你不知道的地方... ...\n你一辈子注定在这里度过了。'
print(info)
print('游戏结束!')
sys.exit(0)
else:
info += '你打工维持生计,过着艰苦的生活'
home += 1
strong -= 1
else:
info += '你准备创业,'
chance_x = random.randint(1,3)
if chance_x == 1:
info += '结果创业成功了!'
home += 5
company_have = True
else:
info += '但是创业失败... ...'
home -= 1
strong -= 1
face -= 1
iq += 1
else:
#性别触发的事件
if gender == 'boy' and home <= 3 and point == 1:
info += '你爱而不得,你喜欢的人很讨厌你...'
#体质触发的事件
elif strong > 9 and point == 2:
info += '你参加省级运动会,并获得了金牌'
if home >= 5:
info += '你被以"体育特长生"的名义保送到顶尖大学深造'
home += 1
strong += 1
else:
chance = random.randint(1,2)
if chance == 1:
info += '你的体育天赋被埋没...'
home -= 2
face -= 1
else:
info += '你被以"体育特长生"的名义保送到顶尖大学深造'
home += 1
strong += 1
#颜值触发的事件
elif face >=6:
if home >7:
info += '你被许多人喜欢,如众星捧月'
if iq > 5:
info += '你颜值、家境、才华并存,人生顺利平坦'
home += 1
else:
info += '你出身条件好,但却不能自立自强,'
chance = random.randint(1,2)
if chance == 1:
info += '你自暴自弃'
iq -= 2
else:
info += '你决定努力学习'
iq += 2
else:
if iq < 6:
info += '你空有美貌,'
chance = random.randint(1,3)
if chance > 1:
info += '于是你自暴自弃'
strong -= 1
home -= 1
face -= 1
iq -= 1
else:
info += '但你决定奋发图强!'
iq += 3
face += 1
home += 3
else:
info += '你家境一般,却有才华与美貌,'
chance = random.randint(1,5)
if chance == 1:
info += '但是你自暴自弃'
strong -= 1
home -= 1
face -= 1
iq -= 1
else:
info += '你决定奋发图强!'
iq += 3
face += 1
home += 3
elif face <=5:
if iq >= 8:
if gender == 'boy':
info += '你虽然长相不好看,但是你的才华被女生欣赏'
iq += 1
face += 1
elif gender == 'girl':
info += '你虽然长相不好看,但是你的才华被男生欣赏'
iq += 1
face += 1
elif home >= 8:
info += '你的家境被别人羡慕... ...'
face += 1
chance = random.randint(1,2)
if chance == 1:
info += '但你挥霍无度,不思进取'
iq -= 2
home -= 2
else:
info += '但你投心学习'
iq += 2
else:
info += '你平平无奇,'
chance = random.randint(1,3)
if chance == 1:
info += '你只好打工挣钱'
home += 1
elif chance == 2:
info += '你感到迷茫,不知道人生应该怎么走... ...'
home -= 1
else:
info += '你想离开家庭,闯一番天地。'
chance_x = random.randint(1,2)
if chance_x == 1:
info += ' 你的父母阻止了你,你无计可施... ...'
home -= 1
face -= 1
else:
info += '你成功说服了父母!'
solitude = True
else:
if face >=6:
if home >7:
info += '你被许多人喜欢,如众星捧月'
if iq > 5:
info += '你颜值、家境、才华并存,人生顺利平坦'
home += 1
else:
info += '你出身条件好,但却不能自立自强,'
chance = random.randint(1,2)
if chance == 1:
info += '你自暴自弃'
iq -= 2
else:
info += '你决定努力学习'
iq += 2
else:
if iq < 6:
info += '你空有美貌,'
chance = random.randint(1,3)
if chance > 1:
info += '于是你自暴自弃'
strong -= 1
home -= 1
face -= 1
iq -= 1
else:
info += '但你决定奋发图强!'
iq += 3
face += 1
home += 3
else:
info += '你家境一般,却有才华与美貌,'
chance = random.randint(1,5)
if chance == 1:
info += '但是你自暴自弃'
strong -= 1
home -= 1
face -= 1
iq -= 1
else:
info += '你决定奋发图强!'
iq += 3
face += 1
home += 3
elif face <=5:
if iq >= 8:
if gender == 'boy':
info += '你虽然长相不好看,但是你的才华被女生欣赏'
iq += 1
face += 1
elif gender == 'girl':
info += '你虽然长相不好看,但是你的才华被男生欣赏'
iq += 1
face += 1
elif home >= 8:
info += '你的家境被别人羡慕... ...'
face += 1
chance = random.randint(1,2)
if chance == 1:
info += '但你挥霍无度,不思进取'
iq -= 2
home -= 2
else:
info += '你投心学习'
iq += 2
my.face = face
my.strong = strong
my.iq = iq
my.home = home
my.old = age
my.dollars = home
print("是否进入选项?(Y/N)")
answer = input()
if answer == 'Y':
showMainMenu()
else:
pass
face = my.face
strong = my.strong
iq = my.iq
home = my.home
age = my.old
home = my.dollars
# 打印这一年发生的事情
print(info)
time.sleep(1.0)
print()
print('-----------------------')
print("- 颜值 体质 智力 家境 -")
print(f"- {face:3}{strong:5} {iq:4} {home:4} -")
print('-----------------------')
#6.壮年阶段
for age in range(25,50):
info = f'你今年{age}岁.'
point = random.randint(1,3)
if strong <= -8:
info += '你生了场重病,'
if '金刚不坏(rare)' in card_pool:
info += '但是你金刚不坏,渡过危机'
strong +=5
else:
info += "你不治身亡。"
print(info)
print('游戏结束!')
sys.exit(0)
elif home <= -10:
info += "你家破产了,你因没饭吃而饥饿。"
strong -= 5
elif fool:
info += '你还是一个白痴,不被人正眼相待... ...'
strong -= 3
home -= 3
face -= 3
iq -= 3
else:
if home > 9 and company_have == False:
if point > 1:
info += '你事业有成,家庭和睦'
home += 2
face += 1
if point == 1:
chance_x = random.randint(1,10)
if chance_x >= 9:
if gender == 'boy':
info += '你和你的妻子总是吵架... ...'
strong -= 1
home -= 1
else:
info += '你和你的丈夫总是吵架... ...'
strong -= 1
home -= 1
else:
chance = random.randint(1,12)
if chance == 12:
info += '你出了车祸,车毁人亡... ...'
print(info)
print('游戏结束!')
sys.exit(0)
elif chance >= 6:
info += '你生了小病,身体微恙'
strong -= 1
else:
info += '你过了平静的一年... ...'
elif home <= 3 and point == 1 and company_have == False:
info += '你自立自强,不接受命运安排,走出自己生活的地方'
chance = random.randint(1, 3)
if chance == 1:
info += '你选择创业,创业成功!'
home += 10
strong += 2
company_have = True
else:
info += '你创业失败... ...'
home -= 2
elif home <=6 and point == 2 and company_have == False:
info += '你默默无闻地打工'
strong -= 1
home += 1
elif company_have and (point == 1 or point == 2):
info += '你的管理越来越好,公司蒸蒸日上'
home += 2
elif company_have and point == 3:
chance = random.randint(1,20)
if chance == 20:
if '金刚不坏(rare)' in card_pool:
info += '你出了车祸,但是你金刚不坏,渡过危机'
else:
info += '你出了车祸,车毁人亡... ...'
print(info)
print('游戏结束!')
sys.exit(0)
elif chance >= 16:
info += '你生了小病,身体微恙'
strong -= 1
else:
info += '你过了平静的一年... ...'
else:
chance = random.randint(1,20)
if chance == 20:
if '金刚不坏(rare)' in card_pool:
chance_x = random.randint(1,3)
if chance_x == 1:
info += '你出了车祸,但是你金刚不坏,渡过危机'
else:
info += '你出了车祸,但是随着年纪增大,你金刚不坏的力量渐渐消失... ...'
strong -=5
else:
info += '你出了车祸,车毁人亡... ...'
print(info)
print('游戏结束!')
sys.exit(0)
elif chance >= 16:
info += '你生了小病,身体微恙'
strong -= 1
else:
info += '你过了平静的一年... ...'
my.face = face
my.strong = strong
my.iq = iq
my.home = home
my.old = age
my.dollars = home
print("是否进入选项?(Y/N)")
answer = input()
if answer == 'Y':
showMainMenu()
else:
pass
face = my.face
strong = my.strong
iq = my.iq
home = my.home
age = my.old
home = my.dollars
# 打印这一年发生的事情
print(info)
time.sleep(1.0)
print()
print('-----------------------')
print("- 颜值 体质 智力 家境 -")
print(f"- {face:3}{strong:5} {iq:4} {home:4} -")
print('-----------------------')
#7.老年阶段
for age in range(50,110):
info = f'你今年{age}岁.'
point = random.randint(1,3)
if age ==109:
time.sleep(1.0)
print('你于109岁逝世,你度过了美好的一生,安然离开世界')
print('游戏结束!')
sys.exit(0)
elif strong <= -8:
info += '你生了场重病,'
if '金刚不坏(rare)' in card_pool:
chance_x = random.randint(1,3)
if chance_x == 1:
info += '但是你金刚不坏,渡过危机'
strong +=5
else:
info += '但是随着年纪增大,你金刚不坏的力量渐渐消失... ...'
strong -=1
else:
info += "你不治身亡。"
print(info)
print('游戏结束!')
sys.exit(0)
elif home <= -10:
info += "你老无依靠,饥寒交迫"
strong -= 5
elif fool:
info += '你还是一个白痴,不被人正眼相待... ...'
strong -= 3
home -= 3
face -= 3
iq -= 3
elif company_have:
if age < 70:
if point > 1:
info += '你感觉自己经营公司的体力越来越差... ...'
strong -= 1
else:
info += '你越来越老练,公司蒸蒸日上'
home += 1
elif age == 70:
info += '你退休了'
strong += 3
home -= 3
company_have = False
elif not(company_have):
if gender == 'boy':
if age < 65:
if point == 1:
info += '你习惯了你的工作,没有什么追求了'
home += 1
else:
chance = random.randint(1,20)
if chance == 20:
if '金刚不坏(rare)' in card_pool:
chance_x = random.randint(1,3)
if chance_x == 1:
info += '你出了车祸,但是你金刚不坏,渡过危机'
else:
info += '你出了车祸,但是随着年纪增大,你金刚不坏的力量渐渐消失... ...'
strong -=5
else:
info += '你出了车祸,车毁人亡... ...'
print(info)
print('游戏结束!')
sys.exit(0)
elif chance >= 16:
info += '你生了小病,身体微恙'
strong -= 1
else:
info += '你又过了平静的一年... ...'
elif age ==65:
info += '你退休了'
else:
if point > 1:
if home > 9:
info += '你拥有幸福的家庭,子孙满堂'
elif 4 <= home <= 9:
info += '你和老伴过着平淡的生活'
else:
info += '你独自生活,生活艰辛'
strong -= 1
else:
chance = random.randint(1,20)
if chance == 20:
info += '你出了车祸,车毁人亡... ...'
print(info)
print('游戏结束!')
sys.exit(0)
elif chance >= 10:
info += '你生了小病,身体微恙'
strong -= 1
else:
info += '你又过了平静的一年... ...'
elif gender == 'girl':
if age < 60:
if point == 1:
info += '你习惯了你的工作,没有什么追求了'
home += 1
else:
chance = random.randint(1,20)
if chance == 20:
if '金刚不坏(rare)' in card_pool:
chance_x = random.randint(1,3)
if chance_x == 1:
info += '你出了车祸,但是你金刚不坏,渡过危机'
else:
info += '你出了车祸,但是随着年纪增大,你金刚不坏的力量渐渐消失... ...'
strong -=5
else:
info += '你出了车祸,车毁人亡... ...'
print(info)
print('游戏结束!')
sys.exit(0)
elif chance >= 16:
info += '你生了小病,身体微恙'
strong -= 1
else:
info += '你又过了平静的一年... ...'
elif age ==60:
info += '你退休了'
else:
if point > 1:
if home > 9:
info += '你拥有幸福的家庭,子孙满堂'
elif 4 <= home <= 9:
info += '你和老伴过着平淡的生活'
else:
info += '你独自生活,生活艰辛'
strong -= 1
else:
chance = random.randint(1,20)
if chance == 20:
if '金刚不坏(rare)' in card_pool:
chance_x = random.randint(1,4)
if chance_x == 1:
info += '你出了车祸,但是你金刚不坏,渡过危机'
else:
info += '你出了车祸,但是随着年纪增大,你金刚不坏的力量渐渐消失... ...'
strong -=5
else:
info += '你出了车祸,车毁人亡... ...'
print(info)
print('游戏结束!')
sys.exit(0)
elif chance >= 10:
info += '你生了小病,身体微恙'
strong -= 1
else:
info += '你又过了平静的一年... ...'
my.face = face
my.strong = strong
my.iq = iq
my.home = home
my.old = age
my.dollars = home
print("是否进入选项?(Y/N)")
answer = input()
if answer == 'Y':
showMainMenu()
else:
pass
face = my.face
strong = my.strong
iq = my.iq
home = my.home
age = my.old
home = my.dollars
# 打印这一年发生的事情
print(info)
time.sleep(1.0)
print()
print('-----------------------')
print("- 颜值 体质 智力 家境 -")
print(f"- {face:3}{strong:5} {iq:4} {home:4} -")
print('-----------------------')
參、 实验中遇到的问题及感想体会
##(1)实验中遇到的问题
A. 变量太多导致看不过来,有点复杂,以及变量的整合都需要调用,很麻烦。
解决方法:采用类,类似于c语言中的结构体,但又不完全是。类的子类可以继承父类,而且能很好的整合在一起,很方便很快捷。
B. 代码过于长,如何快速定位到所需要的目标段,非常花时间,而且debug的话,错误非常难找。
解决方法:将代码分块一段一段的去debug,来测试代码段。而且pycharm代码段的左侧有小箭头,可以将一整块的代码收起或放下,大大增强了代码的可读性。
##(2)实验体会
纸上得来终觉浅,觉知此事须躬行。自从我着手启动自己的小程序,便深感自己踏足了一片未知的疆土。用户交互的奥秘、界面设计的艺术、逻辑架构的构建,它们不断鞭策我,让我投身其中,并不断地去搜索、探寻、琢磨、试错。
时光荏苒,Python课程的尾声已悄然而至,志强老师的悉心指导让我们在知识的海洋中稳步前行,每一步的开拓都令我回味无穷。
关于面向对象编程(OOP)的理解,此次实验让我有了更为深刻的体悟。我掌握了如何构建类、实例化对象,并在对象中定义属性和方法,这一切都让我对OOP有了更为清晰的认识。
在学习使用Tkinter库创建GUI界面的过程中(Qt太难了还不怎么会呜呜呜),我了解了图形用户界面如何去进行美观。通过实践,我学会了如何运用Tkinter创建窗口、标签、文本输入框、按钮、列表框等GUI组件,并将它们巧妙地组合起来,构建出功能完备的应用。(美观与方便使用是第一要义)。
在代码的调试过程中,我遭遇了诸多错误和异常情况,如文件缺失、用户输入不完整等。但正是这些挑战,让我学会了如何妥善处理这些问题,通过添加适当的错误处理和异常处理机制(异常处理(try...except...finally语句、raise语句、assert语句),让代码变得更加健壮和可靠。
Python的库资源丰富,合理使用这些库(如pygame)可以极大地减少我们的工作量,对解决实际问题具有极大的帮助。在实践中,我不断为程序添加新功能,这些体验是单纯阅读或听讲无法获得的,它们对于解决问题具有不可或缺的价值。
实验过程中遇到的问题虽然千奇百怪,但都在csdn的博客中找到了答案。经历了实验课的磨砺,我的内心变得更加坚韧,信息检索能力也得到了显著提升。我深刻体会到,编程能力的提升来源于不断的实践和挑战。
科学是第一生产力。运用Python可以解决各种问题以及实现各种功能。在往后的学习中,我也不会停下Python学习的脚步,继续向前,不断突破自己,提升自己。
##(3)课程感悟
**从
“人生苦短,我用Python”
启航!
到
“进程已结束,退出代码0”
靠岸……
短短三个月,
与Python课
从
心怀忐忑
的相识
到
满怀不舍
的离别
但
Python学习之帆
将
继续向前!
**
自从我开始学习Python编程以来,我的思维方式和解决问题的策略都发生了翻天覆地的变化。Python,这门强大的编程语言,不仅仅是一系列指令和函数的集合,更是我打开新世界的一把钥匙。
初识Python,我被其简洁明了的语法所吸引。相比于我之前接触过的其他编程语言(比如说c语言),Python的代码更为直观易懂,使得我能够更快地掌握编程的基础。因为c语言是面向过程的语言,而Python是面向对象的语言,它可以把很多Python中自带的模块给结合起来,可以实行很多方面的功能,而c语言却不可以。 Python具有字符串,而c语言只具有字符数组,这比c语言简化了很多很多。然而,这并不意味着学习Python是轻而易举的。在编写代码的过程中,我时常会遇到各种各样的难题,需要不断地试错、调试,才能找到正确的解决方案。
通过这一学期的学习,我主要了解了以下知识:
(1)Python的基本控制语句;
(2)对序列、列表、元组、字典、集合的学习和运用(一定要分清!);
(3)对字符串,以及正则表达式(匹配!!!)的学习和运用;
(4)def定义函数,对函数的学习与使用;
(4)面向对象的程序设计(OPP)(蛋炒饭与盖浇饭)(类(class)、封装、继承、多态!!!)
(5)对于模块的学习以及运用(Python包、异常处理(try...except...finally语句、raise语句、assert语句)等内容);
(6)Socket网络编程技术实现双方通信(现在有关安全多方计算、隐私求交、全同态加密等热点领域的项目除了其算法本身的代码应用外,需要使用socket技术来建立连接测试其算法的性能);
(7)冯·诺伊曼体系结构(计算机的基本架构);
(8)文件及目录的操作(文件的打开和关闭、写入内容等操作); (9) 网络爬虫技术,爬取网页上的相关数据。
后来随着学习的深入,我对Python有了更多的、更深入的了解和认识,课堂上老师的讲解很细致,课堂中也穿插了很多有趣的元素,让课堂氛围不那么压抑,比较轻松活跃。推送,后面几节课所介绍的内容(Socket编程技术,网络爬虫等)都与现实生活有较多的较大的联系,也激发了我对这些知识的好奇心与学习的积极性。
Python编程的学习也让我感受到了团队合作的重要性。在实验三的socket套接字实现两台电脑之间的通信这个实验中,我需要与另一位同学紧密合作,共同完成任务。
在我看来,Python的学习之旅虽充满挑战,但与高等数学、大学物理等专业课程相比,其相对较为平易近人。尤其值得一提的是,Python的学习成果往往能够直观且便捷地展示。当编写完成的程序被精心打包,分享给亲朋好友时,那一声声由衷的赞美,仿佛是对我过往努力的最佳回馈,让我深感所有的辛勤付出都化作了甘甜的果实。我坚信,学习所带来的那份纯粹的愉悦感,对于整个学习旅程而言,无疑是不可或缺的。Python正以其独特的魅力,让我轻松体验到这种愉悦,从而让我对这门课程情有独钟。
回顾这段学习旅程,我深切感受到自己的蜕变和成长。Python编程不仅赋予了我一项技能,更让我学会了在困难面前克服阻力,打破障壁。我坚信,在未来的学习和职业生涯中,这些宝贵的经验将成为我前进道路上的坚实基石。我将继续投身于Python编程的学习之中,不断精进自我,为实现自己的梦想而砥砺前行!
未来已来,
雏凤清声,
今日之功,
明日之获,
Python学习正当时!
建议:
希望王老师能在课下推荐一些课程相关的教程或实例用于复习巩固,比如网课什么的,不然有时不练习会手生,新学习的知识很容易忘记(诺宾浩斯遗忘曲线QAQ)。
我认为本课知识点成系统,干货满满!很感谢老师您的教导!不过仍有些小小的可以改进的地方,如除了作业仅仅为四次实验内容外,每堂课还可以根据课堂教学内容增加适量的python编程题!(窝要做题!!!)选修本门课程的同学大多都是想要学习好python的知识,而且Python还有利于专业后续学习,如openmv等。所以增加适量作业有助于让同学们给掌握python语言打好基础,并合理运用!
我的评价是:好学爱学,以后还选!
(ps:强哥能给个高分咩?QAQ)