锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
hWnd = FindWindowEx(hWnd , 0 , " SHELLDLL_DefView " , 0 );
hWnd = FindWindowEx(hWnd , 0 , " SysListView32 " , " FolderView " );
// 鍒濆鍖?nbsp;D3D 璁懼
InitD3D(hWnd);
鏄劇ず鐨勬椂鍊欙紝濡傛灉鎯蟲覆鏌撳湪妗岄潰鐨勪竴瑙掞紝鍒欏彲浠ヨ繖鏍峰啓錛?br>// 鏄劇ず鍦ㄥ乏涓婅錛?28×128瀹?/span>
RECT rect;
rect.left = 0;
rect.right = 128;
rect.top = 0;
rect.bottom = 128;
// 鏄劇ず
g_pd3dDevice->Present(0 , &rect , 0 , 0);
鍦ㄦ父鎴忓紩鎿庝腑錛?/span>Entity閫氬父琚炕璇戞垚瀹炰綋錛屼篃甯哥敤璇稿GameObject銆?/span>Actor銆?/span>SimulationObject銆?/span>Unit銆?/span>Character絳夊悕瀛椼傜浉姣斾簬瀵瑰浘鍍忓0闊沖紩鎿庣殑鐑儏錛?/span>Entity灞傚騫存潵涓鐩村鍙楀喎閬囷紝浣嗘渶榪戝嚑騫撮殢鐫澶у瀷娓告垙鐨勫彂灞曪紝Entity灞傝璁$殑閲嶈鎬у凡緇忚揪鍒板拰鍥懼儚澹伴煶鐨勫悓絳夋按騫籌紝鑰屼笖宸茬粡鍑虹幇浜嗗縐嶉氱敤鍨?/span>Entity鏋舵瀯銆傚綋鐒訛紝榪欓噷浼撮殢鐫浜夎鍜屽垎姝с?/span>
榪欐槸鏈鏃┿佹渶綆鍗曘佷篃鏄換浣曚漢閮借兘鐩存帴鎯沖埌鐨勬ā寮忋傝繖縐嶆柟寮忎笅涓涓?/span>Entity灝辨槸涓涓畝鍗曠殑struct:
struct Mob
{
int level, hp, mp, attack, …;
};
榪欑鎯呭喌涓嬪線寰闇瑕佸涓嶅悓綾誨瀷鐨?/span>Entity瀹氫箟涓嶅悓鐨?/span>struct錛屾瘮濡?/span>Player銆?/span>Mob銆?/span>Item銆?/span>Doodad絳夈?/span>Entity鐨勬暟鎹簱鍙互鐩存帴浣跨敤鐜版垚鐨勬暟鎹簱緋葷粺鎴栬呬粠鏁版嵁鏂囦歡璇誨彇錛屾瘮濡?/span>csv鏂囦歡銆備竴鑸細閫夋嫨Excel緙栬緫鏁版嵁搴擄紝鐒跺悗瀵煎嚭csv銆?/span>Excel鐨勫己澶ц〃鏍煎拰緇熻璁$畻鍔熻兘鏄皟鑺傛父鎴忔暟鎹鉤琛$殑寰楀姏宸ュ叿銆備互鑷磋繖縐嶆渶鍙よ佽岀畝鍗曠殑Entity妯″紡浠ュ己澶х殑鐢熷懡鍔涗竴鐩存椿鍒扮幇鍦ㄣ?/span>
閭d箞涓轟粈涔?/span>Developers浼氳鍘繪帰绱㈠叾浠栨柟寮忓憿錛熸渶澶х殑闂鏄繖縐嶆柟寮忎笅鍚勭Entity瀹屽叏涓嶅悓璐ㄣ傛瘮濡?/span>Player銆?/span>Mob銆?/span>Doodad閮芥湁浣嶇疆錛岄兘瑕佸仛紕版挒媯嫻嬶紝浣嗕粬浠嵈鏄笉鍚岀殑綾誨瀷錛屼笉鑳戒嬌鐢ㄥ悓涓浠戒唬鐮侊紱Player鍜?/span>Mob閮芥湁hp鍜?/span>mp錛屼篃鏈夊熀鏈浉鍚岀殑澶勭悊閫昏緫……褰撶劧錛岃繖涓彲浠ョ敤hack鐨勬柟娉曡В鍐籌細鍙鍚勪釜struct鍓嶈嫢騫蹭釜鎴愬憳綾誨瀷鍜岄『搴忓畬鍏ㄧ浉鍚岋紝灝卞彲浠ュ皢鎸囬拡cast鎴愮粺涓鐨勪竴涓?/span>Entity綾誨瀷鏉ュ鐞嗐備笉榪囷紝浠諱綍浜洪兘鑳芥兂鍒版洿濂界殑鍔炴硶錛岀敤綾伙紒
榪欎篃鏄?/span>Entity銆?/span>GameObject絳夎繖浜涘悕瀛楃殑鐢辨潵錛屼粬浠氨鏄熀綾匯備簬鏄垜浠彲浠ュ緱鍒頒竴棰楃戶鎵垮叧緋繪爲錛屼緥濡傦細
Entity
Character
Player
Mob
Missile
Laser
GuidedMissile
Item
…
Entity瀵硅薄鐨勯昏緫澶у涔熸槸鐩存帴鍖呭惈鍦ㄧ被閲岀殑銆備絾涔熸湁浜洪噰鐢ㄤ簡鏁版嵁瀵硅薄鍜岄昏緫瀵硅薄鐨勫垎紱伙紝鍏跺ソ澶勬槸瀵圭浉鍚岀殑鏁版嵁鍙互鏇挎崲涓嶅悓鐨勯昏緫銆備笉榪囷紝涓漢姣旇緝鎬鐤戣繖縐嶅垎紱繪槸鍚﹀煎緱錛屽洜涓虹被鐨勬淳鐢熸湰韜氨鏄彲浠ユ嫢鏈変笉鍚岀殑閫昏緫銆?/span>
鍙﹀錛?/span>Entity闂寸殑浜や簰闄や簡鐢ㄦ爣鍑嗙殑鐩存帴璁塊棶鏂瑰紡澶栵紝緇忓父浣跨敤娑堟伅妯″紡銆傛秷鎭ā寮忓拰Windows鐨勬秷鎭ā寮忕被浼鹼紝Entity闂撮氳繃娑堟伅浜や簰銆傝櫧璇寸獥鍙g紪紼嬬敾浜嗗騫存椂闂存墠鎽嗚劚浜嗗綋騫磋偉澶х殑switch鐨勬秷鎭鐞嗘ā寮忥紝鍦?/span>Entity灞備嬌鐢ㄦ秷鎭ā寮忚繕鏄湁鎰忎箟鐨勶紝鍥犱負娑堟伅寰堝鏄撳箍鎾笖鍙互鐩存帴鍦ㄧ綉緇滀笂鍙戦併傛墽鐫浜?/span>OO鐨勪漢浼氬皢娑堟伅鍐欐垚Command瀵硅薄錛屼絾鍘熺悊浠嶇劧鏄竴鏍風殑銆?/span>
鍚屾椂錛岃仈緗戞父鎴忓嚭鐜幫紝鎸囬拡涓嶈兘鍦ㄤ笉鍚岀殑鏈哄櫒涓婃爣璇嗗璞★紝鎴戜滑蹇呴』鐢ㄧǔ瀹氱殑ID鏉ユ爣璇嗗璞★紝浜庢槸鎴戜滑鏈変簡EntityManager鏉ュ垎閰?/span>ID鍜岀鐞嗗璞¢泦鍚堬紝鎴栬呭彨GameObjectManager銆?/span>ObjectManager絳夈傝繖鍦ㄤ竴孌墊椂鏈熷唴鍑犱箮鎴愪簡瀹岀編鐨勬柟妗堛?/span>
闅忕潃娓告垙鍐呭鐨勪赴瀵屾х殑榪呴熻啫鑳錛屼紶緇熺殑鐢辯▼搴忓憳鏉ュ疄鐜版父鎴忛昏緫鍔熻兘鐨勬ā寮忎篃瓚婃潵瓚婂姏涓嶄粠蹇冦傝剼鏈璦鐨勯泦鎴愬皢澶ч儴鍒嗗垱鎰忔у伐浣滀粠紼嬪簭鍛樼殑鎷呭瓙涓婃嬁浜嗕笅鏉ワ紝浜よ繕緇欐父鎴忚璁′漢鍛樸備負浜嗙粰鑴氭湰鎻愪緵瓚沖鐨勬帶鍒舵潈錛?/span>Entity緇撴瀯涓婂繀欏繪湁鍏呭垎鐨勭伒媧繪с?/span>
鐜板湪鏈夊彞寰堟祦琛岀殑璇濓紝“鍞竴涓嶅彉鐨勬槸鍙樺寲銆傦紙The only constant is change.錛?#8221;鏁版嵁椹卞姩浣垮緱鍙樺寲瀵瑰紩鎿庣殑褰卞搷鏈灝忓寲銆傛暟鎹┍鍔ㄤ笉鑳界畻鏄竴縐嶇嫭绔嬬殑Entity妯″紡錛屼笉濡傝瀹冩槸涓縐嶈璁℃濇兂錛屽叾鐩殑灝辨槸灝嗗唴瀹瑰埗浣滃拰娓告垙寮曟搸鐨勫埗浣滃垎紱誨紑鏉ャ備笌涓婇潰鎵璇寸殑濉厖Entity灞炴ф暟鎹簱鐨勪笉鍚屼箣澶勫湪浜庯紝瀹冭繕瑕佽兘閫氳繃鏁版嵁鏉ヨ璁℃父鎴忛昏緫銆?/span>
娓告垙璁捐浜哄憳闇瑕佺殑涓欏規渶鍩烘湰鍔熻兘灝辨槸鑷畾涔変漢鐗╁睘鎬э紝鎵浠ヤ笌鍏跺湪綾婚噷鍐欐灞炴ф垚鍛橈紝涓嶅浣跨敤灞炴ц〃錛?/span>Attributes/Properties錛夈傞氬父浣跨敤涓涓搱甯岃〃錛?/span>Hashtable錛夛紝鎴栬?/span>std::map錛屾垨鑰?/span>Dictionary錛屾垨鑰呭氨鏄釜鏁扮粍錛岄殢涓漢鍠滃ソ錛屽叾瀹炲氨鏄涓涓?/span>key-value鐨勬槧灝勮〃銆傜劧鍚庝負鑴氭湰鍜岀紪杈戝櫒鎻愪緵瀵瑰睘鎬ц〃鐨勬搷浣溿?/span>
鍔ㄦ佺殑閫昏緫涓昏灝遍潬鑴氭湰浜嗭紝蹇呴』涓鴻剼鏈彁渚涜凍澶熺殑浜嬩歡鍜屾柟娉曘備釜浜烘帹鑽愮敤Lua鑴氭湰錛屽洜涓哄畠鏄湪娓告垙棰嗗煙鍐呯敤寰楁渶澶氱殑閫氱敤鑴氭湰璇█錛屽叾寮曟搸寰堝皬銆侀熷害寰堝揩銆佹槗浜庨泦鎴愶紝灝界璇硶榪囦簬鏉炬暎銆備笉瑕佽糠淇″浼犲幓鐢ㄥ簽澶с佹瀬鎱€侀毦浜庨泦鎴愮殑Python銆備負鑴氭湰鎻愪緵浜嬩歡錛屽叾瀹炰篃灝辨槸璋冪敤鑴氭湰閲岀殑鍑芥暟錛岃繖閲屽鏋滀嬌鐢ㄤ簡鍓嶉潰鎵榪扮殑娑堟伅妯″紡錛岄偅涔堝氨鍙璋冪敤涓涓剼鏈柟娉曪紝浼犻掍笉鍚岀殑娑堟伅鍙傛暟灝辮浜嗐傚綋鐒朵篃鏈変漢瑙夊緱榪欐牱寰堜笐闄嬭屾洿鎰挎剰涓轟笉鍚岀殑浜嬩歡娉ㄥ唽涓嶅悓鐨勫嚱鏁般?/span>
褰撴湁浜嗘暟鎹┍鍔ㄥ悗錛?/span>Entity鐨勭戶鎵挎爲灝卞熀鏈け鍘繪剰涔変簡錛屽洜涓轟竴涓?/span>Entity鏄粈涔堝凡緇忎笉鏄▼搴忛噷鍐沖畾鐨勪簡錛岃屾槸閫氳繃鏁版嵁鍜岃剼鏈璁″嚭鏉ョ殑銆備絾鏁版嵁鍜岃剼鏈張涓嶆槸鍏ㄩ儴錛屼竴涓?/span>Entity鐨勬牳蹇冨唴瀹瑰拰闇瑕侀珮鏁堝鐞嗙殑閮ㄥ垎錛屽紕版挒媯嫻嬶紝榪樻槸瑕佺▼搴忔潵瀹屾垚銆備簬鏄垜浠渶瑕侀噸鏂拌璁?/span>Entity綾伙紝鍥伴毦鐨勫眬闈篃灝辯敱姝ゅ紑濮嬨?/span>
涓涓洿瑙傜殑鎯蟲硶鏄竴涓粺涓涓斿敮涓鐨?/span>Entity綾伙紝瀹冨寘鍚簡鎵鏈夌殑鍩烘湰鍔熻兘錛屽鏄劇ず銆佺鎾炴嫻嬨佽繍鍔ㄣ佽儗鍖呯瓑錛岀劧鍚庣敱鏁版嵁鍐沖畾鍝簺緇勪歡琚惎鐢ㄣ傛瘮濡備竴涓帺瀹惰鑹插彲鑳戒細鍚敤緇濆ぇ閮ㄥ垎緇勪歡錛岃屼竴棰楁爲鍙惎鐢ㄦ樉紺哄拰紕版挒媯嫻嬬粍浠躲備絾涔熶即闅忕潃緙虹偣錛氫竴銆佽繖涓被澶ぇ浜嗭紱浜屻佸浜庢爲鏈ㄧ瓑涓浜涚畝鍗曠殑Entity涔熻嫻垂鍏朵粬緇勪歡鐨勭鏈夋暟鎹墍鍗犵殑鍐呭瓨銆傞偅涔堜竴涓畝鍗曠殑鎶樹腑鏄儴鍒嗕嬌鐢ㄧ戶鎵褲侀儴鍒嗕嬌鐢ㄦ暟鎹畾鍒躲備緥濡?/span>Entity鍙彁渚涙渶鍩烘湰鐨勭粍浠訛紝鍐嶆淳鐢熷嚭CharactorEntity鎻愪緵瓚沖浜虹墿瑙掕壊浣跨敤鐨勭粍浠躲?/span>
鎻愬埌緇勪歡錛岄偅涔堝緢鑷劧鐨勫氨榪囨浮鍒扮粍浠舵ā寮忥紝灝辨槸鎶婃樉紺恒佽繍鍔ㄣ佹敾鍑匯佽儗鍖呫侀槦浼嶃佸0闊崇瓑鍩烘湰鍔熻兘閮藉仛鎴愮嫭绔嬬殑緇勪歡錛岀敱鏁版嵁鏉ュ喅瀹氬悜Entity閲屾坊鍔犲摢浜涚粍浠躲傜敱姝ゅ彲浠ュ緱鍒板彟澶栦竴涓墿灞曪紝灝辨槸鏃㈢劧鍙互鏈夊紩鎿庡唴緗殑緇勪歡錛岄偅灝變篃鍙互鏈夎剼鏈埗浣滅殑緇勪歡錛屽疄鐜拌剼鏈ā鍧楃殑澶嶇敤銆傝繖縐嶆ā寮忓湪GDC2002姝e紡鎻愬嚭錛屽埌鐜板湪涓繪祦鐨勫紩鎿庨兘鏈夎繖縐嶈璁°?/span>
榪欑妯″紡鍦ㄧ悊璁轟笂寰堝畬緹庯紝浣嗗疄璺典笂榪樻槸鏈変笉灝戠枒闂傛渶甯歌鐨勯棶棰樺氨鏄粍浠墮棿鐨勪緷璧栧叧緋匯傜悊鎯蟲儏鍐典笅錛屽悇涓粍浠舵槸瀹屽叏鐙珛鐨勶紝浣嗗疄璺典腑蹇呯劧鏈夋墍渚濊禆銆傛瘮濡傝繍鍔ㄩ熷害銆佹敾鍑誨己搴︾瓑鍜岃鑹茬殑鍩烘湰灞炴ф湁鍏籌紝榪愬姩緇勪歡闇瑕佽鑹茬殑鍖呭洿鐩掓潵嫻嬭瘯鏄惁紕版挒錛?/span>AI緇勪歡闇瑕佸垎鏋愯鑹插綋鍓嶇姸鎬佸拰鍙戝嚭榪愬姩銆佹敾鍑誨懡浠わ紝瑙掕壊鍔ㄤ綔鐘舵佸彉鍖栨椂鏀瑰彉鏄劇ず緇勪歡灞炴э紝鏀誨嚮緇勪歡闇瑕佽闂槦浼嶄俊鎭粍浠朵互紱佹鏀誨嚮闃熷弸絳夌瓑銆傚鐞嗚繖縐嶄緷璧栧叧緋諱富瑕佽瑙e喅涓や釜闂錛?/span>
<!--[if !supportLists]-->涓銆?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal"> <!--[endif]-->璋佷緷璧栬皝銆傛瘮濡傛槸鏁忔嵎灞炴ф敼鍙樿屽幓淇敼縐誨姩閫熷害錛岃繕鏄繍鍔ㄧ粍浠惰鍙栨晱鎹峰睘鎬ф潵璁$畻縐誨姩閫熷害銆傚鏋滆娓告垙璁捐浜哄憳鑷敱瀹氫箟鍩烘湰灞炴х殑璇濓紝灝辮閫夋嫨鍓嶈咃紝鍥犱負鍩烘湰灞炴х粍浠朵細鏄剼鏈粍浠躲?/span>
<!--[if !supportLists]-->浜屻?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal"> <!--[endif]-->濡備綍鍙栧緱鍙︿竴緇勪歡鐨勬寚閽?/span>/寮曠敤銆傚父瑙佺殑鏂規硶鏄粰姣忎釜緇勪歡綾誨瀷涓涓敮涓ID錛岀劧鍚庣敤璇?/span>ID鍦?/span>Entity涓婃煡璇㈡敞鍐屼簡鐨勭粍浠訛紝濡傛灉鎵懼埌榪斿洖鍏舵寚閽?/span>/寮曠敤錛屽惁鍒欒繑鍥?/span>null銆傚綋鐒訛紝姣忔璁塊棶閮藉仛榪欎釜鏌ヨ浼氬緢嫻垂CPU錛屽鏋?/span>Entity鐨勭粍浠朵笉浼氬湪榪愯鏃跺姩鎬佹坊鍔犲垹闄ょ殑璇濓紙闄ら潪鍦ㄧ紪杈戝櫒閲岋紝鍚﹀垯寰堝皯鏈変漢浼氳繖涔堝仛錛夛紝鍙互鍦?/span>Entity鍒濆鍖栧悗璁╂瘡涓粍浠剁紦瀛樺畠鎵瑕佺敤鐨勫叾浠栫粍浠舵寚閽堛傞偅涔堝綋鎵渚濊禆鐨勭粍浠朵笉瀛樺湪鎬庝箞鍔烇紝涓鑸儏鍐典笅閮芥槸鏃犲0鍦板拷鐣ャ?/span>
褰?/span>Entity鐢卞緢澶氱粍浠剁粍鎴愬悗錛屼氦浜掔殑娑堟伅闇瑕佸彂緇欐瘡涓涓粍浠躲傝繖閲屽張涓嬈′綋鐜板嚭娑堟伅鏈哄埗鐨勪紭鍔匡紝浣犱笉闇瑕佸湪Entity閲屼負姣忎竴涓簨浠跺嚱鏁板啓涓涓?/span>loop鏉ヨ皟鐢ㄧ粍浠剁殑鐩稿簲浜嬩歡鍑芥暟銆備絾榪欓噷涔熷嚭鐜頒簡涓涓棶棰橈紝娑堟伅鍒拌揪鍚勪釜緇勪歡鐨勯『搴忋傚緢澶氭椂鍊欒繖涓『搴忎笉浼氭湁浠涔堝獎鍝嶏紝浣嗕釜鍒椂鍊欎笉鍚岀殑欏哄簭浼氬鑷村畬鍏ㄤ笉鍚岀殑閫昏緫鍙戝睍鏂瑰悜銆?/span>
姝ゅ錛?/span>Entity鐨勫簭鍒楀寲瀛樺偍涔熷彉寰楁瘮杈冨鏉傦紝緇忓吀鐨?/span>Excel瀵煎嚭csv鐨勬ā寮忛毦浠ュ鏁堬紝鍥犱負榪欓噷闇瑕佺粨鏋勫寲鐨勫瓨鍌紝鎵浠ラ渶瑕佺粨鏋勫寲鐨勬暟鎹枃浠跺XML鏉ュ瓨鍌紝鎴栬呭畬鍏ㄧ敤鑴氭湰鏉ュ寘鍚墍鏈夋暟鎹拰鏋勯?/span>Entity銆?/span>
鎹釜浜虹粡楠岋紝浣跨敤鏁版嵁椹卞姩鐨勭戶鎵挎ā寮忔椂寰堟槸鍚戝線緇勪歡妯″紡錛屾劅瑙変笂瀹冧竴涓潪甯歌嚜鐒剁殑鎵╁睍鏂瑰悜錛屼絾欏懼繉鍏跺紩鍏ョ殑棰濆鐨勫鏉傛э紝灝ゅ叾鏄渶瑕佹父鎴忚璁′漢鍛樺叿鏈変竴瀹氱殑緙栫▼鑳藉姏錛屾墍浠ヤ竴鐩翠笉鏁㈠叏鐩樻帴榪囦嬌鐢ㄣ備絾閫涓姝ワ紝鍦ㄥ紩鎿庨噷浠嶇劧浣跨敤緇勪歡鎬濇兂錛屼絾Entity鐨勭粍浠舵瀯鎴愬湪緙栬瘧鏃跺浐瀹氾紝鍙互杈懼埌鏌愮濡ュ崗錛岃繖鍜岄噰鐢ㄧ戶鎵夸笌鏁版嵁椹卞姩鐨勬姌涓被浼箋?/span>
榪欐槸鍙堜竴縐嶅父瑙佺殑鎶樹腑妯″紡錛屽嵆浣跨敤C++鐨勫閲嶇戶鎵匡紝灝嗗悇涓粍浠剁被娣峰叆涓涓?/span>Entity綾匯傚錛?/span>
class Mob: public GameObject, public Renderable, public Movable, public Attackable
{
…
}
緙栫▼棰嗗煙鏈鍙よ佺殑鍘熷垯涔嬩竴灝辨槸瑕?#8220;綆鍗曞揩閫?#8221;銆備絾闅忕潃闂鐨勫鏉傚寲錛岀▼搴忎篃闅忎箣鍙樺緱瓚婃潵瓚婂鏉傘傚ソ鐨勬柟娉曞簲璇ヨ兘鏈夋晥鐨勯檷浣庢垨闅愯棌澶嶆潅鎬с備絾鏄紝娌℃湁涓嶅甫鍓綔鐢ㄧ殑鑽紙No silver bullet.錛夛紝鍦ㄥ彇寰楁洿寮哄ぇ鐨勫姛鑳界殑鍚屾椂鎬諱細甯︽潵棰濆鐨勫鏉傛с傛垜浠渶瑕佸仛鍑烘潈琛★紝鍦ㄥ繀瑕佹椂鐗虹壊涓浜涘姛鑳斤紝涔熷氨鏄浼扮畻鎬т環姣斻?/span>
涓鑸父鎴忓唴瀹瑰埗浣滀漢鍛樹笉浼氭垨涓嶅お浼氱紪紼嬶紝緙栫▼浜哄憳涔熶笉鍠勪簬娓告垙鐨勫唴瀹瑰垱閫犲拰鏁板煎鉤琛★紝榪囦簬澶嶆潅鐨勭郴緇熶細瀵艱嚧闇瑕佷袱闈㈠吋欏劇殑浜烘墠錛屼細澶уぇ澧炲姞鍋氬嚭涓嬈炬父鎴忕殑闅懼害銆?/span>