本节作业:
熟练使用类和模块,写一个交互性强、有冲突的程序。
一、作业目的
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(11, len(setting.Skills) + 11)): skill1 = setting.Skills[int(skill1) - 11] if not skill1 in skill_list1: #判断技能编号是否重复,同一个技能不能释放两次 tem_score1 = setting.Skill_Score[skill1][0] 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(11, len(setting.Skills) + 11)): skill2 = setting.Skills[int(skill2) - 11] if not skill2 in skill_list2: #判断技能编号是否重复,同一个技能不能释放两次 tem_score2 = setting.Skill_Score[skill2][0] 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 = 3 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 == ‘1‘: common.stroy_show(menu.story_introduce) common.skill_show(menu.skill_show) elif num == ‘2‘: 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 = 0 skill_list1 = [] skill_list2 = [] while skill_num < 3: score = duel(skill_num+1,week_today,date_today,m1.name,m1.score,m2.name,m2.score,skill_list1,skill_list2) skill_num += 1 m1.score = score[0] m2.score = score[1] 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(3,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(3,m2.name,m2.score,m1.name,m1.score,m2.name,date_today)) elif m1.score == m2.score: print("两位决斗者打成平手,将进入加时赛!!!") while True: skill_num += 1 score = duel(skill_num, week_today, date_today, m1.name, m1.score, m2.name, m2.score, skill_list1, skill_list2) m1.score = score[0] m2.score = score[1] 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 == ‘3‘: ‘‘‘数据报表查询模块‘‘‘ 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":[66,‘有钱‘],"poor":[15,"贫穷"],"handsome":[49,"帅气"],‘high‘:[36,"高"], "short":[18,"矮"],"car":[40,"有车"],‘house‘:[59,"有房"],‘struggle‘:[42,"上进"], ‘ugly‘:[14,"丑陋"],"soso":[29,"一般"]} file_path = os.path.join(BASE_DIR,"log")
2.2 界面显示模板文件menu.py
homepage = ‘‘‘ ----------------------------------------------------------------------------------------------- 欢迎来到PK赢美女平台 星期:{0} 日期:{1} ----------------------------------------------------------------------------------------------- 【1】平台介绍 【2】PK场 【3】战绩查询 【q]退出 ----------------------------------------------------------------------------------------------- ‘‘‘ story_introduce = ‘‘‘\033[32;1m ----------------------------------------------------------------------------------------------- \033[34;1m相传民国时候,如果两个男的同时爱上一个女的,那么他们就会通过决战来获得美人的芳心。 胜利之人抱得美人归。\033[0m 比赛规则如下: 1、两人进行三次比赛,三次比赛总分最高者胜出; 2、如果三次比赛之后,两人成绩一样,则进入加时赛; 3、加时赛进行次数由此局比萨决定,如果此次某人得分高,则比赛结束,否则一直进行,直到分出胜负; ----------------------------------------------------------------------------------------------- \033[0m‘‘‘ skill_show = ‘‘‘ ----------------------------------------------------------------------------------------------- 【技能编号】 【技能名称】 【技能属性】 【技能得分】 ----------------------------------------------------------------------------------------------- ‘‘‘ pk_message = ‘‘‘\033[38;1m ----------------------------------------------------------------------------------------------- 欢迎来到PK场 星期:{0} 日期:{1} 两位决斗者将在这里进行决斗,胜利的人将抱得没人归来,下面让我们拭目以待,看谁将赢得比赛,获得 美人的芳心。 ----------------------------------------------------------------------------------------------- \033[0m‘‘‘ start_duel = ‘‘‘ ----------------------------------------------------------------------------------------------- \033[34;1m下面有请决斗者1:{0} 和 决斗者2:{1} 闪亮登场 并有请美女:{2}在旁边观战,比赛正式开始\033[0m ----------------------------------------------------------------------------------------------- ‘‘‘ duel_message = ‘‘‘ ----------------------------------------------------------------------------------------------- 第{0}回合 星期:{1} 日期:{2} ----------------------------------------------------------------------------------------------- 决斗者1--姓名:{3} 决斗者2--姓名:{6} VS 技能:{4} 得分:{5} 技能:{7} 得分:{8} ----------------------------------------------------------------------------------------------- ‘‘‘ duel_score = ‘‘‘ ----------------------------------------------------------------------------------------------- 第{0}回合 决斗者1:{1} 累计得分:{2} 决斗者2:{3} 累计得分:{4} ----------------------------------------------------------------------------------------------- ‘‘‘ finall_score = """ ----------------------------------------------------------------------------------------------- \033[31;1m 最终得分展示 经过{0}回合比赛 决斗者1:{1} 最终得分:{2} 决斗者2:{3} 最终得分:{4} \033[0m ----------------------------------------------------------------------------------------------- """ victor_show = ‘‘‘ ----------------------------------------------------------------------------------------------- \033[31;1m 决斗者:{0} 最终得分:{1} 超过 决斗者:{2} 最终得分:{3} 恭喜决斗者:{4}最终获得胜利,将抱得美人归!!!!Congratulation for you!\033[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) == 0: 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,11): skill_score = setting.Skill_Score[skill][0] skill_introduce = make_equal_length(2,setting.Skill_Score[skill][1]) skill = make_equal_length(10,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=0): 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 得分: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:张前海 得分:66 vs 决斗者2:张欣欣 得分:66 日期:2017-08-06 第2回合 决斗者1:张前海 得分:40 vs 决斗者2:张欣欣 得分:18 日期:2017-08-06 第3回合 决斗者1:张前海 得分:42 vs 决斗者2:张欣欣 得分:40 日期:2017-08-06 第1回合 决斗者1:孟令号 得分:66 vs 决斗者2:高自动 得分:40 日期:2017-08-06 第2回合 决斗者1:孟令号 得分:18 vs 决斗者2:高自动 得分:36 日期:2017-08-06 第3回合 决斗者1:孟令号 得分:49 vs 决斗者2:高自动 得分:18 日期:2017-08-06 第1回合 决斗者1:林磊 得分:66 vs 决斗者2:蒋小波 得分:18 日期:2017-08-06 第2回合 决斗者1:林磊 得分:36 vs 决斗者2:蒋小波 得分:49 日期:2017-08-06 第3回合 决斗者1:林磊 得分:42 vs 决斗者2:蒋小波 得分:59 日期:2017-08-06 第1回合 决斗者1:于洋 得分:66 vs 决斗者2:万宝 得分:40 日期:2017-08-06 第2回合 决斗者1:于洋 得分:18 vs 决斗者2:万宝 得分:36 日期:2017-08-06 第3回合 决斗者1:于洋 得分:49 vs 决斗者2:万宝 得分:15 日期:2017-08-06 第1回合 决斗者1:张前海 得分:66 vs 决斗者2:周万宝 得分:66 日期:2017-08-06 第2回合 决斗者1:张前海 得分:18 vs 决斗者2:周万宝 得分:18 日期:2017-08-06 第3回合 决斗者1:张前海 得分:36 vs 决斗者2:周万宝 得分:49 日期:2017-08-06 第1回合 决斗者1:乔兵 得分:66 vs 决斗者2:周瑜 得分:66 日期:2017-08-06 第2回合 决斗者1:乔兵 得分:15 vs 决斗者2:周瑜 得分:15 日期:2017-08-06 第3回合 决斗者1:乔兵 得分:49 vs 决斗者2:周瑜 得分:49 日期:2017-08-06 第4回合 决斗者1:乔兵 得分:40 vs 决斗者2:周瑜 得分:18 日期:2017-08-06 第1回合 决斗者1:张鹏 得分:66 vs 决斗者2:高进 得分:66 日期:2017-08-06 第2回合 决斗者1:张鹏 得分:15 vs 决斗者2:高进 得分:15 日期:2017-08-06 第3回合 决斗者1:张鹏 得分:49 vs 决斗者2:高进 得分:49 日期:2017-08-06 第4回合 决斗者1:张鹏 得分:42 vs 决斗者2:高进 得分:40 日期:2017-08-06
5.2 对战报表vs.log
经过3回合比赛 决斗者1:alex 最终得分:148 vs 决斗者2:wupeiqi 最终得分:92 alex胜利 日期:2017-08-06 经过3回合比赛 决斗者1:张前海 最终得分:148 vs 决斗者2:张欣欣 最终得分:124 张前海胜利 日期:2017-08-06 经过3回合比赛 决斗者1:孟令号 最终得分:133 vs 决斗者2:高自动 最终得分:94 孟令号胜利 日期:2017-08-06 经过3回合比赛 决斗者1:林磊 最终得分:144 vs 决斗者2:蒋小波 最终得分:126 林磊胜利 日期:2017-08-06 经过3回合比赛 决斗者1:于洋 最终得分:133 vs 决斗者2:万宝 最终得分:91 于洋胜利 日期:2017-08-06 经过3回合比赛 决斗者1:周万宝 最终得分:133 vs 决斗者2:张前海 最终得分:120 周万宝胜利 日期:2017-08-06 经过4回合比赛 决斗者1:乔兵 最终得分:170 vs 决斗者2:周瑜 最终得分:148 乔兵胜利 日期:2017-08-06 经过4回合比赛 决斗者1:张鹏 最终得分:172 vs 决斗者2:高进 最终得分:170 张鹏胜利 日期:2017-08-06
程序部分功能模块截图展示:
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、还有就是学习是不断重复的过程,前面学习过了,可能后面有忘记了,这个时候需要回过头来在温习一下,掌握基础的用法,其实原理都是一样的。