本节作业:

熟练使用类和模块,写一个交互性强、有冲突的程序。

思路:

1、各个模块之间的调用关系,如何使用类,各种方法的使用上面;

2、学了类,以为能用来解决所有问题,东西都要写在类里面;

3、下面自己谢了一个简写版程序,有些地方还待完善,先梳理一下,自己在把里面所有东西完善完成;

本例写的是两个男人为了一个女人决斗,谁胜利抱得美人归,失败的人一边凉快去。

conf配置文件下面有两个文件:

    setting.py:

import os,sys
'''配置环境变量'''
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
Skills = ["rich","poor","handsome","ugly",'struggle',"car",'house',"height","short",'fat',"thin"]
DATABASE = {'rich':,"poor":,"handsome":,"ugly":,"struggle":,"car":,"house":,'height':,
'short':,"fat":,"thin":}

setting里面是存放技能属性和技能对应的得分属性,有钱人得分66,贫穷得分:10分等等;根据属性判断得分,屌丝就失败,高富帅就抱得美人归。

    menu.py:

'''程序主入口显示'''
main_show = '''
-------------------------------------------------------------------------------------------
欢迎光临抢美女决战平台 日期:{} 星期:{}
------------------------------------------------------------------------------------------- 【】故事介绍 【】PK决战 【】战绩榜 【q】退出 -------------------------------------------------------------------------------------------
''' skill_message = '''
----------------------------------------------------------------------------------------------
技能展示
----------------------------------------------------------------------------------------------
技能编号 技能名称 技能得分
''' battle_message = '''
--------------------------------------------------------------------------------------------------
\[;1m 今天:{} 星期:{}
姓名:{} 和 姓名:{} 为了 {} 在此决斗,获胜者将抱得美人归,生死由命成败在天,谁能抱
得美人归,各凭实力
特在此签生死状,如有生死,既往不咎!!! \[0m
-------------------------------------------------------------------------------------------------- ''' battle_show = '''
--------------------------------------------------------------------------------------------------
第{}回合: 日期:{} 星期:{} 决战者1 姓名:{} 决战者2 姓名:{}
VS
技能:{} 得分 {} 技能:{} 得分:{}
--------------------------------------------------------------------------------------------------
''' match_show = '''
-------------------------------------------------------------------------------------------------- 第{}回合--决战者1:{} 累计得分:{} 决战者2:{} 累计得分:{} --------------------------------------------------------------------------------------------------
'''
victor_show = '''
--------------------------------------------------------------------------------------------------
比赛结果: 日期:{} 星期:{} 经过{}回合决斗,决战者--姓名:{} 最终得分:{} 战胜 姓名:{} 最终得分:{} --------------------------------------------------------------------------------------------------
'''

此模块配置各种输出框架,整理输出,以便看着舒服。

    modules模块--类,函数存放

    common.py:

import sys,os,datetime
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(base_dir)
from conf import menu
from conf import setting def introduce(mess):
'''
主页介绍,介绍系统有哪些功能,让人们尝试
:param mess: 功能展示
:return:
'''
print(mess) def function_show(skills,skills_dict):
'''
功能展示模块,进行人功能的展示
:param skills:
:param skills_dict:
:return:
'''
print(menu.skill_message)
for skill_num,skill in enumerate(skills,):
print("%18s%30s%20s" %(skill_num,skill,skills_dict[skill]))
print("----------------------------------------------------------------------------------------------") def trans_weekday():
'''
星期转换模式,按照国人的习惯,把数字日期转换为中文日期
:return: 返回中文下的日期
'''
weekdays = ["一","二","三","四","五","六","日"]
week_day = weekdays[datetime.date.weekday(datetime.date.today())]
return week_day def show_duel_message(date,week,name1,name2,name3):
'''决斗者双方信息展示,以及签订生死状'''
print(menu.battle_message.format(date,week,name1,name2,name3))

common.py模块,存放公共函数,一些转换函数,方法都在里面。

    role.py

