本节作业:

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

    一、作业目的

1、规范程序写法,要按照模块来规范书写;

2、类的使用,文件之间的调用练习;

3、思路的开阔,自己编写冲突,实现调用;

4、对基础知识的熟练掌握。

本文写了一个决斗系统,两个男的为了一个女的进行决斗,获胜者赢得美女放心,失败者自撸。

    系统功能模块:

第六天的作业:文字游戏程序是在python3.5.2环境下开发,在python2.7环境下大同小异,主要功能模块如下图:

    系统目录结构:

程序采用分层的方式编写,包括系统配置conf、数据库访问层database、业务逻辑层modules,业务处理主程序game_menu.py,主要分类如下图:

    应用知识点

  a) 类的使用

  b) 文件的读写操作

  c) 系统模块、自定义模块的操作

  d) 日志模块的使用

    程序流程图如下:

    程序代码如下: 

1 主程序game_index.py:

from modules import common
from conf import menu,setting
from datetime import datetime,date
from modules import role
import pickle,os,re,sys
from database import dbapi
_filename = os.path.join(setting.file_path,'game.log')
filename = os.path.join(setting.file_path,"vs.log") def duel(skill_num, week_today, date_today, name1, score1, name2, score2,skill_list1,skill_list2):
"""
决斗,两个人进行决斗,并计算得分
:param skill_num: 决斗次数
:param week_today: 星期
:param date_today: 日期
:param name1: 决斗者1姓名
:param score1: 决斗者2姓名
:param name2: 决斗者3姓名
:param score2: 决斗者4姓名
:return: 返回决斗得分
"""
while True:
skill1 = input("决斗者1请根据实际情况输入技能编号:")
if int(skill1) in list(range(, len(setting.Skills) + )):
skill1 = setting.Skills[int(skill1) - ]
if not skill1 in skill_list1: #判断技能编号是否重复,同一个技能不能释放两次
tem_score1 = setting.Skill_Score[skill1][]
skill_list1.append(skill1)
score1 += tem_score1
break
else:
print("对不起,技能编号不能重复输入!")
continue
else:
print("对不起,您输入的技能编号有误,请核对后重新输入!")
continue
while True:
skill2 = input("决斗者2请根据实际情况输入技能编号:")
if int(skill2) in list(range(, len(setting.Skills) + )):
skill2 = setting.Skills[int(skill2) - ]
if not skill2 in skill_list2: #判断技能编号是否重复,同一个技能不能释放两次
tem_score2 = setting.Skill_Score[skill2][]
skill_list2.append(skill2)
score2 += tem_score2
break
else:
print("对不起,技能编号不能重复输入!")
continue
else:
print("对不起,您输入的技能编号有误,请核对后重新输入!")
continue
with open(_filename, "a+") as f:
mess = "第{0}回合 决斗者1:{1} 得分:{2} vs 决斗者2:{3} 得分:{4} 日期:{5}\n"
f.write(mess.format(skill_num,name1,tem_score1,name2,tem_score2,date_today))
print(menu.duel_message.format(skill_num, week_today, date_today, name1, skill1, tem_score1, name2, skill2, tem_score2))
return (score1, score2) def match_n_score(mes,skill_num,name1,score1,name2,score2):
'''第n次比赛得分'''
print(mes.format(skill_num,name1,score1,name2,score2)) def finally_score(mes,skill_num,name1,score1,name2,score2):
'''
展示经过几轮比赛之后最终的得分
:param mes: 展示最终得分框架
:param skill_num: 最终比赛次数
:param name1: 决斗者1名字
:param score1: 决斗者1最终得分
:param name2: 决斗者2名字
:param score2: 决斗者2最终得分
:return: 无返回值
'''
skill_num =
print(mes.format(skill_num,name1,score1,name2,score2)) if __name__ == "__main__":
flag = True
date_today = date.today().strftime("%Y-%m-%d")
week_today = common.week_day(date.today())
while flag:
common.home_show(menu.homepage)
num = input("请输入您要查询的功能编号:")
if num == '':
common.stroy_show(menu.story_introduce)
common.skill_show(menu.skill_show)
elif num == '':
common.pk_show(menu.pk_message,week_today,date_today)
'''下面该实例化类了,生成两个决斗实例,决斗者1和决斗者2'''
print("--------------------------下面将完善决斗者1的信息--------------------------------------")
name1 = input("请输入决斗者1的名字:")
age1 = input("请输入决斗者1的年龄:")
sex1 = "男"
'''生成决斗者1的实例'''
m1 = role.Man(name1,age1,sex1)
print("\033[31;1m决斗者1信息完善完毕!\033[0m")
print("--------------------------下面将完善决斗者2的信息--------------------------------------")
name2 = input("请输入决斗者2的名字:")
age2 = input("请输入决斗者2的年龄:")
sex2 = "男"
'''生成决斗者2的实例'''
m2 = role.Man(name2,age2,sex2)
print("\033[31;1m决斗者2信息完善完毕!\033[0m")
'''完善美女的信息'''
print("--------------------------下面将完善美女的信息--------------------------------------")
name = input("请输入美女的名字:")
age = input("请输入美女的年龄:")
sex = "女"
'''生成美女实例'''
w1 = role.Woman(name,age,sex)
common.dule_show(menu.start_duel,m1.name,m2.name,w1.name)
common.skill_show(menu.skill_show)
skill_num =
skill_list1 = []
skill_list2 = []
while skill_num < :
score = duel(skill_num+,week_today,date_today,m1.name,m1.score,m2.name,m2.score,skill_list1,skill_list2)
skill_num +=
m1.score = score[]
m2.score = score[]
match_n_score(menu.duel_score,skill_num,m1.name,m1.score,m2.name,m2.score)
finally_score(menu.finall_score,skill_num,m1.name,m1.score,m2.name,m2.score)
'''进行比分判断如果两者得分一样,还要进入加时赛'''
if m1.score > m2.score:
print(menu.victor_show.format(m1.name,m1.score,m2.name,m2.score,m1.name))
with open(filename,'a+') as fa:
mess1 = "经过{0}回合比赛 决斗者1:{1} 最终得分:{2} vs 决斗者2:{3} 最终得分:{4} {5}胜利 日期:{6}\n"
fa.write(mess1.format(,m1.name,m1.score,m2.name,m2.score,m1.name,date_today))
role.Woman.bridal_chamber(w1.name,m1.name)
elif m1.score < m2.score:
print(menu.victor_show.format(m2.name,m2.score,m1.name,m1.score,m2.name))
role.Woman.bridal_chamber(w1.name, m2.name)
with open(filename,'a+') as fa:
mess1 = "经过{0}回合比赛 决斗者1:{1} 最终得分:{2} vs 决斗者2:{3} 最终得分:{4} {5}胜利 日期:{6}\n"
fa.write(mess1.format(,m2.name,m2.score,m1.name,m1.score,m2.name,date_today))
elif m1.score == m2.score:
print("两位决斗者打成平手,将进入加时赛!!!")
while True:
skill_num +=
score = duel(skill_num, week_today, date_today, m1.name, m1.score, m2.name, m2.score, skill_list1,
skill_list2)
m1.score = score[]
m2.score = score[]
match_n_score(menu.duel_score,skill_num,m1.name,m1.score,m2.name,m2.score)
if m1.score > m2.score:
print(menu.victor_show.format(m1.name,m1.score,m2.name,m2.score,m1.name))
role.Woman.bridal_chamber(w1.name,m1.name)
with open(filename, 'a+') as fa:
mess1 = "经过{0}回合比赛 决斗者1:{1} 最终得分:{2} vs 决斗者2:{3} 最终得分:{4} {5}胜利 日期:{6}\n"
fa.write(mess1.format(skill_num, m1.name, m1.score, m2.name, m2.score, m1.name, date_today))
break
elif m1.score < m2.score:
print(menu.victor_show.format(m2.name,m2.score,m1.name,m1.score,m2.name))
role.Woman.bridal_chamber(w1.name, m2.name)
with open(filename, 'a+') as fa:
mess1 = "经过{0}回合比赛 决斗者1:{1} 最终得分:{2} vs 决斗者2:{3} 最终得分:{4} {5}胜利 日期:{6}\n"
fa.write(mess1.format(skill_num, m2.name, m2.score, m1.name, m1.score, m2.name, date_today))
break elif num == '':
'''数据报表查询模块'''
dbapi.game_query() elif num == 'q' or num == 'quit':
sys.exit("退出,欢迎下次光临!!!")

