day6做業--遊戲人生完善

本節做業:python

    熟練使用類和模塊,寫一個交互性強、有衝突的程序。數據庫

    1、做業目的api

    一、規範程序寫法,要按照模塊來規範書寫;app

    二、類的使用,文件之間的調用練習;框架

    三、思路的開闊,本身編寫衝突,實現調用;python2.7

    四、對基礎知識的熟練掌握。函數

    本文寫了一個決鬥系統,兩個男的爲了一個女的進行決鬥,獲勝者贏得美女放心,失敗者自擼。學習

    系統功能模塊:ui

    第六天的做業:文字遊戲程序是在python3.5.2環境下開發,在python2.7環境下大同小異,主要功能模塊以下圖:  spa

    系統目錄結構:

    程序採用分層的方式編寫,包括系統配置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,進入角色介紹菜單,並查看戰士的介紹: 

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

       相傳民國時候,若是兩個男的同時愛上一個女的,那麼他們就會經過決戰來得到美人的芳心。
    勝利之人抱得美人歸。
        比賽規則以下:
        一、兩人進行三次比賽,三次比賽總分最高者勝出;
        二、若是三次比賽以後,兩人成績同樣,則進入加時賽;
        三、加時賽進行次數由此局比薩決定,若是這次某人得分高,則比賽結束,不然一直進行,直到分出勝負;
-----------------------------------------------------------------------------------------------


-----------------------------------------------------------------------------------------------
     【技能編號】              【技能名稱】          【技能屬性】             【技能得分】
-----------------------------------------------------------------------------------------------

        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-12,天必須根據當月的天數1-31內規則處理,若是有誤,則會報錯,這樣咱們就能用這個特性判斷輸入的日期是否合法,由於在excel中,好比你輸入2017-13-12會自動給你轉換爲:2018-1-12,在Python中就是報錯;

    三、類的使用規則,其實在程序中,兩我的PK我就是實例化了兩我的,利用類的功能修改、添加屬性給這兩個屬性,從而實現了代碼的統一,調用時候也不容易出錯;可是可能剛接觸類吧!不能用類寫太多的方法,這個後續還待增強。

    四、還有就是學習是不斷重複的過程,前面學習過了,可能後面有忘記了,這個時候須要回過頭來在溫習一下,掌握基礎的用法,其實原理都是同樣的。

相關文章
相關標籤/搜索