'''定义角色类'''
class Person(object):
'''定义一个人的类'''
def __init__(self,name,age,sex): ###变量初始化###
self.name = name
self.age = age
self.sex = sex class Man(Person):
def __init__(self,name,age,sex,score=):
'''继承'''
super(Man,self).__init__(name,age,sex) #重写父类的方法,因为被子类覆盖了
self.score = score class Wemon(Person):
'''定义一个女性的类,继承父类'''
def __init__(self,name,age,sex,belong_to=""):
super(Wemon,self).__init__(name,age,sex)
self.belong_to = belong_to

存放类模块,用来生成实例:

game_index.py -- 程序主入口,运行调用整个模块

import sys,os,datetime,random
from conf import menu
from modules import common,role
from conf import setting def story_introduce():
message = '''
-------------------------------------------------------------------------------------------------
\[;1m相传在民国时期,如果两个男的同时看上一个女的,那么他们两个就要进行决斗来获得美女的芳心。
比赛共分为三场,没人根据自己的独特性质进行得分,最后得分最高者胜利,抱得美人归。如果三场比赛
之后,两人得分相同,则进入加时赛,加时赛按每轮进行得分,直到分出胜负。\[0m
-------------------------------------------------------------------------------------------------
'''
print(message) def duel():
'''决斗'''
'''完善决斗者1的信息'''
name1 = input("请输入决斗者1的名字:")
age1 = input("请输入决斗者1的年龄:")
sex1 = "男" #默认决斗者的性别都是男
'''把决斗者1封装到类中,生成一个实例'''
m1 = role.Man(name1,age1,sex1)
'''完善决斗者2的信息'''
name2 = input("请输入决斗者2的名字:")
age2 = input("请输入决斗者2的年龄:")
sex2 = "男"
m2 = role.Man(name2,age2,sex2)
'''完善美女的信息'''
name = input("请输入被决斗美女的名字:")
age = input("请输入被决斗美女的年龄:")
sex = "女"
w1 = role.Wemon(name,age,sex)
'''下面进入决斗了'''
common.show_duel_message(date_today,week_day,m1.name,m2.name,w1.name)
skill_num =
common.function_show(setting.Skills, setting.DATABASE)
while skill_num < :
'''初始化m1的属性'''
m1.skill = input("决斗者1请根据实际情况输入您对应的技能编号:")
if int(m1.skill) in list(range(,)):
m1.skill = setting.Skills[int(m1.skill)-]
else:
print("对不起,您输入的技能编号有误,请重新输入!")
continue
m1_tem_score = setting.DATABASE[m1.skill]
m1.score += m1_tem_score '''初始化m2的属性'''
m2.skill = input("决斗者2请根据实际情况输入您对应的技能编号:")
if int(m2.skill) in list(range(,)):
m2.skill = setting.Skills[int(m2.skill)-]
else:
print("对不起,您输入的技能编号有误,请重新输入!")
continue
m2_tem_score = setting.DATABASE[m2.skill]
m2.score += m2_tem_score
print(menu.battle_show.format(skill_num+,date_today,week_day,m1.name,m1.skill,m1.score,m2.name,m2.skill,m2.score))
print(menu.match_show.format(skill_num+,m1.name,m1.score,m2.name,m2.score))
skill_num +=
if m1.score > m2.score:
print(menu.victor_show.format(date_today,week_day,,m1.name,m1.score,m2.name,m2.score))
print("比赛结束,%s获胜" %m1.name)
sys.exit()
elif m1.score < m2.score:
print(menu.victor_show.format(date_today,week_day,,m2.name,m2.score,m1.name,m1.score))
print("比赛结束,%s获胜" %m2.name)
sys.exit()
elif m2.score == m1.score:
print("两个人经过三轮比赛,得分一样,下面将进行加时赛,来确定输赢!!!") if __name__ == "__main__":
date_today = datetime.date.today().strftime("%Y-%m-%d")
week_day = common.trans_weekday()
flag = True
while flag:
common.introduce(menu.main_show.format(date_today,week_day))
query_num = input("请输入选择功能编号:")
if query_num == '':
story_introduce()
common.function_show(setting.Skills, setting.DATABASE)
elif query_num == '':
###完善挑战者1的信息,并放在一个类中###
duel()
elif query_num == '':
pass
elif query_num == 'q' or query_num == 'quit':
sys.exit("您已退出游戏,欢迎下次来玩!")