2 配置文件包conf

2.1 参数配置文件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','high','short','car','house','struggle','ugly','soso']
Skill_Score = {"rich":[,'有钱'],"poor":[,"贫穷"],"handsome":[,"帅气"],'high':[,"高"],
"short":[,"矮"],"car":[,"有车"],'house':[,"有房"],'struggle':[,"上进"],
'ugly':[,"丑陋"],"soso":[,"一般"]} file_path = os.path.join(BASE_DIR,"log")

2.2 界面显示模板文件menu.py

homepage = '''
-----------------------------------------------------------------------------------------------
欢迎来到PK赢美女平台 星期:{} 日期:{}
----------------------------------------------------------------------------------------------- 【】平台介绍 【】PK场 【】战绩查询 【q]退出 ----------------------------------------------------------------------------------------------- '''
story_introduce = '''\033[32;1m
----------------------------------------------------------------------------------------------- \[;1m相传民国时候,如果两个男的同时爱上一个女的,那么他们就会通过决战来获得美人的芳心。
胜利之人抱得美人归。\[0m
比赛规则如下:
、两人进行三次比赛,三次比赛总分最高者胜出;
、如果三次比赛之后,两人成绩一样,则进入加时赛;
、加时赛进行次数由此局比萨决定,如果此次某人得分高,则比赛结束,否则一直进行,直到分出胜负;
-----------------------------------------------------------------------------------------------
\[0m'''
skill_show = '''
-----------------------------------------------------------------------------------------------
【技能编号】 【技能名称】 【技能属性】 【技能得分】
-----------------------------------------------------------------------------------------------
''' pk_message = '''\033[38;1m
-----------------------------------------------------------------------------------------------
欢迎来到PK场 星期:{} 日期:{}
两位决斗者将在这里进行决斗,胜利的人将抱得没人归来,下面让我们拭目以待,看谁将赢得比赛,获得
美人的芳心。
-----------------------------------------------------------------------------------------------
\[0m''' start_duel = '''
-----------------------------------------------------------------------------------------------
\[;1m下面有请决斗者1:{} 和 决斗者2:{} 闪亮登场 并有请美女:{}在旁边观战,比赛正式开始\[0m
----------------------------------------------------------------------------------------------- ''' duel_message = '''
-----------------------------------------------------------------------------------------------
第{}回合 星期:{} 日期:{}
-----------------------------------------------------------------------------------------------
决斗者1--姓名:{} 决斗者2--姓名:{}
VS
技能:{} 得分:{} 技能:{} 得分:{}
-----------------------------------------------------------------------------------------------
''' duel_score = '''
----------------------------------------------------------------------------------------------- 第{}回合 决斗者1:{} 累计得分:{} 决斗者2:{} 累计得分:{} -----------------------------------------------------------------------------------------------
''' finall_score = """
-----------------------------------------------------------------------------------------------
\[;1m 最终得分展示 经过{}回合比赛 决斗者1:{} 最终得分:{} 决斗者2:{} 最终得分:{} \[0m -----------------------------------------------------------------------------------------------
""" victor_show = '''
----------------------------------------------------------------------------------------------- \[;1m 决斗者:{} 最终得分:{} 超过 决斗者:{} 最终得分:{} 恭喜决斗者:{}最终获得胜利,将抱得美人归!!!!Congratulation for you!\[0m -----------------------------------------------------------------------------------------------

    3 数据库包database:

3.1 数据访问层模块dbapi.py

'''
Created on 2017年8月6日
@author:耿长学
数据库访问层:
提供从数据文件、报表文件中读取数据的接口
将数据写入到数据文件的接口
'''
import datetime,re,os,sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
from conf import setting
def date_error(dated):
'''
查看日期是否合法
:param dated: 查看的日期
:return:
'''
(year,month,day) = dated.split("-")
try:
normal_date = datetime.date(int(year),int(month),int(day))
return normal_date
except ValueError:
print("您输入的日期格式不对,请重新输入!") def game_query():
File_path = os.path.join(setting.file_path,'game.log')
name = input("请输入您要查询的决战者姓名:")
while True:
start_date = input("请输入您要查询的起始日期(yyyy-mm-dd):")
start_date = date_error(start_date)
if start_date:
break
else:
continue
while True:
end_date = input("请输入您要查询的起始日期(yyyy-mm-dd):")
end_date = date_error(end_date)
if end_date:
break
else:
continue
file_lists = []
if name:
with open(File_path,'r+') as f:
for line in f:
mess = re.search(name,line)
if mess:
re_date = re.search("\d{4}-\d{2}-\d{2}",line)
if re_date:
re_date = re_date.group()
re_date = date_error(re_date)
if re_date >= start_date and re_date <= end_date:
file_lists.append(line)
else:
print("这段时间没有%s的决斗记录!" %(mess.group()))
else:
print("没有匹配到日期!")
else:
pass
else:
with open(File_path,'r+') as f:
for line in f:
re_date = re.search("\d{4}-\d{2}-\d{2}",line)
if re_date:
re_date = re_date.group()
re_date = date_error(re_date)
if re_date >= start_date and re_date <= end_date:
file_lists.append(line)
else:
sys.exit("开始时间大于结束时间!!!")
else:
sys.exit("这段时间没有决斗信息!!!")
'''打印记录'''
if len(file_lists) == :
pass
else:
for file_list in file_lists:
print(file_list.strip())

4 业务处理包modules:

4.1 公共函数模块common.py

import os,sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
from conf import menu,setting
from datetime import datetime,date def home_show(mes):
"""
主页展示模块,展示平台都有哪些功能
:param mes: 展示模板
:return: 无返回值
"""
print(mes) def stroy_show(mes):
'''
主题介绍,游戏的主题展示,起源
:param mes: 展示的信息
:return:
'''
print(mes) def make_equal_length(length,mes,add=" "):
'''
统一长度,让看起来整洁好看一点
:param length: 统一几个字符长度
:param mes: 统一字符的内容
:param add: 填充的字符
:return:
'''
if length >= len(mes):
mes = mes + (length - len(mes)) * add
else:
pass
return mes def skill_show(mes):
'''
技能展示模块,展示具有的功能
:param mes:展示的技能
:return: 无返回值
'''
print(mes)
for skill_num,skill in enumerate(setting.Skills,):
skill_score = setting.Skill_Score[skill][]
skill_introduce = make_equal_length(,setting.Skill_Score[skill][])
skill = make_equal_length(,skill)
print("\033[35;1m%10s%32s%10s%26s\033[0m" %(skill_num,skill,skill_introduce,skill_score))
print("-----------------------------------------------------------------------------------------------") def week_day(mes):
'''
日期转换函数,将日期转换为中国人习惯额日期格式
:param date: 要转换的日期
:return: 返回中文日期
'''
week_lists = ["一","二","三","四","五","六","日"]
week_today = week_lists[date.weekday(mes)]
return week_today def pk_show(mes,date1,week1):
'''
进入PK场展示
:param mes: 展示的信息
:return: 无返回值
'''
print(mes.format(week1,date1)) def dule_show(mes,name1,name2,name3):
'''
邀请两位决斗者登场信息展示
:param mes: 登场展示信息
:return: 无返回值
'''
print(mes.format(name1,name2,name3))

4.2角色类模块role.py

import os,sys
from modules import common
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
from conf import setting,menu
class Person(object):
''''生成一个男女共有属性的类'''
def __init__(self,name,age,sex):
'''实例化类的属性'''
self.name = name
self.age = age
self.sex = sex class Man(Person):
'''生成一个男人类,继承Person类'''
def __init__(self,name,age,sex,score=):
super(Man,self).__init__(name,age,sex) #重写父类方法,由于上面把父类冲掉了
self.score = score class Woman(Person):
'''定义一个女人类,继承父类Person'''
def __init__(self,name,age,sex,belong_to=""):
'''重写父类方法'''
super(Woman,self).__init__(name,age,sex)
self.belog_to = belong_to @staticmethod
def bridal_chamber(name1,name2):
'''获胜者将与美女洞房'''
print("\033[34;1m恭喜你赢得这次决赛,奴家%s从此以后属于你了,今晚我将与%s洞房花烛夜!!\033[0m" %(name1,name2))

    5 日志报表目录log:

