




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、游戲人物識別專家系統(tǒng)邢洪偉試驗題目游戲人物識別專家系統(tǒng)、試驗內(nèi)容游戲人物識別專家系統(tǒng)是流行的專家系統(tǒng)實驗?zāi)P停?主要基于暴風(fēng)公司出品 的經(jīng)典角色類游戲暗黑破壞神 2。它用產(chǎn)生式規(guī)則來表示知識,共 15 條規(guī)則、可以識別八種游戲人物,這些規(guī)則既少又簡單,可以改造他們,也 可以加進(jìn)新的規(guī)則,還可以用來識別其他東西的新規(guī)則來取代這些規(guī)則。游 戲人物識別 15 條規(guī)則的中文表示是:規(guī)則 1:如果:暴風(fēng)公司出品的單機角色類游戲則 :該游戲是暗黑破壞神規(guī)則 2:如果:暴風(fēng)公司出品的單機對抗類游戲則 :該游戲是魔獸爭霸規(guī)則 3:如果:暴風(fēng)公司出品的網(wǎng)絡(luò)游戲則 :該游戲是魔獸世界規(guī)則 4:如果:網(wǎng)易游戲出品的
2、網(wǎng)絡(luò)游戲則 :該游戲是夢幻西游規(guī)則 5:如果:暗黑破壞神版本 1則 :該游戲是暗黑破壞神 1規(guī)則 6:如果:是暗黑破壞神 2則 :該游戲是暗黑破壞神 2規(guī)則 7:如果:是暗黑破壞神 3則 :該游戲是暗黑破壞神 3規(guī)則 8:如果:暗黑破壞神版本 2 單手武器使用木棒的男性人物則 :該人物是德魯伊規(guī)則 9:如果:暗黑破壞神 2 單手武器使用手杖的男性人物則 :該人物是亡靈法師規(guī)則 10:如果:暗黑破壞神版本則 :該人物是巫師 規(guī)則 11:如果:暗黑破壞神版本則 :該人物是圣騎士 規(guī)則 12:如果:暗黑破壞神版本則 :該人物是野蠻人 規(guī)則 13:如果:暗黑破壞神版本則 :該人物是刺客2 單手武器使用
3、法杖的女性人物2 雙手武器使用長劍和盾牌的男性人物2 單手武器使用斧頭的男性人物2 單手武器使用爪子的男性人物規(guī)則 14:如果:暗黑破壞神 2 單手武器使用長劍的女性人物 則 :該人物是亞馬遜規(guī)則 15:如果:夢幻西游單手使用鞭子的女性人物 則 :該人物是飛燕女游戲人物識別專家系統(tǒng)由 15 條規(guī)則組成,可以識別八種動物,在 15 條規(guī) 則中,共出現(xiàn) 37 個概念(也稱作事實) ,共 37 個事實,每個事實給一個編號, 從編號從 1 到 37,在規(guī)則對象中我們不存儲事實概念,只有該事實的編號,同 樣規(guī)則的結(jié)論也是事實概念的編號, 事實與規(guī)則的數(shù)據(jù)以常量表示, 其結(jié)構(gòu)如下: Char *str=&
4、quot; 暴風(fēng)公司出品 "," 網(wǎng)易游戲出品 "," 單機游戲 "," 網(wǎng)絡(luò)游戲 " "角色類游戲 "," 對抗類游戲 "," 版本 1"," 版本 2"," 版本 3"," 男性"," 女性", " 暗 黑破壞神 "," 夢幻西游 "," 暗黑破壞神 1"," 暗黑破壞神 2"," 暗黑破壞神
5、3"," 單身 武器"," 雙手武器"," 使用木棒"," 是用手杖 "," 使用法杖"," 使用長劍"," 使用盾 牌"," 使用斧頭 "," 使用爪子 "," 使用鞭子"," 巫師"," 德魯伊"," 亡靈法師 "," 法師 "," 圣騎士"," 野蠻人",&quo
6、t; 刺客"," 亞馬遜"," 飛燕女"," 魔獸爭霸 "," 魔獸世界 0"程序用編號序列的方式表達(dá)了產(chǎn)生式規(guī)則,如資料中規(guī)則15,如果動物是鳥,且善飛,則該動物是信天翁。 相應(yīng)的規(guī)則數(shù)組第八條是 26 ,17,13,11,0, 0,第 26個是“使用鞭子”,如果事實成立,詢問使用者下一個事實,第 17 個“單手武器” ,如果也成立, 詢問使用者下一個事實, 第 13 個是“夢幻西游” 則,如果事實成立,詢問使用者下一個事實,第 11 個是“女性”,如果事實成 立,查找結(jié)論斷言編號數(shù)組 28 ,29,3
7、0,31,32,33,34,35,14,15,16,1 3,12,36,37中第八個“ 35”,這里 35對應(yīng)事實數(shù)組中的“飛燕女”。上述就是程序的推理過程,也是程序中的重點,該部分是由規(guī)則類(類 rul e)中的Query方法實現(xiàn)。三、流程圖及分析主程序的流程主要是: 1、實例化各個類2、初始化事實集3、初始化規(guī)則集4、使用規(guī)則對事實進(jìn)行推導(dǎo)規(guī)則類:規(guī)則名只是用來表示規(guī)則的一個名稱,前提鏈由前提類生成的單鏈表,結(jié)論 則是存放結(jié)論斷言編號,表示由該規(guī)則的到的結(jié)論在事實數(shù)組中的編號。事件類:事實號和規(guī)則數(shù)據(jù)和結(jié)論斷言數(shù)據(jù)的數(shù)字相對應(yīng)。 激活標(biāo)志表示這個時候有 沒有被處理過。 斷言這保存推理后的結(jié)
8、論, 在重復(fù)查詢這個事實條件時不用反復(fù) 詢問用戶。四、關(guān)鍵代碼int rule:Query()int i;char c;int Tag=0;list *L; fact *F;F=Fact;L=Pre;if(L=NULL)cout<<"nError"while(L!=NUll)F=Fact;for(;) if(abs(L->GetNumber()=F->GetNumber() break;F=F->Next; / 查找與規(guī)則前提鏈中前提號相同的事實 if(L->GetNumber()>0)if(F->GetSucc()=true
9、) L=L->Next;continue; if(F->GetSucc()=false) return false; / 如果事實的斷言為真則判斷下一個前提,為假,則表示該規(guī)則不適合else if(F->GetSucc()=true) return false; if(F->GetSucc()=false) L=L->Next;continue; cout<<endl<<F->GetName()<<"(Y/N)" c=getchar(); / 事實斷言為不知道的時候,向用戶詢問 flushall();i
10、f(c='Y')|(c='y') if(L->GetNumber()>0)F->PutAct(1,true); / 設(shè)置事實的斷言和激活標(biāo)志 if(L->GetNumber()<0)F->PutAct(1,true); Tag=-1;return false; else if(L->GetNumber()<0)F->PutAct(-1,false);else F->PutAct(-1,false); Tag=-1;return false; L=L->Next;F=Fact;for(;) if(C
11、onc=F->GetNumber() break; / 查找結(jié)論斷言對應(yīng)的事實 F=F->Next;if(Conc<24)F->PutAct(1,true);return false;if(Tag!=-1)F=Fact;for(;)if(Conc=F->GetNumber() break;F=F->Next;if(Conc<24)F->PutAct(1,true);return false;cout<<"nThis animal is"<<F->GetName();return true;retu
12、rn false;五 試驗結(jié)論通過這次試驗和一些輔助書籍的閱讀,加強了自己的閱讀程序能力和 編程的能力,而且游戲人物識別專家系統(tǒng),它用產(chǎn)生式規(guī)則來表示知識,可 以改造他們,也可以加進(jìn)新的規(guī)則,還可以用來識別其他東西的新規(guī)則來取 代這些規(guī)則,運用到其它方面去??傊@次試驗讓我受益匪淺。附件:完整的源代碼#include <string.h> #include <math.h> #include <stdio.h> #include <iostream.h> #define True 1 #define False 0 #define DontKn
13、ow -1Char *str=" 暴風(fēng)公司出品 "," 網(wǎng)易游戲出品 "," 單機游戲 "," 網(wǎng)絡(luò)游戲 "," 角色類游戲 "," 對抗類游戲 "," 版本 1"," 版本 2"," 版本 3"," 男性"," 女性", " 暗黑破壞神 "," 夢幻西游 "," 暗黑破壞神 1"," 暗黑破壞神 2&quo
14、t;," 暗黑破壞神 3"," 單身武器 "," 雙手武器 "," 使用木棒 "," 是用手杖 "," 使用法杖 "," 使用長劍 "," 使用盾牌 "," 使用斧頭","使用爪子"," 使用鞭子","巫師","德魯伊"," 亡靈法師","法師"," 圣騎士"," 野蠻
15、人"," 刺客 "," 亞馬遜 "," 飛燕女 "," 魔獸爭霸 "," 魔獸世界 ","0"int rulep6=19,17,15,10,0,0,20,17,15,10,0,0,21,17,15,11,0,0, 23,22,18,15,10,0,24,17,15,11,0,0,25,17,15,11,0,0,22,17,15,11,0,0, 26,17,13,11,0,0,12,7,1,0,0,0,12,8,1,0,0,0,12,9,1,0,0,0, 4,2,0,
16、0,0,0,5,3,1,0,0,0,6,3,1,0,0,0,4,1,0,0,0,0 ;int rulec=28, 29, 30, 31, 32, 33, 34, 35, 14, 15, 16, 13, 12, 36,37;class factprivate:int Number;char Name21;int Active;int Succ;public:fact *Next;fact(int Num,char *L)strcpy(Name,L);Number=Num;Active=False;1 是有。/-1 是已經(jīng)推理,不符合。 1 是已經(jīng)推理,符合。Succ=DontKnow; /0 是
17、無, -1 是不知道, Next=NULL;char *GetName()char *L;L=new char21;strcpy(L,Name);return L;int GetNumber()return Number;int GetAct()return Active;int GetSucc()return Succ;void PutAct(const int Act0,int Suc0)Active=Act0;Succ=Suc0; ; fact *Fact; class list private:int Number; public:list *Next;list(int Num)Num
18、ber=Num;Next=NULL;int GetNumber()return Number;class rulechar *Name;list *Pre;int Conc; public:rule *Next;rule(char *N,int P,int C);rule();int Query();void GetName()cout<<Name;rule:rule()list *L;while(Pre)L=Pre->Next;delete Pre;Pre=L;delete Name;rule:rule(char *N,int P,int C)int i;list *L;P
19、re=NULL;Next=NULL;Name=new charstrlen(N)+1; strcpy(Name,N);i=0;while(Pi!=0)L=new list(Pi+);L->Next=Pre;Pre=L;Conc=C;int rule:Query()char c;int Tag=0;list *L;fact *F;F=Fact;L=Pre;if(L=NULL)cout<<"nError"while(L!=NULL)F=Fact;for(;)if(abs(L->GetNumber()=F->GetNumber() break;F=F
20、->Next; if(L->GetNumber()>0)if(F->GetSucc()=True)L=L->Next;continue;if(F->GetSucc()=False)return False; elseif(F->GetSucc()=True)return False;if(F->GetSucc()=False)L=L->Next;continue; cout<<F->GetName()<<"(Y/N)"<<endl;c=getchar();flushall();i
21、f(c='Y')|(c='y')if(L->GetNumber()>0)F->PutAct(1,True);if(L->GetNumber()<0)F->PutAct(1,True);Tag=-1;return False;elseif(L->GetNumber()<0)F->PutAct(-1,False);elseF->PutAct(-1,False);Tag=-1; / 已經(jīng)推理,不符合 return False;L=L->Next;F=Fact;for(;)if(Conc=F->GetNumber()break;F=F->Next;if(Conc<24)F->PutAct(1,True);return False;if(Tag!=-1)F=Fact;for(;)if(Conc=F->GetNumber()break;F=F->Next;if(Conc<24)F->PutAct(1,True);return False;cout<<"n
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 清淤修補 施工方案
- 新型擋水壩施工方案
- 無線施工方案
- 工程外線施工方案
- 房梁圓弧處理施工方案
- 2025年度高端辦公室租賃服務(wù)合同
- 2025年度知識產(chǎn)權(quán)質(zhì)押貸款合同民間借貸法律規(guī)定及操作指南
- 二零二五年度專利信息檢索與專利布局合作協(xié)議
- 2025年度股東投資退出機制對賭協(xié)議書
- 二零二五年度沿街房屋租賃合同(含物業(yè)管理服務(wù))
- 腫瘤病人的姑息治療和護(hù)理
- 盆底康復(fù)治療新進(jìn)展
- 2024-2030年中國生命科學(xué)產(chǎn)業(yè)發(fā)展規(guī)劃及投資策略分析報告
- 醫(yī)療器械監(jiān)督管理條例培訓(xùn)2024
- 認(rèn)真對待培訓(xùn)課件
- 【經(jīng)典文獻(xiàn)】《矛盾論》全文
- 公司組織架構(gòu)圖模板完整版可編輯 10
- 現(xiàn)代家政導(dǎo)論-課件 6.1.2認(rèn)識家政職業(yè)道德
- 《機械制圖》高職機電專業(yè)全套教學(xué)課件
- 蘇少版七年級美術(shù)下冊 全冊
- 《廉頗藺相如列傳》教案 2023-2024學(xué)年高教版(2023)中職語文基礎(chǔ)模塊下冊
評論
0/150
提交評論