本节作业:

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

思路:

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

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

最新文章

  1. new一張form時用using{}的好處。
  2. docker本地私有仓库的创建,及https错误修正
  3. guava之Joiner 和 Splitter
  4. sql实现对多个条件分组排序方法和区别
  5. HTML5 的data-* 自定义属性
  6. android的照片浏览器(一)至返回所有图片文件
  7. mongdb创建自增主键(primary key)的相关讨论 - Jason.Zhi
  8. MySQL 数据库常用命令 超级实用版分享
  9. WebIM(2)---消息缓存
  10. Linux 和 Windows 下实现多进程的方式以及管道操作
  11. SQL server 查询出现:---“子查询返回的值不止一个。当子查询跟随在 =、!=、&lt;、&lt;=、&gt;、&gt;= 之后,或子查询用作表达式时,这种情况是不允许的。”SQL查询错误解析---
  12. tensorflow模型ckpt转pb以及其遇到的问题
  13. Linux 进程同步和通信
  14. Java容器解析系列(2) 具体化的第一步——Collection到AbstractCollection
  15. Chrome调试本地文件无法使用window.opener对象进行窗口间值传递
  16. Python高级特性(切片,迭代,列表生成式,生成器,迭代器)
  17. 一个简易的drf的项目例子
  18. msys2 命令行添加镜像地址
  19. 三个分段的.tar.gz文件,合并并解压
  20. selenium异常问题汇总(持续更新版)

热门文章

  1. Python【datetime】模块
  2. oracle中所有存在不存在的用户都可以使用dba连接到数据库
  3. mongodb3.6集群搭建:分片集群认证
  4. ActiveMQ队列消息过期时间设置和自动清除解决方案
  5. Java并发编程原理与实战三:多线程与多进程的联系以及上下文切换所导致资源浪费问题
  6. Could not parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location
  7. [Openwrt 扩展下篇] Openwrt搭建私有云Owncloud 9
  8. [Openwrt 扩展上篇]USB挂载&amp;U盘启动&amp;Samba共享
  9. Understanding the Space Used by ZFS -- (转)
  10. spring-boot-CommandLineRunner