5.1 对战日志game.log

第1回合 决斗者1:alex  得分:   vs  决斗者2:wupeiqi  得分:  日期:--
第2回合 决斗者1:alex 得分: vs 决斗者2:wupeiqi 得分: 日期:--
第3回合 决斗者1:alex 得分: vs 决斗者2:wupeiqi 得分: 日期:--
第1回合 决斗者1:张前海 得分: vs 决斗者2:张欣欣 得分: 日期:--
第2回合 决斗者1:张前海 得分: vs 决斗者2:张欣欣 得分: 日期:--
第3回合 决斗者1:张前海 得分: vs 决斗者2:张欣欣 得分: 日期:--
第1回合 决斗者1:孟令号 得分: vs 决斗者2:高自动 得分: 日期:--
第2回合 决斗者1:孟令号 得分: vs 决斗者2:高自动 得分: 日期:--
第3回合 决斗者1:孟令号 得分: vs 决斗者2:高自动 得分: 日期:--
第1回合 决斗者1:林磊 得分: vs 决斗者2:蒋小波 得分: 日期:--
第2回合 决斗者1:林磊 得分: vs 决斗者2:蒋小波 得分: 日期:--
第3回合 决斗者1:林磊 得分: vs 决斗者2:蒋小波 得分: 日期:--
第1回合 决斗者1:于洋 得分: vs 决斗者2:万宝 得分: 日期:--
第2回合 决斗者1:于洋 得分: vs 决斗者2:万宝 得分: 日期:--
第3回合 决斗者1:于洋 得分: vs 决斗者2:万宝 得分: 日期:--
第1回合 决斗者1:张前海 得分: vs 决斗者2:周万宝 得分: 日期:--
第2回合 决斗者1:张前海 得分: vs 决斗者2:周万宝 得分: 日期:--
第3回合 决斗者1:张前海 得分: vs 决斗者2:周万宝 得分: 日期:--
第1回合 决斗者1:乔兵 得分: vs 决斗者2:周瑜 得分: 日期:--
第2回合 决斗者1:乔兵 得分: vs 决斗者2:周瑜 得分: 日期:--
第3回合 决斗者1:乔兵 得分: vs 决斗者2:周瑜 得分: 日期:--
第4回合 决斗者1:乔兵 得分: vs 决斗者2:周瑜 得分: 日期:--
第1回合 决斗者1:张鹏 得分: vs 决斗者2:高进 得分: 日期:--
第2回合 决斗者1:张鹏 得分: vs 决斗者2:高进 得分: 日期:--
第3回合 决斗者1:张鹏 得分: vs 决斗者2:高进 得分: 日期:--
第4回合 决斗者1:张鹏 得分: vs 决斗者2:高进 得分: 日期:--