game_life.py程序主入口,用来调用整个程序的模块,下面,运行这个程序,看如下:

-------------------------------------------------------------------------------------------
欢迎光临抢美女决战平台 日期:-- 星期:日
------------------------------------------------------------------------------------------- 【】故事介绍 【】PK决战 【】战绩榜 【q】退出 ------------------------------------------------------------------------------------------- 请输入选择功能编号:
请输入决斗者1的名字:吴沛齐
请输入决斗者1的年龄:
请输入决斗者2的名字:Alex
请输入决斗者2的年龄:
请输入被决斗美女的名字:李志玲
请输入被决斗美女的年龄: --------------------------------------------------------------------------------------------------
今天:-- 星期:日
姓名:吴沛齐 和 姓名:Alex 为了 李志玲 在此决斗,获胜者将抱得美人归,生死由命成败在天,谁能抱
得美人归,各凭实力
特在此签生死状,如有生死,既往不咎!!!
-------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------
技能展示
----------------------------------------------------------------------------------------------
技能编号 技能名称 技能得分 rich
poor
handsome
ugly
struggle
car
house
height
short
fat
thin
----------------------------------------------------------------------------------------------
决斗者1请根据实际情况输入您对应的技能编号:
决斗者2请根据实际情况输入您对应的技能编号: --------------------------------------------------------------------------------------------------
第1回合: 日期:-- 星期:日 决战者1 姓名:吴沛齐 决战者2 姓名:Alex
VS
技能:rich 得分 技能:poor 得分:
-------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------- 第1回合--决战者1:吴沛齐 累计得分: 决战者2:Alex 累计得分: -------------------------------------------------------------------------------------------------- 决斗者1请根据实际情况输入您对应的技能编号:
决斗者2请根据实际情况输入您对应的技能编号: --------------------------------------------------------------------------------------------------
第2回合: 日期:-- 星期:日 决战者1 姓名:吴沛齐 决战者2 姓名:Alex
VS
技能:handsome 得分 技能:ugly 得分:
-------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------- 第2回合--决战者1:吴沛齐 累计得分: 决战者2:Alex 累计得分: -------------------------------------------------------------------------------------------------- 决斗者1请根据实际情况输入您对应的技能编号:
决斗者2请根据实际情况输入您对应的技能编号: --------------------------------------------------------------------------------------------------
第3回合: 日期:-- 星期:日 决战者1 姓名:吴沛齐 决战者2 姓名:Alex
VS
技能:house 得分 技能:height 得分:
-------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------- 第3回合--决战者1:吴沛齐 累计得分: 决战者2:Alex 累计得分: -------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------
比赛结果: 日期:-- 星期:日 经过3回合决斗,决战者--姓名:吴沛齐 最终得分: 战胜 姓名:Alex 最终得分: -------------------------------------------------------------------------------------------------- 比赛结束,吴沛齐获胜

    总结:

1、通过上面的实例,大概知道了类是如何使用的,上面我就是使用类的方法进行调用的,使用类的好处是,可以把一个人所有的属性都封装到类里面,而且另一个实例也一样,调用的时候我们只需要调用类即可,很名了。

2、可以把一些方法放在类里面,其实不是说使用类,就不用其他的函数了,其他函数还是与之前一样要写的,只是类里面包含的是属于类的本身方法,就如common模块本身还有自己的方法。

3、函数的调用,我们要知道我们实现的东西是什么,不要害怕参数问题,参数后期自己可以直接传即可,只要知道需要什么参数,都是可以办的到的。

下面将对上面代码进行重写完善,并整理流程图。这也是我第一次用类写框架,所以纪念一下。

