• day6作业--游戏人生完善


    本节作业:

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

        一、作业目的

        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}
    "
            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("33[31;1m决斗者1信息完善完毕!33[0m")
                print("--------------------------下面将完善决斗者2的信息--------------------------------------")
                name2 = input("请输入决斗者2的名字:")
                age2 = input("请输入决斗者2的年龄:")
                sex2 = ""
                '''生成决斗者2的实例'''
                m2 = role.Man(name2,age2,sex2)
                print("33[31;1m决斗者2信息完善完毕!33[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}
    "
                        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}
    "
                        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}
    "
                                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}
    "
                                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 = '''33[32;1m
    -----------------------------------------------------------------------------------------------
    
           033[34;1m相传民国时候,如果两个男的同时爱上一个女的,那么他们就会通过决战来获得美人的芳心。
        胜利之人抱得美人归。033[0m
            比赛规则如下:
            1、两人进行三次比赛,三次比赛总分最高者胜出;
            2、如果三次比赛之后,两人成绩一样,则进入加时赛;
            3、加时赛进行次数由此局比萨决定,如果此次某人得分高,则比赛结束,否则一直进行,直到分出胜负;
    -----------------------------------------------------------------------------------------------
    033[0m'''
    skill_show = '''
    -----------------------------------------------------------------------------------------------
         【技能编号】              【技能名称】          【技能属性】             【技能得分】
    -----------------------------------------------------------------------------------------------
    '''
    
    pk_message = '''33[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("33[35;1m%10s%32s%10s%26s33[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("33[34;1m恭喜你赢得这次决赛,奴家%s从此以后属于你了,今晚我将与%s洞房花烛夜!!33[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、还有就是学习是不断重复的过程,前面学习过了,可能后面有忘记了,这个时候需要回过头来在温习一下,掌握基础的用法,其实原理都是一样的。

  • 相关阅读:
    IDEA小插件之快速修改Maven多模块的工程版本
    Java 8 Lambda实现原理分析
    怒学Java8系列一:Lambda表达式
    Redis有序集内部实现原理分析(二)
    Redis有序集内部实现原理分析
    JVM内存堆布局图解分析
    Redis内存回收:LRU算法
    垃圾收集器:引用计数算法
    Maven解读:项目依赖管理如何优化
    Maven解读:强大的依赖体系
  • 原文地址:https://www.cnblogs.com/gengcx/p/7302299.html
Copyright © 2020-2023  润新知