5.2 对战报表vs.log

经过3回合比赛  决斗者1:alex  最终得分:  vs  决斗者2:wupeiqi  最终得分:  alex胜利  日期:--
经过3回合比赛 决斗者1:张前海 最终得分: vs 决斗者2:张欣欣 最终得分: 张前海胜利 日期:--
经过3回合比赛 决斗者1:孟令号 最终得分: vs 决斗者2:高自动 最终得分: 孟令号胜利 日期:--
经过3回合比赛 决斗者1:林磊 最终得分: vs 决斗者2:蒋小波 最终得分: 林磊胜利 日期:--
经过3回合比赛 决斗者1:于洋 最终得分: vs 决斗者2:万宝 最终得分: 于洋胜利 日期:--
经过3回合比赛 决斗者1:周万宝 最终得分: vs 决斗者2:张前海 最终得分: 周万宝胜利 日期:--
经过4回合比赛 决斗者1:乔兵 最终得分: vs 决斗者2:周瑜 最终得分: 乔兵胜利 日期:--
经过4回合比赛 决斗者1:张鹏 最终得分: vs 决斗者2:高进 最终得分: 张鹏胜利 日期:--

    程序部分功能模块截图展示:

1 主菜单:

-----------------------------------------------------------------------------------------------
                                欢迎来到PK赢美女平台           星期:{0}   日期:{1}