day6作业--游戏人生的更多相关文章

  1. day6作业--游戏人生完善

    本节作业: 熟练使用类和模块,写一个交互性强.有冲突的程序.     一.作业目的 1.规范程序写法,要按照模块来规范书写: 2.类的使用,文件之间的调用练习: 3.思路的开阔,自己编写冲突,实现调用 ...

  2. day6作业详解

    1.day6题目 1,老男孩好声⾳选秀⼤赛评委在打分的时候呢, 可以进⾏输入. 假设, 老男孩有10个评委. 让10个评委进⾏打分, 要求, 分数必须⼤于5分, 小于10分. 电影投票. 程序先给出⼀ ...

  3. 老男孩Day6作业:计算器

    作业需求: 1.实现加减乘除及拓号优先级解析 2.用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) ...

  4. Day6作业及默写

    1.使⽤循环打印以下效果: 1: * ** *** **** ***** for num in range(1,6): print('*' * num) 2: ***** **** *** ** * ...

  5. day6作业(元组,字典,集合)

    默写: 1.元组 字典 集合 列表 各自的特点 2.字典添加 删除 修改 循环 必做: 1.餐厅提供了五种不同的菜,使用元组来存储他们,并循环打印出所有菜名,要求用户输入新加的菜名,加入到菜单中,并重 ...

  6. day6作业--选课系统

    角色:学校.学员.课程.讲师 要求: 1.创建北京.上海2所学校: 2.创建Linux,Python,go 3个课程,Linux\python在北京开,go在上海开: 3.课程包含,周期.价格,通过学 ...

  7. Day6作业:计算器

    嗯,稀里糊涂就居然写完了...... readme: 程序说明: 此计算器比较简单,只支持普通的加减乘除和小括号,不支持[],{},求幂之类的均不支持! 测试过的字符串: -1/2*((60-30+( ...

  8. day6 作业 购物车

  9. Python全栈学习_day006作业

    Day6作业及默写 ,使用循环打印以下效果: : * ** *** **** ***** : ***** **** *** ** * : * *** ***** ******* ********* . ...

随机推荐

  1. org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session异常解决办法

    org.hibernate.NonUniqueObjectException: a different object with the same identifier value was alread ...

  2. 51 nod 1046 A^B Mod C

    1046 A^B Mod C 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出3个正整数A B C,求A^B Mod C.   例如,3 5 8,3^ ...

  3. call 大佬 help7——kmp 补齐 循环节

    http://acm.hdu.edu.cn/showproblem.php?pid=3746 用kmp算法,那么 但是也等于上面的是正确的 也等于下面是错误的 why? #include<cst ...

  4. What is an intuitive explanation of the relation between PCA and SVD?

    What is an intuitive explanation of the relation between PCA and SVD? 36 FOLLOWERS Last asked: 30 Se ...

  5. git fatal: The remote end hung up unexpectedly 错误

    使用git将本地项目添加到远程仓库报以下错误 $ git push -u origin master fatal: The remote end hung up unexpectedly | 11.0 ...

  6. Eclipse安卓插件安装

    首先说明下载的ADT专门真安卓开发的Eclipse下载下来后就集成了可以直接使用了 但是使用j2EE版本的Eclipse就需要安装插件支持安卓开发了 首先下载ADT Eclipse安卓插件 下载完成后 ...

  7. 超厉害的CSS3图片破碎爆炸效果!

    var fx  = { buffer : function(obj, cur, target, fnDo, fnEnd, fs){ if(!fs)fs=6; var now={}; var x=0; ...

  8. SVN自动更新-win平台

    把项目给外包做,他们天天整个ftp传来传去,上传一次还要到处翻View和Controller,还有漏传的情况,简直low到不行.看不下去了,就准备整个svn.虽然svn解决了上传的问题,但是自动发布还 ...

  9. SearchSploit

    在我们的GitHub上的Exploit Database存储库中包含一个名为"searchsploit"的Exploit-DB的命令行搜索工具,该工具还允许您在任何地方随身携带一个 ...

  10. 初时Python博大精深

    Python是解释型语言 编译型vs解释型 编译型优点:编译器一般会有预编译的过程对代码进行优化.因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高.可以脱离语言环境独立运行.缺点:编 ...