day6作业--游戏人生
本節(jié)作業(yè):
??? 熟練使用類和模塊,寫一個交互性強(qiáng)、有沖突的程序。
??? 思路:
??? 1、各個模塊之間的調(diào)用關(guān)系,如何使用類,各種方法的使用上面;
??? 2、學(xué)了類,以為能用來解決所有問題,東西都要寫在類里面;
??? 3、下面自己謝了一個簡寫版程序,有些地方還待完善,先梳理一下,自己在把里面所有東西完善完成;
??? 本例寫的是兩個男人為了一個女人決斗,誰勝利抱得美人歸,失敗的人一邊涼快去。
??? conf配置文件下面有兩個文件:
??? setting.py:
?
import os,sys '''配置環(huán)境變量''' BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(BASE_DIR) Skills = ["rich","poor","handsome","ugly",'struggle',"car",'house',"height","short",'fat',"thin"] DATABASE = {'rich':66,"poor":10,"handsome":25,"ugly":6,"struggle":30,"car":35,"house":60,'height':42,'short':18,"fat":15,"thin":25}?
??? setting里面是存放技能屬性和技能對應(yīng)的得分屬性,有錢人得分66,貧窮得分:10分等等;根據(jù)屬性判斷得分,屌絲就失敗,高富帥就抱得美人歸。
??? menu.py:
'''程序主入口顯示''' main_show = ''' -------------------------------------------------------------------------------------------歡迎光臨搶美女決戰(zhàn)平臺 日期:{0} 星期:{1} -------------------------------------------------------------------------------------------【1】故事介紹 【2】PK決戰(zhàn) 【3】戰(zhàn)績榜 【q】退出------------------------------------------------------------------------------------------- ''' skill_message = ''' ----------------------------------------------------------------------------------------------技能展示 ----------------------------------------------------------------------------------------------技能編號 技能名稱 技能得分 ''' battle_message = ''' --------------------------------------------------------------------------------------------------\033[31;1m 今天:{0} 星期:{1}姓名:{2} 和 姓名:{3} 為了 {4} 在此決斗,獲勝者將抱得美人歸,生死由命成敗在天,誰能抱得美人歸,各憑實力特在此簽生死狀,如有生死,既往不咎!!! \033[0m --------------------------------------------------------------------------------------------------''' battle_show = ''' --------------------------------------------------------------------------------------------------第{0}回合: 日期:{1} 星期:{2}決戰(zhàn)者1 姓名:{3} 決戰(zhàn)者2 姓名:{6}VS技能:{4} 得分 {5} 技能:{7} 得分:{8} -------------------------------------------------------------------------------------------------- ''' match_show = ''' --------------------------------------------------------------------------------------------------第{0}回合--決戰(zhàn)者1:{1} 累計得分:{2} 決戰(zhàn)者2:{3} 累計得分:{4}-------------------------------------------------------------------------------------------------- ''' victor_show = ''' --------------------------------------------------------------------------------------------------比賽結(jié)果: 日期:{0} 星期:{1}經(jīng)過{2}回合決斗,決戰(zhàn)者--姓名:{3} 最終得分:{4} 戰(zhàn)勝 姓名:{5} 最終得分:{6}-------------------------------------------------------------------------------------------------- '''??? 此模塊配置各種輸出框架,整理輸出,以便看著舒服。
??? modules模塊--類,函數(shù)存放
? ? common.py:
import sys,os,datetime base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(base_dir) from conf import menu from conf import settingdef introduce(mess):''' 主頁介紹,介紹系統(tǒng)有哪些功能,讓人們嘗試:param mess: 功能展示:return:''' print(mess)def function_show(skills,skills_dict):''' 功能展示模塊,進(jìn)行人功能的展示:param skills::param skills_dict::return:''' print(menu.skill_message)for skill_num,skill in enumerate(skills,11):print("%18s%30s%20s" %(skill_num,skill,skills_dict[skill]))print("----------------------------------------------------------------------------------------------")def trans_weekday():''' 星期轉(zhuǎn)換模式,按照國人的習(xí)慣,把數(shù)字日期轉(zhuǎn)換為中文日期:return: 返回中文下的日期''' weekdays = ["一","二","三","四","五","六","日"]week_day = weekdays[datetime.date.weekday(datetime.date.today())]return week_daydef show_duel_message(date,week,name1,name2,name3):'''決斗者雙方信息展示,以及簽訂生死狀'''print(menu.battle_message.format(date,week,name1,name2,name3))??? common.py模塊,存放公共函數(shù),一些轉(zhuǎn)換函數(shù),方法都在里面。
??? role.py???
?
'''定義角色類''' class Person(object):'''定義一個人的類'''def __init__(self,name,age,sex): ###變量初始化###self.name = nameself.age = ageself.sex = sexclass Man(Person):def __init__(self,name,age,sex,score=0):'''繼承'''super(Man,self).__init__(name,age,sex) #重寫父類的方法,因為被子類覆蓋了self.score = scoreclass Wemon(Person):'''定義一個女性的類,繼承父類'''def __init__(self,name,age,sex,belong_to=""):super(Wemon,self).__init__(name,age,sex)self.belong_to = belong_to?
??? 存放類模塊,用來生成實例:
??? game_index.py -- 程序主入口,運行調(diào)用整個模塊
import sys,os,datetime,random from conf import menu from modules import common,role from conf import settingdef story_introduce():message = ''' -------------------------------------------------------------------------------------------------\033[34;1m相傳在民國時期,如果兩個男的同時看上一個女的,那么他們兩個就要進(jìn)行決斗來獲得美女的芳心。比賽共分為三場,沒人根據(jù)自己的獨特性質(zhì)進(jìn)行得分,最后得分最高者勝利,抱得美人歸。如果三場比賽之后,兩人得分相同,則進(jìn)入加時賽,加時賽按每輪進(jìn)行得分,直到分出勝負(fù)。\033[0m-------------------------------------------------------------------------------------------------''' print(message)def duel():'''決斗''''''完善決斗者1的信息'''name1 = input("請輸入決斗者1的名字:")age1 = input("請輸入決斗者1的年齡:")sex1 = "男" #默認(rèn)決斗者的性別都是男'''把決斗者1封裝到類中,生成一個實例'''m1 = role.Man(name1,age1,sex1)'''完善決斗者2的信息'''name2 = input("請輸入決斗者2的名字:")age2 = input("請輸入決斗者2的年齡:")sex2 = "男"m2 = role.Man(name2,age2,sex2)'''完善美女的信息'''name = input("請輸入被決斗美女的名字:")age = input("請輸入被決斗美女的年齡:")sex = "女"w1 = role.Wemon(name,age,sex)'''下面進(jìn)入決斗了'''common.show_duel_message(date_today,week_day,m1.name,m2.name,w1.name)skill_num = 0common.function_show(setting.Skills, setting.DATABASE)while skill_num < 3:'''初始化m1的屬性'''m1.skill = input("決斗者1請根據(jù)實際情況輸入您對應(yīng)的技能編號:")if int(m1.skill) in list(range(11,22)):m1.skill = setting.Skills[int(m1.skill)-11]else:print("對不起,您輸入的技能編號有誤,請重新輸入!")continuem1_tem_score = setting.DATABASE[m1.skill]m1.score += m1_tem_score'''初始化m2的屬性'''m2.skill = input("決斗者2請根據(jù)實際情況輸入您對應(yīng)的技能編號:")if int(m2.skill) in list(range(11,22)):m2.skill = setting.Skills[int(m2.skill)-11]else:print("對不起,您輸入的技能編號有誤,請重新輸入!")continuem2_tem_score = setting.DATABASE[m2.skill]m2.score += m2_tem_scoreprint(menu.battle_show.format(skill_num+1,date_today,week_day,m1.name,m1.skill,m1.score,m2.name,m2.skill,m2.score))print(menu.match_show.format(skill_num+1,m1.name,m1.score,m2.name,m2.score))skill_num += 1if m1.score > m2.score:print(menu.victor_show.format(date_today,week_day,3,m1.name,m1.score,m2.name,m2.score))print("比賽結(jié)束,%s獲勝" %m1.name)sys.exit()elif m1.score < m2.score:print(menu.victor_show.format(date_today,week_day,3,m2.name,m2.score,m1.name,m1.score))print("比賽結(jié)束,%s獲勝" %m2.name)sys.exit()elif m2.score == m1.score:print("兩個人經(jīng)過三輪比賽,得分一樣,下面將進(jìn)行加時賽,來確定輸贏!!!")if __name__ == "__main__":date_today = datetime.date.today().strftime("%Y-%m-%d")week_day = common.trans_weekday()flag = Truewhile flag:common.introduce(menu.main_show.format(date_today,week_day))query_num = input("請輸入選擇功能編號:")if query_num == '1':story_introduce()common.function_show(setting.Skills, setting.DATABASE)elif query_num == '2':###完善挑戰(zhàn)者1的信息,并放在一個類中###duel()elif query_num == '3':passelif query_num == 'q' or query_num == 'quit':sys.exit("您已退出游戲,歡迎下次來玩!")??? game_life.py程序主入口,用來調(diào)用整個程序的模塊,下面,運行這個程序,看如下:
-------------------------------------------------------------------------------------------歡迎光臨搶美女決戰(zhàn)平臺 日期:2017-08-06 星期:日 -------------------------------------------------------------------------------------------【1】故事介紹 【2】PK決戰(zhàn) 【3】戰(zhàn)績榜 【q】退出-------------------------------------------------------------------------------------------請輸入選擇功能編號:2 請輸入決斗者1的名字:吳沛齊 請輸入決斗者1的年齡:25 請輸入決斗者2的名字:Alex 請輸入決斗者2的年齡:36 請輸入被決斗美女的名字:李志玲 請輸入被決斗美女的年齡:24--------------------------------------------------------------------------------------------------今天:2017-08-06 星期:日姓名:吳沛齊 和 姓名:Alex 為了 李志玲 在此決斗,獲勝者將抱得美人歸,生死由命成敗在天,誰能抱得美人歸,各憑實力特在此簽生死狀,如有生死,既往不咎!!! ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------技能展示 ----------------------------------------------------------------------------------------------技能編號 技能名稱 技能得分11 rich 6612 poor 1013 handsome 2514 ugly 615 struggle 3016 car 3517 house 6018 height 4219 short 1820 fat 1521 thin 25 ---------------------------------------------------------------------------------------------- 決斗者1請根據(jù)實際情況輸入您對應(yīng)的技能編號:11 決斗者2請根據(jù)實際情況輸入您對應(yīng)的技能編號:12--------------------------------------------------------------------------------------------------第1回合: 日期:2017-08-06 星期:日決戰(zhàn)者1 姓名:吳沛齊 決戰(zhàn)者2 姓名:AlexVS技能:rich 得分 66 技能:poor 得分:10 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------第1回合--決戰(zhàn)者1:吳沛齊 累計得分:66 決戰(zhàn)者2:Alex 累計得分:10--------------------------------------------------------------------------------------------------決斗者1請根據(jù)實際情況輸入您對應(yīng)的技能編號:13 決斗者2請根據(jù)實際情況輸入您對應(yīng)的技能編號:14--------------------------------------------------------------------------------------------------第2回合: 日期:2017-08-06 星期:日決戰(zhàn)者1 姓名:吳沛齊 決戰(zhàn)者2 姓名:AlexVS技能:handsome 得分 91 技能:ugly 得分:16 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------第2回合--決戰(zhàn)者1:吳沛齊 累計得分:91 決戰(zhàn)者2:Alex 累計得分:16--------------------------------------------------------------------------------------------------決斗者1請根據(jù)實際情況輸入您對應(yīng)的技能編號:17 決斗者2請根據(jù)實際情況輸入您對應(yīng)的技能編號:18--------------------------------------------------------------------------------------------------第3回合: 日期:2017-08-06 星期:日決戰(zhàn)者1 姓名:吳沛齊 決戰(zhàn)者2 姓名:AlexVS技能:house 得分 151 技能:height 得分:58 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------第3回合--決戰(zhàn)者1:吳沛齊 累計得分:151 決戰(zhàn)者2:Alex 累計得分:58----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------比賽結(jié)果: 日期:2017-08-06 星期:日經(jīng)過3回合決斗,決戰(zhàn)者--姓名:吳沛齊 最終得分:151 戰(zhàn)勝 姓名:Alex 最終得分:58--------------------------------------------------------------------------------------------------比賽結(jié)束,吳沛齊獲勝??? 總結(jié):
??? 1、通過上面的實例,大概知道了類是如何使用的,上面我就是使用類的方法進(jìn)行調(diào)用的,使用類的好處是,可以把一個人所有的屬性都封裝到類里面,而且另一個實例也一樣,調(diào)用的時候我們只需要調(diào)用類即可,很名了。
??? 2、可以把一些方法放在類里面,其實不是說使用類,就不用其他的函數(shù)了,其他函數(shù)還是與之前一樣要寫的,只是類里面包含的是屬于類的本身方法,就如common模塊本身還有自己的方法。
??? 3、函數(shù)的調(diào)用,我們要知道我們實現(xiàn)的東西是什么,不要害怕參數(shù)問題,參數(shù)后期自己可以直接傳即可,只要知道需要什么參數(shù),都是可以辦的到的。
??? 下面將對上面代碼進(jìn)行重寫完善,并整理流程圖。這也是我第一次用類寫框架,所以紀(jì)念一下。 ?
轉(zhuǎn)載于:https://www.cnblogs.com/gengcx/p/7282666.html
總結(jié)
以上是生活随笔為你收集整理的day6作业--游戏人生的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java自学之路-day17
- 下一篇: CSRF 1 (转)