-----------------------------------------------------------------------------------------------

【1】平台介绍         【2】PK场            【3】战绩查询          【q]退出

-----------------------------------------------------------------------------------------------

    2 输入1,进入角色介绍菜单,并查看战士的介绍:

-----------------------------------------------------------------------------------------------

相传民国时候,如果两个男的同时爱上一个女的,那么他们就会通过决战来获得美人的芳心。
    胜利之人抱得美人归。
        比赛规则如下:
        1、两人进行三次比赛,三次比赛总分最高者胜出;
        2、如果三次比赛之后,两人成绩一样,则进入加时赛;
        3、加时赛进行次数由此局比萨决定,如果此次某人得分高,则比赛结束,否则一直进行,直到分出胜负;
-----------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------
     【技能编号】              【技能名称】          【技能属性】             【技能得分】
-----------------------------------------------------------------------------------------------

11                      rich              有钱                        66
        12                      poor              贫穷                        15
        13                      handsome          帅气                        49
        14                      high              高                         36
        15                      short             矮                         18
        16                      car               有车                        40
        17                      house             有房                        59
        18                      struggle          上进                        42
        19                      ugly              丑陋                        14
        20                      soso              一般                        29
-----------------------------------------------------------------------------------------------
    3 返回主菜单,输入2,进入PK场:

-----------------------------------------------------------------------------------------------
                            欢迎来到PK场     星期:2017-08-07   日期:一
      两位决斗者将在这里进行决斗,胜利的人将抱得没人归来,下面让我们拭目以待,看谁将赢得比赛,获得
  美人的芳心。
-----------------------------------------------------------------------------------------------

--------------------------下面将完善决斗者1的信息--------------------------------------
请输入决斗者1的名字:alex
请输入决斗者1的年龄:28
决斗者1信息完善完毕!
--------------------------下面将完善决斗者2的信息--------------------------------------
请输入决斗者2的名字:吴沛齐
请输入决斗者2的年龄:29
决斗者2信息完善完毕!
--------------------------下面将完善美女的信息--------------------------------------
请输入美女的名字:凤姐
请输入美女的年龄:18

-----------------------------------------------------------------------------------------------
              下面有请决斗者1:alex 和 决斗者2:吴沛齐 闪亮登场

并有请美女:凤姐在旁边观战,比赛正式开始
-----------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------
     【技能编号】              【技能名称】          【技能属性】             【技能得分】
-----------------------------------------------------------------------------------------------

11                      rich              有钱                        66
        12                      poor              贫穷                        15
        13                      handsome          帅气                        49
        14                      high              高                         36
        15                      short             矮                         18
        16                      car               有车                        40
        17                      house             有房                        59
        18                      struggle          上进                        42
        19                      ugly              丑陋                        14
        20                      soso              一般                        29
-----------------------------------------------------------------------------------------------    4对战开始,可以选择自动战斗,也可以手动战斗

手动输入技能,输入的技能不能重复,如果重复将重新输入,因为不能一直只用最高得分的技能,那就没有意思了。并且因为游戏是根据身高,有钱,有房,有车,高矮,胖瘦等作为技能的。不能重复。

-----------------------------------------------------------------------------------------------
决斗者1请根据实际情况输入技能编号:11
决斗者2请根据实际情况输入技能编号:12

-----------------------------------------------------------------------------------------------
               第1回合                       星期:一      日期:2017-08-07
-----------------------------------------------------------------------------------------------
        决斗者1--姓名:alex                                  决斗者2--姓名:吴沛齐
                                    VS
      技能:rich    得分:66                              技能:poor   得分:15
-----------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------

第1回合 决斗者1:alex  累计得分:66       决斗者2:吴沛齐  累计得分:15

-----------------------------------------------------------------------------------------------

决斗者1请根据实际情况输入技能编号:11
对不起,技能编号不能重复输入!
决斗者1请根据实际情况输入技能编号:16
决斗者2请根据实际情况输入技能编号:15

-----------------------------------------------------------------------------------------------
               第2回合                       星期:一      日期:2017-08-07
-----------------------------------------------------------------------------------------------
        决斗者1--姓名:alex                                  决斗者2--姓名:吴沛齐
                                    VS
      技能:car    得分:40                              技能:short   得分:18
-----------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------

第2回合 决斗者1:alex  累计得分:106       决斗者2:吴沛齐  累计得分:33

-----------------------------------------------------------------------------------------------

决斗者1请根据实际情况输入技能编号:17
决斗者2请根据实际情况输入技能编号:14

-----------------------------------------------------------------------------------------------
               第3回合                       星期:一      日期:2017-08-07
-----------------------------------------------------------------------------------------------
        决斗者1--姓名:alex                                  决斗者2--姓名:吴沛齐
                                    VS
      技能:house    得分:59                              技能:high   得分:36
-----------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------

第3回合 决斗者1:alex  累计得分:165       决斗者2:吴沛齐  累计得分:69

-----------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------
                                  最终得分展示

经过3回合比赛   决斗者1:alex  最终得分:165       决斗者2:吴沛齐  最终得分:69

-----------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------

决斗者:alex  最终得分:165  超过  决斗者:吴沛齐  最终得分:69

恭喜决斗者:alex最终获得胜利,将抱得美人归!!!!Congratulation for you!

-----------------------------------------------------------------------------------------------

恭喜你赢得这次决赛,奴家凤姐从此以后属于你了,今晚我将与alex洞房花烛夜!!

每一回合各自输入技能,比赛供三次,获胜这将得到凤姐,与凤姐共度良宵。

如若三轮之后得分相同,则进入加时赛,加时赛每轮比较得分,只有有一方得分高于另一方则停止比赛,并赢得比赛,收获凤姐。

5 返回主菜单,输入3,查看战绩榜:

首先输入查找名字、起始日期和结束日期:

请输入您要查询的功能编号:3
请输入您要查询的决战者姓名:alex
请输入您要查询的起始日期(yyyy-mm-dd):2017-1-1
请输入您要查询的起始日期(yyyy-mm-dd):2018-08-07

第1回合 决斗者1:alex  得分:66   vs  决斗者2:wupeiqi  得分:15  日期:2017-08-06
第2回合 决斗者1:alex  得分:40   vs  决斗者2:wupeiqi  得分:59  日期:2017-08-06
第3回合 决斗者1:alex  得分:42   vs  决斗者2:wupeiqi  得分:18  日期:2017-08-06
第1回合 决斗者1:alex  得分:66   vs  决斗者2:吴沛齐  得分:15  日期:2017-08-07
第2回合 决斗者1:alex  得分:40   vs  决斗者2:吴沛齐  得分:18  日期:2017-08-07
第3回合 决斗者1:alex  得分:59   vs  决斗者2:吴沛齐  得分:36  日期:2017-08-07

6 最后,返回主菜单,输入q,退出程序,结束:

-----------------------------------------------------------------------------------------------
                                欢迎来到PK赢美女平台           星期:{0}   日期:{1}
-----------------------------------------------------------------------------------------------

【1】平台介绍         【2】PK场            【3】战绩查询          【q]退出

-----------------------------------------------------------------------------------------------

请输入您要查询的功能编号:q
退出,欢迎下次光临!!!
    收获:

1、在模块调用过程中,我们总是从另外一个模块调用函数、类等,如果这个模块中的函数引用了当前模块的函数,那么是不受影响的,调用这个函数,可以自动调用引用函数,不用我们担心会出错;

2、日期函数自带拍错功能,如年必须是四位,月必须是1-12,天必须根据当月的天数1-31内规则处理,如果有误,则会报错,这样我们就能用这个特性判断输入的日期是否合法,因为在excel中,比如你输入2017-13-12会自动给你转换为:2018-1-12,在Python中就是报错;

3、类的使用规则,其实在程序中,两个人PK我就是实例化了两个人,利用类的功能修改、添加属性给这两个属性,从而实现了代码的统一,调用时候也不容易出错;但是可能刚接触类吧!不能用类写太多的方法,这个后续还待加强。

4、还有就是学习是不断重复的过程,前面学习过了,可能后面有忘记了,这个时候需要回过头来在温习一下,掌握基础的用法,其实原理都是一样的。

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

  1. day6作业--游戏人生

    本节作业: 熟练使用类和模块,写一个交互性强.有冲突的程序. 思路: 1.各个模块之间的调用关系,如何使用类,各种方法的使用上面: 2.学了类,以为能用来解决所有问题,东西都要写在类里面: 3.下面自 ...

  2. day6作业详解

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

  3. IC入门课第五课作业:完善 Microblog 前端(1、显示发布者的名字;2、增加新UI、3、关注其他学员的 canister)

    上周完成了 IC 入门课程第五课的作业 现将答案贴出,欢迎同学们参考,禁止抄袭作业哦 课程作业 (完善 microblog 前端) 1. 显示消息的发布者名字 a. 给 Message 增加 auth ...

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

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

  5. Day6作业及默写

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

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

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

  7. day6作业--选课系统

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

  8. Day6作业:计算器

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

  9. day6 作业 购物车

随机推荐

  1. GDAL中文件的驱动及对应的文件格式(转) https://blog.csdn.net/haojknm/article/details/5851968

    GDALDriver * poDriver; char *pszFormat=GetOutimgInfo(m_strInput); poDriver = GetGDALDriverManager()- ...

  2. vue学习之用 Vue.js + Vue Router 创建单页应用的几个步骤

    通过vue学习一:新建或打开vue项目,创建好项目后,接下来的操作为: src目录重新规划——>新建几个页面——>配置这几个页面的路由——>给根实例注入路由配置 src目录重整 在项 ...

  3. mysql 原理~ index的详解

    一 简介:今天咱们来介绍下index的一些东西 二 数据的基本存储结构 1 磁盘空间被划分为许多大小相同的块(Block) 在内存中读出是页(Page).   2 一个表的这些数据块以链表的方式串联在 ...

  4. FPN-Feature Pyramid Networks for Object Detection

    FPN-Feature Pyramid Networks for Object Detection 标签(空格分隔): 深度学习 目标检测 这次学习的论文是FPN,是关于解决多尺度问题的一篇论文.记录 ...

  5. swift中闭包的学习。

    在swift中的闭包等同于OC中的block,它的用途就是在于可以包装一段代码在必要的时候进行调用. 闭包定义:  {(类型列表) -> 返回值 in // 多条swift语句 // 执行代码 ...

  6. 对numpy中shape的理解

    from:http://blog.csdn.net/by_study/article/details/67633593 环境:Windows, Python3.5 一维情况: >>> ...

  7. 【转】Python之列表生成式、生成器、可迭代对象与迭代器

    [转]Python之列表生成式.生成器.可迭代对象与迭代器 本节内容 语法糖的概念 列表生成式 生成器(Generator) 可迭代对象(Iterable) 迭代器(Iterator) Iterabl ...

  8. Linux内存管理6---伙伴算法与slab

    1.前言 本文所述关于内存管理的系列文章主要是对陈莉君老师所讲述的内存管理知识讲座的整理. 本讲座主要分三个主题展开对内存管理进行讲解:内存管理的硬件基础.虚拟地址空间的管理.物理地址空间的管理. 本 ...

  9. 为何time_before 起作用【转】

    转自:http://decimal.blog.51cto.com/1484476/410673 Title: jiffies溢出与时间先后比较编制: chinakapok@sina.com日期:200 ...

  10. Linux 查看CPU信息,机器型号,内存等信息