锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产日韩在线,欧美另类一区,欧美在线影院http://www.shnenglu.com/iwangchuchu/嫻烽様澶╃┖zh-cnWed, 24 Sep 2025 05:19:50 GMTWed, 24 Sep 2025 05:19:50 GMT60[杞琞緇勪歡宸ュ巶 -----3D娓告垙寮鍙?/title><link>http://www.shnenglu.com/iwangchuchu/archive/2010/04/23/113341.html</link><dc:creator>avatar</dc:creator><author>avatar</author><pubDate>Fri, 23 Apr 2010 08:06:00 GMT</pubDate><guid>http://www.shnenglu.com/iwangchuchu/archive/2010/04/23/113341.html</guid><wfw:comment>http://www.shnenglu.com/iwangchuchu/comments/113341.html</wfw:comment><comments>http://www.shnenglu.com/iwangchuchu/archive/2010/04/23/113341.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/iwangchuchu/comments/commentRss/113341.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/iwangchuchu/services/trackbacks/113341.html</trackback:ping><description><![CDATA[<div>鐙箟鐨勬父鎴忓璞℃槸鎸囨父鎴忎笘鐣屼腑鎵鑳界湅鍒板強鍙氦浜掔殑瀵硅薄錛屽鐜╁銆佹墿銆佺墿鍝佺瓑錛屾垜浠繖閲屼篃涓昏璁ㄨ榪欑被瀵硅薄鍦ㄦ湇鍔″櫒涓婄殑緇勭粐鍙婂疄鐜般?/div> <div>銆銆 <p>銆銆鍦ㄥぇ閮ㄥ垎鐨凪MOG涓紝娓告垙瀵硅薄鐨勭被鍨嬮兘澶у悓灝忓紓錛屼富瑕佹湁鐗╁搧銆佺敓鐗┿佺帺瀹剁瓑銆傛瘮濡傚湪wow涓紝閫氳繃鏈嶅姟鍣ㄥ彂涓嬫潵鐨凣UID鎴戜滑鍙互浜嗚В鍒幫紝娓告垙涓湁9澶х被瀵硅薄錛屽寘鎷墿鍝?Item)銆佽儗鍖?Container)銆佺敓鐗?Unit)銆佺帺瀹?Player)銆佹父鎴忓璞?GameObject)銆佸姩鎬佸璞?DynamicObject)銆佸案浣?Corpse)絳夈?/p> <p>銆銆鍦╩angos鐨勫疄鐜頒腑錛屽璞′嬌鐢ㄧ被緇ф壙鐨勬柟寮忥紝鐢監bject鍩虹被瀹氫箟娓告垙瀵硅薄鐨勫叕鏈夋帴鍙e強灞炴э紝鍖呮嫭GUID鐨勭敓鎴愬強綆$悊銆佹瀯閫犲強鏇存柊UpdateData鏁版嵁鐨勮櫄鎺ュ彛銆佽緗強鑾峰彇瀵硅薄灞炴ч泦鐨勬柟娉曠瓑銆傜劧鍚庡垎鍑轟簡涓ょ被媧劇敓瀵硅薄錛屼竴鏄疘tem錛屽彟涓鏄疻orldObject銆侷tem鍗崇墿鍝佸璞★紝WorldObject欏懼悕鎬濅箟錛屼負涓栫晫瀵硅薄錛屽嵆鍙坊鍔犲埌娓告垙涓栫晫鍦烘櫙涓殑瀵硅薄錛岃瀵硅薄綾誨瀷瀹氫箟浜嗙函铏氭帴鍙o紝涔熷氨鏄笉鍙瀹炰緥鍖栵紝涓昏鏄湪Object瀵硅薄鐨勫熀紜涓婂張娣誨姞浜嗗潗鏍囪緗垨鑾峰彇鐨勭浉鍏蟲帴鍙c?/p> <p>銆銆Item綾誨瀷鍙堟淳鍏靛嚭浜嗕竴綾籅ag瀵硅薄錛岃繖鏄竴縐嶇壒孌婄殑鐗╁搧瀵硅薄錛屽叾鏈韓鍏鋒湁鐗╁搧鐨勬墍鏈夊睘鎬у強鏂規硶錛屼絾鍙堝彲浣滀負鏂扮殑瀹瑰櫒綾誨瀷錛屽茍鍏鋒湁鑷繁鐗規湁鐨勫睘鎬у拰鏂規硶錛屾墍浠ュ疄鐜頒笂閲囩敤浜嗘淳鐢熴俶angos鍦ㄥ疄鐜版椂瀵笲ag鐨勭被鍨嬪畾涔夊仛浜嗙偣灝忔妧宸э紝Item鐨勭被鍨嬩負2錛孊ag鐨勭被鍨嬩負6錛岃繖鏍峰湪閫氳繃浣嶇殑鏂瑰紡鏉ヨ〃紺虹被鍨嬫椂錛孊ag綾誨瀷涔熷氨鍚屾椂灞炰簬Item綾誨瀷浜嗐傝櫧鐒跺彧鏄緢灝忕殑涓涓妧宸э紝浣嗗湪寰堝鍦版柟鍗村甫鏉ヤ簡鏋佸ぇ鐨勪究鍒┿?/p> <p>銆銆浠嶹orldObject媧劇敓鍑虹殑綾誨瀷灝辨湁濂藉嚑縐嶄簡錛孶nit銆丟ameObject銆丏ynamicObject鍜孋orpse銆俇nit涓烘墍鏈夌敓鐗╃被鍨嬬殑鍩虹被錛屽悓WorldObject涓鏍鳳紝涔熶笉鍙瀹炰緥鍖栥傚畠瀹氫箟浜嗙敓鐗╃被鍨嬬殑鍏湁灞炴э紝濡傜鏃忋佽亴涓氥佹у埆銆佺敓鍛姐侀瓟娉曠瓑錛屽彟澶栬繕鎻愪緵浜嗙浉鍏崇殑涓浜涙搷浣滄帴鍙c傛父鎴忎腑瀹為檯鐨勭敓鐗╁璞$被鍨嬩負Creature錛屼粠Unit媧劇敓錛屽彟澶栬繕鏈変竴綾繪淳鐢熷璞layer涓虹帺瀹跺璞°侾layer涓嶤reature鍦ㄥ疄鐜頒笂鏈澶х殑鍖哄埆鏄帺瀹剁殑鎿嶄綔鐢卞鎴風鍙戞潵鐨勬秷鎭┍鍔紝鑰孋reature鐨勬帶鍒舵槸鐢辮嚜宸卞畾涔夌殑AI瀵硅薄鏉ラ┍鍔紝鍙﹀Player鍐呴儴榪樺寘鎷簡寰堝鐨勯昏緫緋葷粺瀹炵幇銆?/p> <p>銆銆鍙﹀榪樻湁涓ょ被鐗規畩鐨凜reature錛孭et鍜孴otem錛屽叾瀵硅薄綾誨瀷浠嶇劧榪樻槸鐢熺墿綾伙紝鍙槸瀹炵幇涓婁笌浼氭湁浜涚壒孌婄殑涓滆タ闇瑕佸鐞嗭紝鎵浠ュ湪mangos涓皢鍏朵綔涓虹嫭绔嬬殑媧劇敓綾伙紝鍙槸瀹炵幇涓婄殑涓鐐瑰鐞嗐傚彟澶栧湪GameObject涓篃瀹炵幇鏈夋淳鐢熷璞★紝鏈緇堢殑緇ф壙鍏崇郴鍥炬瘮杈冪畝鍗曪紝灝變笉楹葷儲鍦板幓鐢誨浘浜嗐?/p> <p>銆銆浠庢垜鎵浜嗚В鐨勬棭鏈熸父鎴忓疄鐜版潵鐪嬶紝澶ч儴鍒嗙殑娓告垙瀵硅薄緇撴瀯閮芥槸閲囩敤鐨勭被浼艱繖縐嶆柟寮忋傚彲鑳戒笌鏃╂湡瀵歸潰鍚戝璞$殑鐞嗚В鏈夊叧錛屽綋闈㈠悜瀵硅薄鐨勬蹇靛垰鍑烘潵鏃訛紝澶у璁や負緇ф壙灝辨槸闈㈠悜瀵硅薄鐨勫叏閮紝鎵浠ュ澶勭殕瀵硅薄錛屽澶勭殕緇ф壙銆?/p> <p>銆銆綾誨疄鐜扮殑鏄竴縐嶅皝瑁咃紝铏界劧浠庝簯椋庨偅閲屽嚭鏉ョ殑寮僀++鑰岃漿鎶旵鐨勫0闊沖彲鑳戒細褰卞搷涓閮ㄥ垎浜猴紝浣嗘槸錛屼嬌鐢ㄤ粈涔堣璦鏈韓灝辨槸涓漢鍠滃ソ鍙婂洟闃熸暣浣撴儏鍐靛喅瀹氱殑銆傛垜浠墍瑕佺殑涔熸槸鏈緇堢殑瀹炵幇緇撴灉錛岃嚦浜庝腑闂寸殑姝ラ錛屽畬鍏ㄧ湅涓漢銆傝繕鏄敤浜戦鐨勮瘽璇達紝榪欏彧鏄竴縐嶄俊浠伴棶棰橈紝鎴戜緷鐒墮噰鐢ㄦ垜鎵鐔熸倝鐨凜++錛屼笅闈㈢殑鎻忚堪涔熸槸濡傛銆?/p> <p>銆銆闅忕潃闈㈠悜瀵硅薄鎶鏈殑娣卞叆錛屼互鍙婃硾鍨嬬瓑姒傚康鐨勭浉緇ф彁鍑猴紝杞歡紼嬪簭緇撴瀯鏂歸潰鐨勮秼鍔夸篃鏈変簡寰堝ぇ鏀瑰彉銆侰++澶у笀浠父璇寸殑璇濅腑鏈変竴鍙ユ槸榪欐牱璇寸殑錛屽敖鏄噰鐢ㄧ粍鍚堣屼笉鏄戶鎵褲傛父鎴忓璞$殑瀹炵幇涔熸湁綾諱技鐨勮漿鍙橈紝瓚嬪悜浜庝互緇勫悎鐨勬柟寮忔潵瀹炵幇娓告垙瀵硅薄綾誨瀷錛屼篃灝辨槸瀹炵幇涓涓氱敤鐨別ntity綾誨瀷錛岀劧鍚庝互鑴氭湰瀹氫箟鐨勬柟寮忕粍鍚堝嚭涓嶅悓鐨勫疄闄呮父鎴忓璞$被鍨嬨?/p> <p>銆銆鎻忚堪鐨勬湁浜涙娊璞★紝鍏蜂綋瀹炵幇涓嬩竴綃囨潵浠旂粏鎺㈣涓嬨?br><br><br>鍦ㄦ父鎴忕紪紼嬬簿綺瑰洓鏈変笁綃囨枃绔犺鍒頒簡瀹炰綋浠ュ強瀹炰綋綆$悊鐨勫疄鐜版柟妗堬紝鍏朵腑涓綃囨枃绔犺鍒頒簡瀹炰綋綆$悊緋葷粺鐨勫洓澶ц绱狅細瀹氫箟瀹炰綋鎬庢牱娌熼氱殑瀹炰綋娑堟伅錛屽疄鐜頒竴瀹炰綋綾諱唬鐮佸拰鏁版嵁鐨勫疄浣撲唬鐮侊紝緇存姢宸茬粡娉ㄥ唽鍦ㄦ鐨勫疄浣撶被鍒楄〃錛屽拰鐢ㄦ潵鍒涘緩銆佺鐞嗐佸彂閫佹秷鎭殑瀹炰綋綆$悊鍣ㄣ?/p> <p>銆銆鍏充簬瀹炰綋娑堟伅鐨勫唴瀹逛箣鍓嶈璁轟簨浠舵満鍒剁殑鏃跺欏仛榪囦竴鐐硅鏄庯紝鍏跺疄榪欎篃灝辨槸鎸夋帴鍙h皟鐢ㄥ拰鎸夋秷鎭┍鍔ㄧ殑鍖哄埆錛岀幇鍦╩angos鐨勫仛娉曟槸瀹屽叏鐨勬帴鍙h皟鐢紝鎵浠ュ紩鎿庡唴閮ㄥ氨娌℃湁浠諱綍鐨勫疄浣撴秷鎭傚疄浣撲唬鐮佸疄鐜板拰瀹炰綋綆$悊鍣ㄦ槸鎴戜滑閲嶇偣瑕佽璁虹殑鍐呭銆?/p> <p>銆銆鍙︽湁涓綃囨枃绔犱篃鎻愬埌浜嗕嬌鐢ㄧ被緇х畫鐨勬柟寮忓疄鐜版父鎴忓璞$殑涓ゅぇ闂錛屼竴鏄畠瑕佹眰緋葷粺涓殑鎵鏈夊璞¢兘蹇呴』浠庝竴涓搗鐐硅鐢熻屾垚錛屼篃灝辨槸璇存墍鏈夊璞$被鍦ㄧ紪璇戠殑鏃跺欏凡緇忕‘瀹氾紝榪欏彲鑳芥槸涓涓笉鍙楁榪庣殑闄愬埗錛屽鏋滃紑鍙戣呭喅瀹氭坊鍔犳柊鐨勫璞$被錛屽垯蹇呴』瑕佸鍩虹被鏈夋墍浜嗚В錛屾柟鑳芥敮鎸佹柊綾匯傚彟涓涓棶棰樺湪浜庢墍鏈夌殑瀵硅薄綾婚兘蹇呴』瀹炵幇鍚屾牱鐨勪竴浜涘簳灞傚嚱鏁般?/p> <p>銆銆瀵逛簬絎簩涓棶棰橈紝鍙互閫氳繃鎺ュ彛緇ф壙鐨勬柟寮忔潵閬垮厤鍩虹被鐨勬柟娉曞お澶氥傚湪mangos鐨勫疄鐜頒腑灝遍噰鐢ㄤ簡綾諱技鐨勬柟娉曪紝浠嶰bject铏氬熀綾繪淳鐢熺殑Unit鍜學orldObject浠嶇劧榪樻槸涓嶅彲瀹炰緥鍖栫殑綾伙紝榪欎袱縐嶅璞″畾涔変簡涓嶅悓鐨勫睘鎬у拰鏂規硶錛屽垎鏉ュ疄鐜頒笉鍚岀被鍨嬬殑瀵硅薄銆傚湪娓告垙鍐呴儴鍙互鏍規嵁瀵硅薄鐨勫疄闄呯被鍨嬫潵Object鎸囬拡鍚戜笅杞瀷涓篣nit鎴朩orldObject錛屼互璋冪敤闇瑕佺殑鎺ュ彛銆傛柟娉曡櫧鐒朵笉澶烵O錛屼篃榪樿兘瑙e喅闂銆備絾鏄涓涓棶棰樻槸濮嬬粓鏃犳硶閬垮厤鐨勩?/p> <p>銆銆鎵浠ユ垜浠究鏈変簡閫氱敤瀹炰綋榪欎箞涓涓蹇碉紝鍏朵富瑕佹柟娉曟槸灝嗗師鏉ュ熀綾葷殑鎺ュ彛榪涜鍒嗙被錛屽垎鍒頒竴涓釜涓嶅悓鐨勫瓙綾諱腑錛岀劧鍚庝互瀵硅薄緇勫悎鐨勬柟寮忔潵鐢熸垚鎴戜滑鎵闇瑕佺殑瀹為檯娓告垙瀵硅薄綾誨瀷銆傝繖涓粍鍚堢殑榪囩▼鍙互閫氳繃鑴氭湰瀹氫箟鐨勬柟寮忥紝榪欐牱渚垮彲浠ュ湪榪愯鏃剁敓鎴愪負鍚岀殑瀵硅薄綾誨瀷錛屼篃灝辮В鍐充簡涓婇潰鎻愬埌鐨勭涓涓棶棰樸?/p> <p>銆銆閫氱敤瀹炰綋鐨勫疄鐜版柟娉曞湪鐩墠鐨勬父鎴忓紩鎿庡強寮婧愪唬鐮佷腑涔熷彲浠ョ湅鍒板獎瀛愩備竴涓槸BigWorld錛屼粠鎻愪緵鐨勮祫鏂欐潵鐪嬶紝鍏跺紩鎿庡彧鎻愪緵浜嗕竴涓猠ntity娓告垙瀵硅薄錛岀劧鍚庣敱娓告垙鍐呭瀹炵幇鑰呴氳繃xml鍜宲ython鑴氭湰鏉ヨ嚜鐢卞畾涔変笉鍚岀被鍨嬬殑entity綾誨瀷錛屾瘡縐嶇被鍨嬪彲鏈変笉鍚岀殑property鍜屼笉鍚岀殑鏂規硶銆傝繖鏍峰師鏉ョ敱鍩虹被瀹氫箟鐨勬帴鍙e畬鍏ㄨ漿縐誨埌鑴氭湰瀹氫箟錛屽叿鏈夐潪甯稿己鐨勭伒媧繪с?/p> <p>銆銆鍙﹀榪樻湁涓涓槸CEL涓殑entity瀹炵幇銆傛寜鐓EL鐨勬弿榪幫紝entity鍙互鏄父鎴忎腑鐨勪換鎰忓璞★紝鍖呮嫭鐜╁鍙氦浜掔殑瀵硅薄錛屽閽ュ寵銆佹鍣ㄧ瓑錛屼篃鍙互鍖呮嫭涓嶈兘鐩存帴浜や簰鐨勫璞★紝濡傛父鎴忎笘鐣岋紝鐢氳嚦浠誨姟閾句腑鐨勪竴閮ㄥ垎絳夈俥ntity鏈韓騫舵病鏈変換浣曠壒鎬э紝鍏蜂綋鐨勫姛鑳藉疄鐜伴渶瑕侀潬闄勫姞property鏉ュ畬鎴愩傜畝鍗曟潵璇達紝property鎵嶅畾涔変簡entity鍙互鍋氫粈涔堬紝鑷充簬璇ユ庝箞鍋氾紝閭e張鏄緷闈燽ehavior鏉ュ畾涔夈傛墍浠ワ紝鏈緇堝湪CEL涓竴涓父鎴忓璞″叾瀹炴槸鐢眅ntity緇勫悎浜嗗涓猵roperty鍙婂涓猙ehavior鑰岀敓鎴愮殑銆?/p> <p>銆銆浣嗘槸CEL涓殑property涓嶣igWorld涓殑property鎰忎箟涓嶅ぇ涓鏍鳳紝鍦–EL涓彲瀹氫箟鐨刾roperty鍏跺疄鏄紩鎿庡唴閮ㄨ鍏堟彁渚涚殑錛屾瘮濡傚叾紺轟緥涓墍涓劇殑pcobject.mesh銆乸cmove.linear銆乸ctools.inventory絳夛紝鑰孊igWorld涓殑property鏄畬鍏ㄧ殑鑷敱瀹氬埗銆備粠榪欎釜瑙掑害鏉ヨ錛屽叾瀹炲彲浠ユ妸CEL涓殑property鐪嬩綔鏄父鎴忕殑閫昏緫緋葷粺錛屼篃灝辨槸鎴戜滑涓婇潰鎵鎻忚堪鐨勶紝鎺ュ彛鍒嗙被鍚庢墍瀹氫箟鐨勫瓙綾匯?/p> <p>銆銆鐢卞紩鎿庡唴閮ㄦ彁渚涘彲閫夋嫨鐨刾roperty涓嶣igWorld鎵閲囩敤鐨勫畬鍏ㄨ嚜鐢卞畾鍒秔roperty鍏跺疄鏈川涓婃槸鐩稿悓鐨勩傚湪鐢˙igWorld瀹炵幇鐨勬父鎴忎腑錛屼篃涓嶅彲鑳戒負姣忕娓告垙瀵硅薄綾誨瀷閮藉畬鍏ㄤ粠澶村畾涔塸roperty錛屽熀浜庝唬鐮佸埄鐢ㄧ殑鍘熷垯錛屼篃浼氬厛瀹氫箟涓浜涘皬綾伙紝鐒跺悗鍦╡ntity綾誨瀷瀹氫箟鏃朵互鑷畾涔塸roperty鐨勬柟寮忔潵鍖呭惈榪欎簺灝忕被銆傚綋鐒訛紝鎴戞病鏈変嬌鐢ㄨ繃BigWorld錛屼笂闈㈢殑鎻忚堪涔熷彧鏄熀浜庢父鎴忓疄鐜扮殑澶у師鍒欐墍鍋氬嚭鏉ョ殑銆?/p> <p>銆銆鎻忚堪鐨勪緷鐒舵湁浜涙娊璞★紝鎴戜滑鍙互鐢╳ow鍙妋angos浠g爜鏉ヨ鏄庝竴涓嬨俶angos涓負object瀹氫箟浜嗕竴涓睘鎬ч泦鍚堬紝鏍規嵁瀵硅薄綾誨瀷鐨勪笉鍚岋紝榪欎釜灞炴ч泦鐨勫ぇ灝忓強淇濆瓨鏁版嵁涔熶細鏈夊樊寮傦紝鍙﹀娓告垙瀵硅薄鍐呴儴鍚湁澶勭悊涓嶅悓娓告垙閫昏緫鐨勭郴緇燂紝濡俁estSystem銆丗loodFilterSystem銆乂ariousSystem絳夌瓑錛屽湪player.h涓互鎺ュ彛緇勭殑鏂瑰紡榪涜瀹氫箟銆?/p> <p>銆銆濡傛灉瑕佸皢榪欑緇撴瀯鏀逛負鎴戜滑鎻忚堪鐨勯氱敤entity緋葷粺錛屽彲浠ヨobject鍙彁渚沺roperty娉ㄥ唽鍜屽垹闄ょ殑鎺ュ彛錛岃繖閲岀殑property瀹氫箟涓嶤EL涓殑鐩稿悓錛屾斁鍦╩angos涓篃灝辨槸涓婇潰璇寸殑RestSystem銆丗loodFilterSystem銆乂ariousSystem榪欎簺銆傜劧鍚庝篃閫氳繃xml鏂囦歡鐨勬柟寮忓畾涔夋垜浠墍闇瑕佺殑娓告垙瀵硅薄綾誨瀷錛屽player,creature,item絳夛紝涓嶅悓鐨勫璞$被鍨嬪彲浠ラ夋嫨鍔犺澆涓嶅悓鐨刾roperty錛屽姞杞界殑鍘熷垯鏄渶瑕佸摢浜涘姛鑳藉氨鍔犺澆鍝簺property銆?/p> <p>銆銆瀵硅薄鐨勫畾涔夋寜涓婇潰鐨勬柟娉曞畬鎴愬悗錛屽璞$殑瀹炵幇涔熼渶瑕佸仛涓浜涗慨鏀廣備互鍓嶅鎴風鐨勬秷鎭槸鐩存帴浜ょ敱player鏉ュ鐞嗭紝AI涔熸槸鐩存帴璋冪敤creature鐨勬帴鍙f潵瀹屾垚涓浜涘姛鑳斤紝鐜板湪閫氱敤鐨別ntity鍐呴儴宸茬粡娌℃湁浠諱綍鍙敤鐨勬柟娉曪紝鎵鏈夌殑瀹炵幇閮借漿鍒頒簡property涓紝鎵浠ラ渶瑕佺敱鍚勪釜property瀹炵幇鑷繁鏉ユ敞鍐屾劅鍏磋叮鐨勪簨浠跺強娑堟伅錛宔ntity瀹炵幇涓涓秷鎭殑杞彂錛岃漿緇欏姝ゆ劅鍏磋叮鐨刾roperty鏉ュ鐞嗐傚叾浣欑殑瀹炵幇灝辨病鏈変粈涔堜笉鍚屼簡銆?/p> <p>銆銆褰撶劧錛屾垜浠啀鍋氫竴鐐規墿灞曪紝璁﹑roperty涓嶅厜鐢卞紩鎿庢潵鎻愪緵錛岀敤鑴氭湰鏈韓涔熻兘瀹氫箟property錛屽茍涓斿彲浠ラ氳繃xml鏉ユ敞鍐岃繖浜沺roperty錛岃繖鏍蜂究瀹炵幇浜嗕笌BigWorld涓鏍風殑瀹屽叏鑷敱鐗規с傝繖鍏跺疄涔熷氨鏄皢寰堝鐢–++瀹炵幇鐨勫姛鑳借漿縐誨埌浜唒ython涓紝榪欑鍋氭硶鍙綔涓哄弬鑰冿紝浣嗕笉涓瀹氬鎵鏈変漢鍚堥傦紝鑷沖皯鍦ㄦ垜鐪嬫潵錛岃繖鏍風殑瀹炵幇涔熷熀鏈彧鑳界敱紼嬪簭鍛樻潵鍋氾紝鎵浠ヨ紼嬪簭鍛橀夋嫨鑷繁鏈鎿呴暱鐨勮璦鍙兘浼氭洿鏄撲簬寮鍙戝拰璋冭瘯銆?/p> <p>鏈夊叧娓告垙瀵硅薄瀹炵幇鐨勬弿榪幫紝鍓嶉潰涓ょ瘒鏂囩珷涓鐨勪笉鐢氭竻妤氾紝涓昏鏄竴鐩撮兘瑕佸紩鐢ㄧ綉涓婅兘澶熸壘鍒扮殑璧勬枡鏉ヨ繘琛屾弿榪幫紝浠ラ伩鍏嶄笌鍏徃寮曡搗涓嶅繀瑕佺殑楹葷儲銆傛墍浠ヨ璦鏈変簺鎷煎噾鐨勬劅瑙夛紝涓劇殑渚嬪瓙涔熷緢涓嶆伆褰擄紝浠婂ぉ姝eソ鐪嬪埌浜嗘父鎴忕紪紼嬬簿綺逛簲鍜屽叚涓婄殑涓ょ瘒鏂囩珷錛屽唴瀹歸兘宸笉澶氾紝<<鍩轟簬緇勪歡鐨勫璞$鐞?gt;>鍜?lt;<鍩轟簬緇勪歡鐨勬父鎴忓璞$郴緇?gt;>錛岃鐨勪篃鏄垜涓婁袱綃囨枃绔犳兂瑕佹弿榪扮殑鍐呭錛屾墍浠ュ啀琛ヤ竴綃囷紝寮曠敤鍏朵腑鐨勯儴鍒嗘枃瀛楄繘琛屾槑紜殑璇存槑銆?/p> <p> </p> <p>銆銆浼犵粺鐨勬父鎴忓璞$鐞嗙郴緇熼噰鐢ㄧ戶鎵跨殑鏂瑰紡鏉ュ疄鐜幫紝渚嬪錛屾墍鏈夌殑瀛愮被閮戒粠CObject媧劇敓銆傚ぇ澶氭暟鎯呭喌涓嬶紝鐩存帴媧劇敓鐨勪篃鏄娊璞$被錛屽叾涓甫涓浜涘姛鑳借屽彟涓浜涘瓙綾誨垯涓嶅甫榪欎簺鍔熻兘錛屾瘮濡傚彲鎺у埗/涓嶅彲鎺у埗錛屽彲鍔ㄧ敾/涓嶅彲鍔ㄧ敾絳夈俶angos鐨勫疄鐜頒腑鍩烘湰灝辨槸榪欑鎯呭喌錛屼粠Object鐩存帴媧劇敓鐨刄nit鍜學orldObject閮芥槸涓嶅彲鐩存帴瀹炰緥鍖栫殑綾匯?/p> <p>銆銆浼犵粺鏂規硶鐨勯棶棰樺湪浜庢棤娉曞簲瀵歸渶姹傜殑鍙樺寲錛屽瑕佹眰姝﹀櫒涔熸湁鍔ㄧ敾鏁堟灉鏃跺氨鏃犳硶澶勭悊浜嗐傚鏋滅‖瑕佹槸榪欐牱鍋氾紝閭i殢鐫闇姹傜殑鍟紝寰堝鐨勬柟娉曚細琚斁鍒板熀綾諱腑錛屾渶緇堢殑緇撴灉鏄戶鎵挎爲鍙樺緱瓚婃潵瓚婂ご閲嶈剼杞伙紝榪欐牱鐨勭被浼氫撫澶卞畠鐨勫唴鑱氭э紝鍥犱負瀹冧滑璇曞浘涓烘墍鏈夊璞″畬鎴愭墍鏈夌殑浜嬨?/p> <p>銆銆灝辨槸璇村埌鏈鍚庯紝鍩虹被浼氭湁涓涓緢闀跨殑鎺ュ彛鍒楄〃錛岃屽緢澶氱殑娓告垙瀵硅薄綾誨瀷鏍規湰涓嶉渶瑕佸疄鐜板叾涓殑涓浜涚敋鑷沖ぇ閮ㄥ垎鎺ュ彛錛屼絾鏄寜鐓ц繖縐嶇粨鏋勫嵈鍙堝繀欏誨幓瀹炵幇銆備互鑷充簬浜庡疄鐜頒竴涓潪甯稿簽澶х殑瀵硅薄錛岃屼笖鎯寵淇敼涓鐐瑰姛鑳戒細瀵艱嚧緋葷粺鐨勫ぇ璋冩暣銆?/p> <p>銆銆鎴戜滑甯屾湜鐨勭郴緇熸槸鍙互灝嗙幇鏈夌殑鍔熻兘緇勫悎鍒版柊鐨勫璞′腑錛屽茍涓斿湪灝嗘柊鐨勫姛鑳芥坊鍔犲埌鐜版湁鐨勫璞′腑鏃朵笉闇瑕侀噸鏋勫ぇ閲忕殑浠g爜鍜岃皟鏁寸戶鎵挎爲鐨勭粨鏋勩?/p> <p>銆銆瀹炵幇鐨勬柟娉曞氨鏄粠緇勪歡鏉ュ垱寤轟竴涓璞°傜粍浠舵槸涓涓寘鍚墍鏈夌浉鍏蟲暟鎹垚鍛樺拰鏂規硶鐨勭被錛屽畠瀹屾垚鏌愪釜鐗瑰畾鐨勪換鍔°傛妸鍑犱釜緇勪歡緇勫悎鍦ㄤ竴璧峰氨鍙互鍒涘緩涓涓柊鐨勫璞°傚鎶奅ntity緇勪歡銆丷ender緇勪歡鍜孋ollectable緇勪歡緇勫悎鍦ㄤ竴璧風敓鎴愪簡涓涓猄poon瀵硅薄銆侲ntity緇勪歡璁╂垜浠彲浠ユ妸瀵硅薄鏀懼埌娓告垙涓栫晫涓紝Render緇勪歡璁╂垜浠彲浠ヤ負瀵硅薄鎸囧畾涓涓ā鍨嬭繘琛屾覆鏌擄紝鑰孋ollectable緇勪歡璁╂垜浠彲浠ユ嬀鍙栬繖涓璞°?/p> <p>銆銆鍏充簬緇勪歡鐨勫疄鐜幫紝鎵鏈夌殑緇勪歡閮戒粠涓涓熀紜緇勪歡鎺ュ彛媧劇敓錛屽彲縐板叾涓篒Component銆傛瘡涓粍浠朵篃鏈夎嚜宸辯殑鎺ュ彛瀹氫箟錛屽茍涓旇繖涓帴鍙d篃闇瑕佷粠IComponent媧劇敓錛岀被浼間簬榪欐牱錛欼Component -- ICmpRender -- CCmpRender</p> <p>銆銆榪欓噷鐨勬瘡涓粍浠朵篃灝辨槸鎴戝湪涓婁竴綃囦腑鎵璇寸殑鐢卞紩鎿庢彁渚涚殑灞炴э紝鎴栬呰鍦˙igWorld涓嚜宸卞疄鐜扮劧鍚庡畾涔夌殑灞炴э紝鎴栬呬嬌鐢╩angos涓殑瀹氫箟錛屽氨鏄竴涓釜鐨凷ystem錛岃櫧鐒秏angos騫舵病鏈夊皢鍏跺畬鍏ㄥ仛鎴愮粍浠訛紝浣嗘槸閫氳繃鍏朵唬鐮佹敞閲婂彲浠ョ湅鍒幫紝鎺ュ彛涔熸槸鎸夊姛鑳界粍榪涜浜嗗垎綾伙紝濡傛灉瑕佹媶鍒嗘垚緇勪歡涔熸槸姣旇緝鏂逛究鐨勩?/p> <p>銆銆緇勪歡涔嬮棿鐨勯氫俊鏈変袱縐嶆柟娉曪紝涓鏄敤緇勪歡ID鏌ヨ鍒扮粍浠舵帴鍙f寚閽堬紝鐒跺悗璋冪敤鎺ュ彛鏂規硶錛涗簩鏄嬌鐢ㄦ秷鎭殑鏂瑰紡錛屽悜瀵硅薄涓墍鏈夌粍浠跺彂娑堟伅銆傚湪鍒濆鍖栫殑鏃跺欙紝姣忎竴涓粍浠剁被鍨嬮兘浼氬憡璇夊璞$鐞嗗櫒搴旇鎺ユ敹浠涔堟牱鐨勬秷鎭?/p> <p>銆銆鏌ヨ鎺ュ彛鐨勬柟娉曚篃灝辨槸鐩存帴鐨勬柟娉曡皟鐢紝鍙笉榪囨帴鍙d笉鏄叏閮ㄥ湪鍩虹被涓紝鎵浠ュ繀欏誨厛鏌ヨ鍒版寚瀹氱殑緇勪歡鐒跺悗鎵嶈兘璋冪敤鍏舵帴鍙c傛秷鎭殑浣跨敤鍓嶉潰宸茬粡璇磋繃澶氭錛屽叾瀹炵幇鏂規涔熸湁榪囪鏄庛?/p> <p>銆銆鏈鍚庢槸鍏充簬娓告垙瀵硅薄鍔熻兘鐨勬墿灞曞拰娓告垙瀵硅薄鐨勫畾涔夈傞渶瑕佹墿灞曞姛鑳戒篃灝辨槸闇瑕佸疄鐜頒竴涓柊鐨勭粍浠訛紝鎴栬呬慨鏀圭幇鍦ㄧ粍浠躲傚湪澶у鏁版儏鍐典笅錛屾墿灞曢兘涓嶄細寮曡搗緇撴瀯鐨勫緢澶ц皟鏁達紝鍙楀獎鍝嶇殑鏈澶氬彧鏄嬌鐢ㄥ埌璇ョ粍浠剁殑閮ㄥ垎浠g爜銆?/p> <p>銆銆娓告垙瀵硅薄瀹氫箟鍙噰鐢ㄥ畬鍏ㄦ暟鎹┍鍔ㄧ殑鏂瑰紡錛屼嬌鐢▁ml鎴栬呰剼鏈璦鏉ュ畾涔夊璞$被鍨嬶紝浠ュ強姣忎釜綾誨瀷闇瑕佸姞杞界殑緇勪歡銆傚璞$被鍨嬫敞鍐屽埌瀵硅薄綆$悊鍣ㄥ悗錛岀敱綆$悊鍣ㄦ彁渚涘垱寤烘寚瀹氱被鍨嬬殑瀵硅薄鐨勬柟娉曘傛暟鎹┍鍔ㄧ殑鏂瑰紡鑳藉璁╃瓥鍒掕嚜鐢卞畾涔夋父鎴忓璞$被鍨嬶紝騫朵笖闅忔椂鍙嚜鐢卞垱寤烘柊鐨勫璞$被鍨嬨?/p> </div> <img src ="http://www.shnenglu.com/iwangchuchu/aggbug/113341.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/iwangchuchu/" target="_blank">avatar</a> 2010-04-23 16:06 <a href="http://www.shnenglu.com/iwangchuchu/archive/2010/04/23/113341.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>杞愭父鎴忓紑鍙戙慚MORPG鏈嶅姟鍣ㄦ灦鏋?/title><link>http://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113221.html</link><dc:creator>avatar</dc:creator><author>avatar</author><pubDate>Wed, 21 Apr 2010 15:17:00 GMT</pubDate><guid>http://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113221.html</guid><wfw:comment>http://www.shnenglu.com/iwangchuchu/comments/113221.html</wfw:comment><comments>http://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113221.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/iwangchuchu/comments/commentRss/113221.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/iwangchuchu/services/trackbacks/113221.html</trackback:ping><description><![CDATA[<p>涓涓瘮杈冩娊璞$殑MMORPG鏈嶅姟鍣ㄦ灦鏋勶紝綆鍗曟弿榪般?<br>鐧誨綍鍒嗛厤鏈嶅姟鍣細娓告垙鍖哄敮涓鍏ュ彛鐐癸紝鏍規嵁鐧誨綍鏈嶅姟鍣ㄨ礋杞藉拰鎺掗槦鎯呭喌錛屽垎閰嶇櫥褰曠帺瀹跺埌鎸囧畾鐧誨綍鏈嶅姟鍣ㄤ腑榪涜鐧誨綍錛?br>鐧誨綍鏈嶅姟鍣細澶勭悊鐜╁楠岃瘉韜喚鍚堟硶鎬э紝鍙婃父鎴忛夋父鎴忎笘鐣屾搷浣滐紝鎺у埗鏈嶅姟鍣ㄤ漢鏁幫紱<br>鏁版嵁鏈嶅姟鍣細澶勭悊鐜╁鏁版嵁璇誨彇錛屼繚瀛樺拰緙撳瓨鐨勫湴鏂癸紱 <br>涓栫晫鏈嶅姟鍣細鏁翠釜娓告垙鏃墮棿鐨勪腑蹇冪鐞嗘暟鎹殑鏈嶅姟鍣紱 <br>娓告垙鏈嶅姟鍣細澶勭悊鐜╁涓婚昏緫鐨勬湇鍔″櫒錛?<br>閬撳叿鏈嶅姟鍣細澶勭悊鎵鏈夌洿鎺ラ亾鍏風浉鍏抽昏緫鐨勬湇鍔″櫒錛岀鐞嗛亾鍏風殑浜х敓娑堜骸錛屼氦鏄擄紝鍚堟垚錛屽崌綰э紝絳夋搷浣滐紱<br>緗戝叧鏈嶅姟鍣細鎻愪緵緇欑帺瀹朵笌娓告垙鏈嶅姟鍣ㄧ殑涓漿鏈嶅姟鍣紝鐜╁涓鏃︾櫥褰曟父鎴忥紝濮嬬粓澶勪簬涓涓綉鍏蟲湇鍔″櫒錛?br>鑱婂ぉ鏈嶅姟鍣細鎻愪緵鏇翠赴瀵岀殑鑱婂ぉ褰㈠紡錛屾秷鎭紭鍖栵紝杞彂銆?br>涓績楠岃瘉鏈嶅姟鍣細涓庣櫥褰曟湇鍔″櫒閫氫俊錛屼富瑕佽繘琛岀帺瀹惰韓浠介獙璇侊紝鍙婂弽棣堢敤鎴蜂俊鎭?br>涓績璁¤垂鏈嶅姟鍣細鍏呭鹼紝鎵h垂錛屼氦鏄撴搷浣滅殑澶勭悊銆?/p> <p><br>鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a ><u><font color=#0000ff>http://blog.csdn.net/olncy/archive/2008/12/15/3520572.aspx</font></u></a></p> <div id="hvzpftn" class=tit><font color=#ff0000 size=4><strong>涓涓珮鎬ц兘MMORPG緗戠粶娓告垙鐨勬灦鏋勫疄渚?/strong></font></div> <div id="hvzpftn" class=date> <p><a ><u><font color=#0000ff>http://hi.baidu.com/ahidef/blog/item/197a458ecc3b03f3503d9238.html</font></u></a></p> </div> <p> <table class=FCK__ShowTableBorders style="TABLE-LAYOUT: fixed"> <tbody> <tr> <td> <div id="hvzpftn" class=cnt> <p>涓銆佹湇鍔″櫒緇勬ā鍨嬬殑閫夊瀷<br>       鑰冭檻鍒拌繎騫存潵璁$畻鏈虹‖浠舵妧鏈殑椋為熷彂灞曪紝鐗╃悊鏈嶅姟鍣ㄧ殑鎬т環姣斿緱鍒頒簡寰堝ぇ鐨勬彁楂橈紝緇撳悎欏圭洰闇瑕侀氳繃鏈嶅姟鍣ㄧ粍緇欐暟涓囩帺瀹舵彁渚涢珮璐ㄩ噺鏈嶅姟鐨勫晢涓氳姹傦紝緇忚繃鐮旂┒瀵規瘮鏁扮鏈嶅姟鍣ㄦā鍨嬪悗錛屽喅瀹氶噰鍙栦簡涓婂浘鎵紺虹殑鏈嶅姟鍣ㄧ粍妯″瀷銆?/p> <p> </p> <div forimg="1"><img class=blogimg src="http://hiphotos.baidu.com/ahidef/pic/item/4f3d7935f072bf91d1a2d3f6.jpg" border=0 small="0"><br> <p>浜屻丮MORPG鏈嶅姟鍣ㄧ郴緇熸灦鏋?/p> <p>       MMORPG澶у瀷緗戞父鏈嶅姟鍣ㄦ槸浣跨敤楂樻ц兘緗戠粶I/O妯″瀷閰嶅悎娑堟伅闃熷垪榪炴帴鍚勬湇鍔$嚎紼嬬殑涓涓潪甯哥ǔ瀹氱殑楂樻ц兘緗戞父緋葷粺銆傚叾涓秷鎭槦鍒楃郴鍩轟簬鍏變韓鍐呭瓨鑷寮鍙戝畬鎴愩傚湪鍗曟湇鍔″櫒鏍囧噯宸ヤ綔鐜涓嬭繘琛屾祴璇曪紝涓鍙板弻 XEON 鏈嶅姟鍣ㄥ彲浠ラ潪甯歌交鏉懼湴杈懼埌涓?,500鐢ㄦ埛姣忕澶勭悊5,000璇鋒眰錛屾瘡縐掑鐞嗚姹傛暟鍙秴榪?25,000銆?/p> <div forimg="1"> <p><img class=blogimg src="http://hiphotos.baidu.com/ahidef/pic/item/41baad303fa6be3feac4aff1.jpg" border=0 small="0"></p> <p>涓夈丮MORPG鐨勫疄鐜?/p> <p>       棣栧厛錛屽湪鍩虹寤鴻鏂歸潰錛屼笌瑙勫垝鐜板疄涓殑鍩庡競涓鏍鳳紝寰楀厛鎼緩璧蜂竴緋誨垪鐨勬埧灞嬨侀亾璺強鍑哄彛銆佺綰垮拰璇稿NPC浜虹墿絳夋瀯鎴愮殑鍩烘湰瑕佺礌鍜屾椿鍔ㄧ┖闂達紝閫氳繃鍦ㄦ湇鍔″櫒绔?Server side)鍙栧緱棰勫厛璁捐濂界殑緇煎悎鍦扮悊銆丯PC浜虹墿銆佹妧鑳界瓑涓緋誨垪鐨勫垵濮嬪寲鏁板瓧鏁版嵁(鍏蜂綋鏂囨。鐗囨璇瘋闄勪歡A.鍦板浘鏁版嵁鏂囦歡紺轟緥鍜岄檮浠禕.鍙告満 NPC 鏁版嵁鏂囦歡紺轟緥)錛岀劧鍚庝緷闈犵▼搴忓皢鏁板瓧鏁版嵁鍜屾父鎴忛昏緫鏈夋満鍦板崗璋冭搗鏉ワ紝鏈緇堝艦鎴愪竴濂楀畬鏁寸殑铏氭嫙娓告垙鍩虹絀洪棿銆?/p> <p> </p> <p>       鍦ㄧ‘瀹氫簡鍦板浘鏁版嵁鐢熸垚瑙勫垯鍚庯紝灝卞彲浠ヤ嬌鐢ㄧ紪杈戝櫒浠繪剰緙栬緫娓告垙鍦烘櫙銆備緷璧栦簬榪欐牱鑹ソ鐨勫熀紜璁炬柦錛屾墠鑳藉湪鍏朵粬娓告垙閫昏緫鐨勯厤鍚堜笅瀹炵幇瀹屾暣鐨勬晠浜嬫儏鑺傘傚悓鏃舵湇鍔″櫒绔礋璐e皢灞炰簬鐢ㄦ埛鍚勮嚜鐨勬父鎴忛昏緫鏁版嵁閫氳繃楠岃瘉鍚庡彂閫佸埌鍚堟硶鐨勭敤鎴峰鎴風鏈哄櫒閲岋紝瀹屾垚瀹㈡埛绔父鎴忛昏緫鐨勫緩绔嬪拰鏁版嵁鍚屾銆傛媴璐熸湇鍔″櫒涓庡鎴風閫氳鐨勬槸鑷畾涔夋牸寮忕殑鏁版嵁閫氳灝佸寘錛屽畠灝卞儚鏁板瓧紲炵粡鑸瘡絀跨潃鏁翠釜娓告垙鐨勫緇堛傛暟鎹皝鍖呬笌濡備笅4閮ㄥ垎娑堟伅鏈夊叧錛屽畠浠垎鍒負鍦烘櫙娑堟伅, 鍚屾娑堟伅錛屼富瑙掓秷鎭拰鐣岄潰娑堟伅銆?/p> <p>   </p> <p>       A.涓昏娑堟伅鍖呮嫭瀹㈡埛绔墍鎺у埗鐨勮鑹茬殑鎵鏈夊姩浣滐紝鍖呮嫭璧拌礬錛岃亰澶┿佷氦鏄撱佹垬鏂楃瓑銆?br>   </p> <p>       B.鍦烘櫙娑堟伅鍖呮嫭鏄煎鍏存浛銆佹皵鍊欏彉鍖栵紝涓瀹氱殑鏃墮棿鍦ㄥ満鏅噷鍑虹幇鏌愪簺涓滆タ絳夛紝榪欑被娑堟伅鍏鋒湁鐨勭壒鐐規槸鎵鏈夋秷鎭殑鍙戣搗鑰呴兘鏄湇鍔″櫒錛屽箍鎾璞″垯鏄満鏅噷鐨勬墍鏈夌帺瀹躲?br>   </p> <p>       C.鍚屾娑堟伅鏄拡瀵瑰彂璧峰璞℃槸鏌愪釜鐜╁錛岀粡榪囨湇鍔″櫒騫挎挱緇欐墍鏈夌湅寰楄浠栫殑鐜╁錛岃娑堟伅涔熷寘鎷墍鏈夌殑鍔ㄤ綔錛岃縐嶆秷鎭槸鏈嶅姟鍣ㄥ箍鎾粰瀹㈡埛绔殑錛屼富瑙掓秷鎭垯涓鑸槸瀹㈡埛绔富鍔ㄥ彂緇欐湇鍔″櫒绔?br>   </p> <p>       D.鐣岄潰娑堟伅鏄湇鍔″櫒鍙戠粰瀹㈡埛绔殑鑱婂ぉ娑堟伅鍜屽悇縐嶅睘鎬у強鐘舵佸彉鍖栫殑淇℃伅銆?/p> <p> </p> <p>       鍊煎緱涓璋堢殑榪樻湁澶勪簬緗戠粶娓告垙涓瘮杈冮噸瑕佺殑鏈嶅姟鍣ㄥ悓瀹㈡埛绔秷鎭箍鎾拰鍚屾闂銆傚叾涓竴縐嶆柟娉曟槸閲囧彇鍦ㄥ浗闄呬笂琚О涓?Mutual synchronization錛堢浉浜掑悓姝ワ級錛屾槸涓縐嶅鏈潵緗戠粶鐨勫墠鏅殑鑹ソ棰勬祴鍑烘潵鐨勮В鍐蟲柟妗堟潵瑙e喅紜繚姣忎釜鐜╁鍦ㄥ悇鑷鎴風涓婄湅鍒扮殑涓滆タ澶т綋鏄竴鏍風殑鍚屾闂銆?/p> <p> </p> <p>       棣栧厛瀹㈡埛绔渶瑕佸湪鐧誨綍娓告垙鐨勬椂鍊欏緩绔嬪緢澶氬紶騫挎挱鍒楄〃錛岃繖浜涘垪琛ㄥ湪瀹㈡埛绔悗鍙板拰鏈嶅姟鍣ㄧ瑕佷繚鎸佷笉瀹氭椂鍚屾銆傚叾涓寤虹珛澶氬紶鍒楄〃錛屾槸鍥犱負瑕佸箍鎾殑綾誨瀷鍖呮嫭鍏ㄥ眬淇℃伅銆佹湰鍦頒俊鎭拰榪滅▼淇℃伅絳夌瓑錛岃繖浜涘垪琛ㄩ兘鏄湪瀹㈡埛绔櫥闄嗙殑鏃跺欐牴鎹湇鍔″櫒鍙戣繃鏉ョ殑娑堟伅寤虹珛濂界殑銆傚湪寤虹珛鍒楄〃鐨勫悓鏃訛紝榪橀渶瑕佽幏寰楁瘡涓垪琛ㄤ腑騫挎挱瀵硅薄鐨勪紶杈撴椂闂達紝騫朵笖瑕佺淮鎶や竴寮犲畬鏁寸殑鐢ㄦ埛鐘舵佸垪琛ㄥ湪鍚庡彴錛屼篃鏄繘琛屼笉瀹氭椂鐨勫拰鏈嶅姟鍣ㄨ繘琛屽悓姝ワ紝鏍規嵁鏈湴鐨勭敤鎴風姸鎬佽〃錛屽彲浠ヤ嬌涓閮ㄥ垎鍐崇瓥鐢卞鎴風鏉ュ喅瀹氾紝褰撳鎴風鍙戦佽繖閮ㄥ垎鍐崇瓥鐨勬椂鍊欙紝鍒欑洿鎺ュ皢鏈緇堝喅絳栧彂閫佸埌鍚勪釜騫挎挱鍒楄〃閲岄潰鐨勫鎴風錛屽茍瀵瑰叾鏃墮棿榪涜鏍″錛屼互淇濊瘉姣忎釜瀹㈡埛绔湪鏀跺埌鐨勬秷鎭殑鏃墮棿鏄拰鏈湴鏃墮棿榪涜鏍″榪囩殑錛屽啀閲囩敤棰勬祴琛ュ伩璁$畻鎻愬墠閲忕殑鏂規硶錛岃綆楀嚭鎻愬墠閲忥紝鏍規嵁璁$畻閲忕‘瀹氬疄闄呰璧伴熷害錛屽皢浼氫嬌鍚屾鍙樺緱闈炲父鐨勫鉤婊戙?/p> <p> </p> <p>       鍏朵腑錛屽箍鎾殑閲嶇偣灝卞湪浜庡浣曡綆楀嚭騫挎挱鐨勫璞★紝棣栧厛鍦ㄦ湇鍔″櫒绔殑榪炴帴緇撴瀯閲岄潰澧炲姞涓涓箍鎾璞$殑闃熷垪錛岃闃熷垪鍦ㄥ鎴風鐧婚檰鏈嶅姟鍣ㄧ殑鏃跺欑敱鏈嶅姟鍣ㄤ紶杈撶粰鍚堟硶鐨勫鎴風錛岀劧鍚庣敱瀹㈡埛绔嚜宸辨潵緇存姢榪欎釜闃熷垪錛屽綋鏈変漢璧板嚭瀹㈡埛绔閲庣殑鏃跺欙紝鐢卞鎴風涓誨姩瑕佹眰鏈嶅姟鍣ㄧ粰閭d釜瀵硅薄鍙戦佹秷澶辯殑娑堟伅銆?/p> <p> </p> <p>       褰撴湁浜鴻蛋榪涜閲庣殑鎯呭喌錛屽垯鍏堥渶瑕佸鎴風鍦ㄦ瘡嬈$粰鏈嶅姟鍣ㄥ彂閫佹洿鏂頒綅緗殑娑堟伅鐨勬椂鍊欙紝鏈嶅姟鍣ㄩ兘緇欒榪炴帴綆楀嚭涓涓閲庤寖鍥達紝鐒跺悗鍦ㄩ渶瑕佸箍鎾殑鏃跺欙紝寰幆鏁村紶鍦板浘涓婄殑鐜╁錛屾壘鍒板潗鏍囧湪鍏惰閲庤寖鍥村唴鐨勭帺瀹朵粠鑰屽畬鎴愬箍鎾殑鍏ㄨ繃紼嬨?/p> <p> </p> <p>       鍏舵鏄櫄鎷熷璞$郴緇熴傚叾涓富瑕佷細娑夊強鍒癗PC鐨勬蹇碉紝灝ゅ叾鏄箍娉涘簲鐢ㄧ殑A Star綆楁硶絳夊湪鎻愪緵NPC鐨勪漢宸ユ櫤鑳藉喅絳栨柟闈㈡湁鐫閲嶈鐨勪綔鐢ㄣ侼PC鏅鴻兘浣跨敤涓縐嶆槸琚姩瑙﹀彂浜嬩歡鍜屾槸涓誨姩瑙﹀彂浜嬩歡鐨勬柟寮忕敱璁$畻鏈烘潵瀹炵幇瀵筃PC鍋氫綍縐嶅喅絳栥侫 Star綆楁硶灝辨槸鍏稿瀷鐨勫惎鍙戝紡鎼滅儲鐨勫簲鐢紝鍏舵櫘閫氬師鐞嗘槸鍏堣璁′竴涓猂ule() 鍑芥暟錛屾潵鑾瘋繖涓涓偣鐨勪唬浠鳳紝鐒跺悗姣忔鎼滅儲鐨勬椂鍊欐妸涓嬩竴姝ュ彲鑳藉埌杈劇殑鎵鏈夌偣閮界粡榪嘡ule() 鍑芥暟璇勪環涓涓嬶紝鑾峰彇涓ゅ埌涓変釜浠d環姣旇緝灝忕殑鐐癸紝緇х畫鎼滅儲錛岀洿鑷沖緱鍒頒唬浠鋒渶灝忕殑涓涓偣銆傛渶鏄庢樉鐨勫簲鐢ㄦ槸NPC鍦ㄥ疄鐜拌嚜鍔ㄩ夋嫨鏀誨嚮鐩爣鍜岄冭窇鏃剁殑瀹炵幇銆傚疄鐜拌嚜鍔ㄩ夋嫨鏀誨嚮鐩爣鏃訛紝棣栧厛鑾峰緱鍦板浘涓婅窛紱昏NPC闄勮繎鐨勬晫浜哄垪琛紝璁捐鐩稿簲Rule() 鍑芥暟錛屾牴鎹晫浜虹殑寮哄急銆佽繙榪戯紝鍒ゆ柇鍑哄嚑涓瘎浼版暟鎹紝鐒跺悗閫夋嫨浠d環鏈灝忕殑鏁屼漢榪涜涓誨姩鏀誨嚮銆傞冭窇鍒欐槸鍦ㄤ富鍔ㄤ簨浠墮噷闈㈡鏌ヨ嚜宸辯殑HP錛屽鏋淗P浣庝簬鏌愪釜鍊鹼紝鑰屾晫浜烘榪戞垬鏀誨嚮鐨勬椂鍊欙紝鍒欒Е鍙戦冭窇鍑芥暟錛屽湪閫冭窇鍑芥暟閲岄潰涔熸槸瀵瑰懆鍥寸殑鎵鏈夌殑鏁屼漢緇勭粐鎴愬垪琛紝鐒跺悗璁捐Rule() 鍑芥暟錛屽厛鍒嗘瀽閫夋嫨鍑哄浣犳瀯鎴愬▉鑳佹渶澶х殑鏁屼漢錛岃鍑芥暟榪橀渶瑕佸垽鏂晫浜虹殑榪愬姩閫熷害錛屾垬鏂楀姏寮哄急錛屾渶鍚庡緱鍑轟竴涓富瑕佹晫浜猴紝鐒跺悗閽堝璇ヤ富瑕佹晫浜鴻繘琛岃礬寰勭殑Rule() 鐨勫嚱鏁扮殑璁捐錛屾悳绱㈢殑鑼冨洿鍙彲鑳芥槸鍜屼富瑕佹晫浜虹浉鍙嶇殑鏂瑰悜錛岀劧鍚庡啀鏍規嵁璇ュ嚑涓柟鍚戜笂鐨勬晫浜虹殑寮哄急鏉ヨ綆椾唬浠鳳紝鍋氬嚭鏈鍚庣殑閫夋嫨錛屽鏋滃垢榪愮殑璇濓紝鍙互鏈?0%鐨勬満鐜囬冨線娌℃湁 NPC 闃繪尅鐨勯偦榪戝湴鍥句腑鍘匯?/p> <p> </p> <p>       鏈鍚庯紝鐢變簬鑴氭湰鏄疪PG娓告垙鐨勭伒欖傦紝鑷劧鑴氭湰緙栬瘧鍣ㄥ氨鎵紨浜嗗崄鍒嗛噸瑕佺殑鍦頒綅銆傚湪鍩轟簬緙栬瘧鐨勬湇鍔″櫒绔▼搴忎腑錛屾槸鏃犳硶鍦ㄧ▼搴忕殑榪愯榪囩▼涓瀯寤轟竴浜涗笢瑗跨殑錛屾墍浠ュ繀欏婚氳繃鑴氭湰緙栬瘧鍣ㄦ彁渚涗竴浜涚畝鍗曠殑璇硶鍜屾枃娉曡В鏋愮殑鍔熻兘錛岃繘琛屼竴緋誨垪鐨勯昏緫鍒ゆ柇鍜屽驚鐜紝浠ユ彁楂樻湇鍔″櫒绔殑鐏墊椿紼嬪害銆傚彲浣跨敤綾諱技姹囩紪璇█鐨勯偅縐嶇粨鏋勬潵瀹炵幇鑴氭湰緙栬瘧鍣紝璁劇疆涓浜涙潯浠惰煩杞拰寰幆鏉ュ疄鐜伴昏緫鍒ゆ柇鍜屽驚鐜傛彁渚涗竴浜涢氱敤鎸囦護錛屽鍒ゆ柇銆佸驚鐜佸洓鍒欒繍綆椼佸鍧絳夌瓑錛岄拡瀵逛笉鍚岀殑鑴氭湰閲囩敤涓嶅悓鐨勮В鏋愭柟娉曪紝瀵筃PC灝辯敤NPC鍥哄畾鐨勮剼鏈紝瀵笽tem灝辯敤Item鍥哄畾鐨勮剼鏈紝瑙f瀽瀹屼互鍚庡氨鎶婄粨鏋滅敓鎴愬簳灞傝瀵硅薄鐨勭粨鏋勪究浜庝嬌鐢ㄣ?/p> <p> </p> <p>       緇忚繃浠ヤ笂鐨勫緩璁炬楠わ紝涓涓畬鏁寸殑MMORPG緗戠粶娓告垙緋葷粺灝辮閫愭寤虹珛璧鋒潵浜嗐?/p> <p>ZZ <a class=ln ><u><font color=#0000ff>MDNA緗戠粶娓告垙鏁翠綋鏋舵瀯緙栫▼</font></u></a></p> </div> </div> </div> </td> </tr> </tbody> </table> </p> <img src ="http://www.shnenglu.com/iwangchuchu/aggbug/113221.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/iwangchuchu/" target="_blank">avatar</a> 2010-04-21 23:17 <a href="http://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113221.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>銆愭父鎴忓紑鍙戙慙uaForWindows 鐜閰嶇疆http://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113219.htmlavataravatarWed, 21 Apr 2010 15:15:00 GMThttp://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113219.htmlhttp://www.shnenglu.com/iwangchuchu/comments/113219.htmlhttp://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113219.html#Feedback0http://www.shnenglu.com/iwangchuchu/comments/commentRss/113219.htmlhttp://www.shnenglu.com/iwangchuchu/services/trackbacks/113219.htmlLuaForWindows 鐜閰嶇疆

from: http://bbs.luaer.cn/read-Lua-tid-233.html


鐜錛歭ua for windows (lfW)
涓婚〉錛?a >http://luaforwindows.luaforge.net/

lua for windows鍏跺疄鏄竴鏁村Lua鐨勫紑鍙戠幆澧冿紝瀹冨寘鎷細
Lua Interpreter錛圠ua瑙i噴鍣級
Lua Reference Manual錛圠ua鍙傝冩墜鍐岋級
Quick Lua Tour 錛圠ua蹇熷叆闂級
Examples 錛圠ua鑼冧緥錛?br>Libraries with documentation 錛堜竴浜汱ua搴撳拰鏂囨。錛?br>SciTE 錛堜竴涓緢媯掔殑澶氱敤閫旂紪杈戝櫒錛屽凡緇忓Lua鍋氫簡鐗規畩璁劇疆錛?/p>

鍏跺畠璇︾粏鐨勫唴瀹硅鍒發uaforge鐨勪富欏典笂鏌ョ湅銆?/p>

涔嬫墍浠ユ帹鑽愯繖濂楃幆澧冩槸鍥犱負瀹冩暣鍚堜簡鍦╳indows瀛︿範鍜屽紑鍙慙ua鎵闇瑕佺殑鎵鏈変笢瑗?/p>

錛屽浜庢柊鎵嬫潵璇存槸闈炲父浣撹創鐨勶紝闄勫甫鐨凷ciTE鍙緇忚繃綆鍗曢厤緗氨鑳藉寰堟柟渚跨殑緙?/p>

鍐橪ua紼嬪簭錛岀紪璇戯紝榪愯錛岃皟璇曘傚畠榪樻槸闄勫甫鑷姩鎻愮ず鍜屼唬鐮佽嚜鍔ㄨˉ鍏ㄥ姛鑳界殑鍝︼紝

瀵逛簬鐢ㄦ儻VC + VA鐨勫紑鍙戜漢鍛樻潵璇達紝瀹炲湪鏄お浜插垏浜嗐?/p>

涓嬮潰浠嬬粛涓涓嬫暣涓猯fW錛?br>涓嬭澆lfw錛屾渶鏂扮殑鐗堟湰鏄?.1.3.13錛岀洿鎺ュ畨瑁咃紝娉ㄦ剰鏈鍚庝竴姝ヤ細璇㈤棶SciTE緙栬緫鍣?/p>

鏄惁浣跨敤“榛戣壊”椋庢牸錛屾垜姣旇緝鍠滄榛戣壊搴曡壊錛屾墍浠ュ湪榪欓噷鎵撻挬錛屼箣鍚庣戶緇?br>瀹夎瀹屾垚鍚庯紝瀛︿範Lua鎵闇瑕佺殑涓鍒囩幆澧冨氨鍏ㄩ儴瀹夎瀹屾瘯錛屽崄鍒嗙畝鍗曘?/p>

涓嬮潰鍙互嫻嬭瘯鏄惁瀹夎鎴愬姛
鎵撳紑SciTE錛屾柊寤轟竴涓枃浠訛紝杈撳叆涓琛宭ua浠g爜錛?/p>

print("hello,lua")

鐒跺悗淇濆瓨涓篽ello.lua錛屾敞鎰忎繚瀛樻枃浠舵椂瑕佸姞鏂囦歡鍚嶅悗緙.lua錛屽惁鍒欏彲鑳戒笉鑳芥紜?/p>

鐨勮繍琛屻?br>鎸塅5錛屽鏋淪ciTE鐨勮緭鍑虹獥鍙e嚭鐜?br>>lua -e "io.stdout:setvbuf 'no'" "hello.lua"
hello,lua
>Exit code: 0
瀛楁牱鍒欎唬琛ㄦ暣涓猯ua寮鍙戠幆澧冨畨瑁呮垚鍔熴?/p>

濡傛灉瀵筍ciTE榛樿鐨勯厤鑹叉柟妗堟垨鑰呭瓧浣撲笉婊℃剰錛岀偣鍑匯怬ptions銆戣彍鍗曚腑鐨勩怬pen

Global Options File銆戯紝鍒欏彲浠ョ湅鍒癝ciTE鐜鐨勫叏灞閰嶇疆鏂囦歡銆傞噷闈㈠彲浠ヤ慨鏀?/p>

鐨勫寘鎷瓧浣擄紝棰滆壊錛岀獥鍙e竷灞絳夌瓑錛屼慨鏀圭浉搴旂殑鍊煎嵆鍙傚鏋滄壘涓嶅埌鑷繁鎯寵淇?/p>

鏀圭殑欏圭洰錛屽彲浠ュ啀鍒般怬ptions銆戠殑銆怬pen black.properties銆戯紙濡傛灉浣跨敤鐨勬槸

鐧借壊鑳屾櫙錛岃繖閲屽垯鏄痺hite.properties錛夋枃浠朵腑鏌ユ壘錛岃繖閲屽瓨鍌ㄧ殑鏄洿鍔犵粏鑷寸殑

灞炴ч厤緗備慨鏀硅繖涓や釜鏂囦歡錛屽熀鏈笂灝辮兘澶熸弧瓚沖ぇ閮ㄥ垎瀛︿範鎴栨槸寮鍙戣呯殑涓漢鍠?/p>

濂姐傝繕鏈変竴鐐癸紝鍦℅lobal Options File涓紝鏌ユ壘command.help.*.lua錛屽悗闈㈠搴?/p>

鐨勬槸鍦ㄧ紪杈戝櫒涓寜涓婩1閿脊鍑虹殑chm鏍煎紡鐨刲ua鎵嬪唽鏂囦歡璺緞錛岃繖閲岄渶瑕佷慨鏀逛竴涓?/p>

錛屾妸鏂囦歡璺緞鏀規紜氨鍙互浜嗭紙5.1.3鐗堟湰浼間箮娌¤繖涓棶棰樹簡錛夈?/p>

鏁翠釜鐜榪橀檮甯︿竴涓猀uickLuaTour錛屾槸涓涓敤Lua鍐欑殑涓涓熀浜庢帶鍒跺彴鐨勫皬鏁欑▼錛?/p>

寰堟槗浜庣悊瑙c?/p>

鍩烘湰涓婃暣涓幆澧冨氨鏄繖鏍鳳紝涔嬪悗灝卞彲浠ュ紑濮嬪涔燣ua浜嗐?/p>

avatar 2010-04-21 23:15 鍙戣〃璇勮
]]>
銆愭帹鑽愩戝己澶х殑浠g爜闃呰宸ュ叿Understandhttp://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113218.htmlavataravatarWed, 21 Apr 2010 15:14:00 GMThttp://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113218.htmlhttp://www.shnenglu.com/iwangchuchu/comments/113218.htmlhttp://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113218.html#Feedback0http://www.shnenglu.com/iwangchuchu/comments/commentRss/113218.htmlhttp://www.shnenglu.com/iwangchuchu/services/trackbacks/113218.html銆愭帹鑽愩戝己澶х殑浠g爜闃呰宸ュ叿Understand
4 涓檮浠?/div>
_http://www.scitools.com/products/understand/

Understand杞歡鐨勫姛鑳戒富瑕佸畾浣嶄簬浠g爜鐨勯槄璇葷悊瑙c傜晫闈㈣矊浼兼槸鐢≦t寮鍙戠殑銆?br>
鍏峰濡備笅鐗規э細
1銆佹敮鎸佸璇█錛欰da, C, C++, C#, Java, FORTRAN, Delphi, Jovial, and PL/M 錛屾販鍚堣璦鐨刾roject涔熸敮鎸?br>2銆佸騫沖彴錛?Windows/Linux/Solaris/HP-UX/IRIX/MAC OS X
3銆?strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">浠g爜璇硶楂樹寒銆?strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">浠g爜鎶樺彔銆佷氦鍙夎煩杞佷功絳劇瓑鍩烘湰闃呰鍔熻兘銆?br>4銆佸彲浠ュ鏁翠釜project鐨刟rchitecture銆乵etrics榪涜鍒嗘瀽騫惰緭鍑烘姤琛ㄣ?br>5銆佸彲浠ュ浠g爜鐢熸垚澶氱鍥撅紙butterfly graph銆乧all graph銆乧alled by graph銆乧ontrol flow graph銆乁ML class graph絳夛級錛屽湪鍥句笂鐐瑰嚮鑺傜偣鍙互璺寵漿鍒板搴旂殑婧?strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">浠g爜浣嶇疆銆?br>6銆佹彁渚汸erl API渚夸簬鎵╁睍銆備綔鍥懼叏閮ㄦ槸鐢≒erl鎻掍歡瀹炵幇鐨勶紝鐩存帴璇誨彇鍒嗘瀽濂界殑鏁版嵁搴撲綔鍥俱?br>7銆佸唴緗殑鐩綍鍜屾枃浠舵瘮杈冨櫒銆?br>8銆佹敮鎸乸roject鐨剆napshot錛屽茍鑳藉拰鑷鐨凾rackBack闆嗘垚渚夸簬鐩戣project鐨勫彉鍖栥?br>
灝忔妧宸э紙瀹樼綉鐨凢AQ閲屾湁錛夛細

1銆佽緗瓧浣撳拰棰滆壊椋庢牸

淇敼榛樿瀛椾綋錛歍ools -> Options -> Editor -> Default style
淇敼棰滆壊錛?Tools -> Options -> Editor -> Styles

2銆佺敓鎴怳ML綾誨浘銆佽皟鐢ㄦ爲鍥?br>
榛樿瀹夎鐨勬彃浠朵笉鏀寔榪欎袱縐嶅浘錛岄渶瑕佷粠瀹樼綉涓嬭澆鎻掍歡銆?br>_http://www.scitools.com/perl_scripts/uperl/uml_class.upl
_http://www.scitools.com/perl_scripts/uperl/invocation.upl
鏀懼埌sti/conf/scripts/local鐩綍涓嬨?br>鐒跺悗閲嶆柊榪愯錛屾墽琛?project-> project graphical views -> xxxx鍙互鐢熸垚榪欎袱縐嶅浘銆?br>
3銆佹洿鏀瑰浘鐨勫瓧浣?br>
鐩存帴淇敼瀵瑰簲鐨勮剼鏈枃浠訛紙\Program Files\STI\conf\scripts鐩綍涓嬶級錛屽湪do_load( )鍑芥暟鐨勫搴斾綅緗姞鍏ュ涓嬬殑璁劇疆錛?br>
$graph->default("fontname","Consolas","node");
$graph->default("fontsize","10","node");
$graph->default("fontname","Consolas","edge");
$graph->default("fontsize","10","edge");

娉ㄦ剰錛氭湁鐨勮剼鏈腑鐨勪綔鍥懼彉閲忓悕涓嶆槸 $graph 鑰屾槸 $g銆?br>
鍙﹀涓嬈?strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">浠g爜鍙鍖栫悊瑙?strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">宸ュ叿錛?http://www.sgvsarc.com/prod_crystalrevs_screenshots.htm


avatar 2010-04-21 23:14 鍙戣〃璇勮
]]>杞愭父鎴忓紑鍙戙戝埄鐢–EGUI+Lua瀹炵幇鐏墊椿鐨勬父鎴廢I妗嗘灦http://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113217.htmlavataravatarWed, 21 Apr 2010 15:13:00 GMThttp://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113217.htmlhttp://www.shnenglu.com/iwangchuchu/comments/113217.htmlhttp://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113217.html#Feedback0http://www.shnenglu.com/iwangchuchu/comments/commentRss/113217.htmlhttp://www.shnenglu.com/iwangchuchu/services/trackbacks/113217.html

鍒╃敤CEGUI+Lua瀹炵幇鐏墊椿鐨勬父鎴廢I妗嗘灦

      鍦ㄤ笂涓綃囨枃绔犱腑錛屼粙緇嶄簡涓縐嶅熀浜庣粍浠舵柟寮忕殑娓告垙UI鏋舵瀯璁捐鏂規錛屽湪榪欓噷錛岀瑪鑰呭皢浠嬬粛濡備綍鍒╃敤CEGUI鍜孡ua鏉ュ疄鐜拌繖縐嶇伒媧葷殑妗嗘灦銆?/p>

       CEGUI鏄竴涓吋瀹筄penGL銆丏irectX鐨勪紭縐寮婧怗UI搴擄紝鍏充簬濂圭殑浠嬬粛浠ュ強濡備綍鍦―irect3D涓嬌鐢ㄥス錛屽彲浠ュ弬鑰?a >http://blog.csdn.net/Lodger007/archive/2007/07/02/1675141.aspx涓鏂囥侺ua鏄竴縐嶅己澶х殑鑴氭湰璇█錛屽ス浣跨敤鏍堜綔涓烘暟鎹帴鍙o紝鑳藉寰堝鏄撳湴涓庡叾瀹冭璦浜や簰錛屽叧浜庡ス鐨勪粙緇嶅彲浠ュ弬鑰?a >http://www.lua.org/錛屼互鍙婄瑪鑰呬互鍓嶇炕璇戠殑涓夌瘒緋誨垪鏂囩珷錛歀ua鍏ラ棬錛?a >http://blog.csdn.net/Lodger007/archive/2006/06/26/836466.aspx錛夈佽皟鐢↙ua鍑芥暟錛?a >http://blog.csdn.net/Lodger007/archive/2006/06/26/836897.aspx錛夈佸湪Lua涓皟鐢–++鍑芥暟錛?a >http://blog.csdn.net/Lodger007/archive/2006/06/26/837349.aspx錛夈?/div>
       鍦ㄥ疄鐜頒腑錛屼綔涓篣I緇勪歡綆$悊鍣ㄧ殑GUISystem鏄竴涓崟浠訛紝榪欐牱錛屼綘鑳藉寰堟柟渚垮湴鍦ㄤ換浣曞湴鏂逛嬌鐢ㄥ叾鍏ㄥ眬鍞竴鐨勫璞°備笅闈㈡槸Singleton鍜孏UISystem鐨勫疄鐜頒唬鐮侊細


avatar 2010-04-21 23:13 鍙戣〃璇勮
]]>[杞琞c++璋冪敤lua鑴氭湰1錛堝鉤鍙皐indows錛?http://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113193.htmlavataravatarWed, 21 Apr 2010 15:00:00 GMThttp://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113193.htmlhttp://www.shnenglu.com/iwangchuchu/comments/113193.htmlhttp://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113193.html#Feedback0http://www.shnenglu.com/iwangchuchu/comments/commentRss/113193.htmlhttp://www.shnenglu.com/iwangchuchu/services/trackbacks/113193.html    鐜VC++6.0
    lua  sdk 5.1


   鍦ㄨ皟鐢ㄥ墠 鍏堣璇嗗嚑涓嚱鏁般?br>1錛?璋冪敤lua_open()灝嗗垱寤轟竴涓寚鍚慙ua瑙i噴鍣ㄧ殑鎸囬拡銆?
2錛?luaL_openlibs()鍑芥暟鍔犺澆Lua搴撱?
3錛?浣跨敤luaL_dofile()鍔犺澆鑴氭湰騫惰繍琛岃剼鏈?
4錛?lua_close()鏉ュ叧闂璍ua鎸囧悜瑙i噴鍣ㄧ殑鎸囬拡銆?br> 
5錛?璋冪敤lua_getglobal()灝哸dd()鍑芥暟鍘嬪叆鏍堥《錛宎dd()涓簂ua鍑芥暟銆?br>6錛?絎竴涓弬鏁皒錛岄氳繃璋冪敤lua_pushnumber()鍏ユ爤銆?br>7錛?鍐嶆璋冪敤lua_pushnumber()灝嗙浜屼釜鍙傛暟鍏ユ爤銆?br>8錛?浣跨敤lua_call()璋冪敤Lua鍑芥暟銆?br>9錛?璋冪敤lua_tonumber()浠庢爤欏跺彇寰楀嚱鏁扮殑榪斿洖鍊箋?br>10錛?lua_pop()縐婚櫎鏍堥《鐨勫箋?br>

浠g爜
add.lua
1function add ( x, y )
2    return x + y
3end
4

main.cpp
#include <stdio.h>

extern "C" {
#include 
"lua.h"
#include 
"lualib.h"
#include 
"lauxlib.h"
}


/* the Lua interpreter */
lua_State  
* L;

int luaadd ( int x, int y )
{
    
int sum;
    
    
//鍑芥暟鍚?/span>
    lua_getglobal(L, "add");
    
    
//絎竴涓弬鏁板帇鏍?/span>
    lua_pushnumber(L, x);
    
    
//絎簩涓弬鏁板帇鏍?/span>
    lua_pushnumber(L, y);

    
//璋冪敤鍑芥暟
    lua_call(L, 21);
    
    
//寰楀埌榪斿洖鍊?/span>
    sum = (int)lua_tonumber(L, -1);
    lua_pop(L, 
1);
    
    
return sum;
}


int main ( int argc, char *argv[] )
{
    
int sum;
    
    
//鍒涘緩涓涓寚鍚慙ua瑙i噴鍣ㄧ殑鎸囬拡銆?/span>
    L = lua_open();
    
    
//鍑芥暟鍔犺澆Lua搴?/span>
    luaL_openlibs(L);

    
//鍔犺澆鑴氭湰
    luaL_dofile(L,"add.lua");
    
    
//璋冪敤鍑芥暟
    sum = luaadd( 1011);
    
    
// print the result 
    printf( "The sum is %d\n", sum );
    
    
//鍏抽棴 閲婃斁璧勬簮    
    lua_close(L);
    
    
return 0;
}



娉ㄦ剰闂錛?br>1.宸ョ▼澶存枃浠秎ua.h絳夛紝緙栬瘧鍣ㄨ兘鎵懼埌錛屽彲浠ラ氳繃宸ュ叿鏉ヨ緗ご鏂囦歡璺緞銆?br>2. 娣誨姞lua5.1.lib鍒癘bject/library modules鍒楄〃涓?

嫻嬭瘯緇撴灉
The sum is 21

鍏充簬lua鐨勮璇?br>http://www.shnenglu.com/expter/archive/2008/12/24/70224.html

avatar 2010-04-21 23:00 鍙戣〃璇勮
]]>
杞粡鍏稿闃叉父鎴廡owersTrap-[lua澶嶅埢鐗堟湰,闄勫叏閮╨ua婧愪唬鐮乚http://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113192.htmlavataravatarWed, 21 Apr 2010 14:57:00 GMThttp://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113192.htmlhttp://www.shnenglu.com/iwangchuchu/comments/113192.htmlhttp://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113192.html#Feedback10http://www.shnenglu.com/iwangchuchu/comments/commentRss/113192.htmlhttp://www.shnenglu.com/iwangchuchu/services/trackbacks/113192.html鍥劇墖錛?
Click Here To EnLarge
緇忓吀濉旈槻娓告垙TowersTrap

榪欐槸涓緢緇忓吀鐨勫闃叉父鎴忥紝闈炲父鑰愮帺錛?鍠滄鐨勬湅鍙嬪彲浠ヨ瘯璇曘?

娓告垙浠嬬粛錛?鐜╄繃欖斿吔鐨勬湅鍙嬪簲璇ュ榪欎釜涓嶉檶鐢熶簡錛屾父鎴忎腑鍙湁涓涓嚭鍙o紝娓告垙鏈夊涓毦搴﹂夋嫨錛岀帺瀹跺繀欏誨湪"鎬?鍒拌揪鍑哄彛涔嬪墠娑堢伃瀹冧滑銆?br>
鎿嶄綔浠嬬粛錛氬厛紜畾濉旂殑綾誨瀷錛岀劧鍚庡湪鍥句腑浠繪剰浣嶇疆鏀句笅銆傜偣鍑誨凡寤洪犵殑濉斿悗濉旂殑涓婁笅浼氬嚭鐜版暟瀛楋紝鍒嗗埆鏄崌綰у拰鍑哄敭鐨勪環閽憋紝鍗囩駭濉斾篃寰堥噸瑕佸摝~


瀹夎璇存槑錛?
1.涓嬭澆瀹夎娓告垙寮曟搸love2d
http://www.love2d.org/download
2.涓嬭澆娓告垙鏂囦歡
http://219.136.249.30/svn_readonly/towerstrap/dist/towerstrap.love

3.娓告垙涓嬭澆鍒頒換鎰忕洰褰曞悗(娉ㄦ剰,love2d寮曟搸涓嶆敮鎸佷腑鏂囩洰褰?,鍙屽嚮towerstrap.love鏂囦歡灝卞彲浠ュ紑濮嬫父鎴忎簡

婧愪唬鐮侊細
svn:
http://219.136.249.30/svn_readonly/towerstrap/
浜ゆ祦璇峰姞qq緹?闃垮厹鏄嶡83086500


avatar 2010-04-21 22:57 鍙戣〃璇勮
]]>
Lua鑴氭湰璇硶璇存槑錛堜慨璁級http://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113190.htmlavataravatarWed, 21 Apr 2010 14:55:00 GMThttp://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113190.htmlhttp://www.shnenglu.com/iwangchuchu/comments/113190.htmlhttp://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113190.html#Feedback0http://www.shnenglu.com/iwangchuchu/comments/commentRss/113190.htmlhttp://www.shnenglu.com/iwangchuchu/services/trackbacks/113190.html
銆銆Lua 鐨勮娉曟瘮杈冪畝鍗曪紝瀛︿範璧鋒潵涔熸瘮杈冪渷鍔涳紝浣嗗姛鑳藉嵈騫朵笉寮便?br>銆銆鎵浠ワ紝鎴戝彧綆鍗曠殑褰掔撼涓涓婰ua鐨勪竴浜涜娉曡鍒欙紝浣跨敤璧鋒潵鏂逛究濂芥煡灝卞彲浠ヤ簡銆備及璁$湅瀹屼簡錛屽氨鎳傚緱鎬庝箞鍐橪ua紼嬪簭浜嗐?br>
銆銆鍦↙ua涓紝涓鍒囬兘鏄彉閲忥紝闄や簡鍏抽敭瀛椼?br>
I.  棣栧厛鏄敞閲?br>銆銆鍐欎竴涓▼搴忥紝鎬繪槸灝戜笉浜嗘敞閲婄殑銆?br>銆銆鍦↙ua涓紝浣犲彲浠ヤ嬌鐢ㄥ崟琛屾敞閲婂拰澶氳娉ㄩ噴銆?br>銆銆鍗曡娉ㄩ噴涓紝榪炵畫涓や釜鍑忓彿"--"琛ㄧず娉ㄩ噴鐨勫紑濮嬶紝涓鐩村歡緇埌琛屾湯涓烘銆傜浉褰撲簬C++璇█涓殑"http://"銆?br>銆銆澶氳娉ㄩ噴涓紝鐢?--[["琛ㄧず娉ㄩ噴寮濮嬶紝騫朵笖涓鐩村歡緇埌"]]"涓烘銆傝繖縐嶆敞閲婄浉褰撲簬C璇█涓殑"/*...*/"銆傚湪娉ㄩ噴褰撲腑錛?[["鍜?]]"鏄彲浠ュ祵濂楃殑錛?span style="COLOR: red">鍦╨ua5.1涓紝涓嫭鍙蜂腑闂存槸鍙互鍔犺嫢騫蹭釜"="鍙風殑錛屽 [==[ ... ]==]錛夛紝瑙佷笅闈㈢殑瀛楃涓茶〃紺鴻鏄庛?br>
II.  Lua緙栫▼
銆銆緇忓吀鐨?Hello world"鐨勭▼搴忔繪槸琚敤鏉ュ紑濮嬩粙緇嶄竴縐嶈璦銆傚湪Lua涓紝鍐欎竴涓繖鏍風殑紼嬪簭寰堢畝鍗曪細
銆銆print("Hello world")
銆銆鍦↙ua涓紝璇彞涔嬮棿鍙互鐢ㄥ垎鍙?錛?闅斿紑錛屼篃鍙互鐢ㄧ┖鐧介殧寮銆備竴鑸潵璇達紝濡傛灉澶氫釜璇彞鍐欏湪鍚屼竴琛岀殑璇濓紝寤鴻鎬繪槸鐢ㄥ垎鍙烽殧寮銆?br>銆銆Lua 鏈夊ソ鍑犵紼嬪簭鎺у埗璇彞錛屽錛?br>
鎺у埗璇彞 鏍煎紡 紺轟緥
If if 鏉′歡 then ... elseif 鏉′歡 then ... else ... end
if 1+1=2 then print("true")
elseif 1+2~=3 then print("true")
else print("false"end

While while 鏉′歡 do ... end
while 1+1~=2 do print("true"end

Repeat repeat ... until 鏉′歡
repeat print("Hello"until 1+1~=2

For for 鍙橀噺=鍒濆? 緇堢偣鍊? 姝ヨ繘 do ... end
for i = 1102 do print(i) end

For for 鍙橀噺1, 鍙橀噺2, ... 鍙橀噺n in 琛ㄦ垨鏋氫婦鍑芥暟 do ... end
for a,b in mylist do print(a, b) end


銆銆娉ㄦ剰涓涓嬶紝for鐨勫驚鐜彉閲忔繪槸鍙綔鐢ㄤ簬for鐨勫眬閮ㄥ彉閲忥紱褰撶渷鐣ユ榪涘兼椂錛宖or寰幆浼氫嬌鐢?浣滀負姝ヨ繘鍊箋?br>銆銆浣跨敤break鍙互鐢ㄦ潵涓涓涓驚鐜?br>銆銆鐩稿C璇█鏉ヨ錛孡ua鏈夊嚑涓湴鏂規槸鏄庢樉涓嶅悓鐨勶紝鎵浠ラ潰瑕佺壒鍒敞鎰忎竴涓嬶細

銆銆錛?strong>璇彞鍧?/strong>
銆銆銆銆璇彞鍧楀湪C涓槸鐢?{"鍜?}"鎷搗鏉ョ殑錛屽湪Lua涓紝瀹冩槸鐢╠o 鍜?end 鎷搗鏉ョ殑銆傛瘮濡傦細
銆銆銆銆do print("Hello") end
銆銆銆銆鍙互鍦?鍑芥暟 涓拰 璇彞鍧?/strong> 涓畾灞閮ㄥ彉閲忋?br>
銆銆錛?strong>璧嬪艱鍙?/strong>
銆銆銆銆璧嬪艱鍙ュ湪Lua琚己鍖栦簡銆傚畠鍙互鍚屾椂緇欏涓彉閲忚祴鍊箋?br>銆銆銆銆渚嬪錛?br>銆銆銆銆a,b,c,d=1,2,3,4
銆銆銆銆鐢氳嚦鏄細
銆銆銆銆a,b=b,a  -- 澶氫箞鏂逛究鐨勪氦鎹㈠彉閲忓姛鑳藉晩銆?br>銆銆銆銆鍦ㄩ粯璁ゆ儏鍐典笅錛屽彉閲忔繪槸璁や負鏄叏灞鐨勩傚亣濡傞渶瑕佸畾涔夊眬閮ㄥ彉閲忥紝鍒欏湪絎竴嬈¤祴鍊肩殑鏃跺欙紝闇瑕佺敤local璇存槑銆傛瘮濡傦細
銆銆銆銆local a,b,c = 1,2,3  -- a,b,c閮芥槸灞閮ㄥ彉閲?br>
銆銆錛?strong>鏁板艱繍綆?/strong>
銆銆銆銆鍜孋璇█涓鏍鳳紝鏀寔 +, -, *, /銆備絾Lua榪樺浜嗕竴涓?^"銆傝繖琛ㄧず鎸囨暟涔樻柟榪愮畻銆傛瘮濡?^3 緇撴灉涓?, 2^4緇撴灉涓?6銆?br>銆銆銆銆榪炴帴涓や釜瀛楃涓詫紝鍙互鐢?.."榪愬絎︺傚錛?br>銆銆銆銆"This a " .. "string." -- 絳変簬 "this a string"

銆銆錛?strong>姣旇緝榪愮畻
姣旇緝絎﹀彿 < > <= >= == ~=
鍚箟 灝忎簬 澶т簬 灝忎簬鎴栫瓑浜?/td> 澶т簬鎴栫瓑浜?/td> 鐩哥瓑 涓嶇浉絳?/td>

銆銆銆銆鎵鏈夎繖浜涙搷浣滅鎬繪槸榪斿洖true鎴杅alse銆?br>銆銆銆銆瀵逛簬Table錛孎unction鍜孶serdata綾誨瀷鐨勬暟鎹紝鍙湁 == 鍜?~=鍙互鐢ㄣ傜浉絳夎〃紺轟袱涓彉閲忓紩鐢ㄧ殑鏄悓涓涓暟鎹傛瘮濡傦細
銆銆銆銆a={1,2}
銆銆銆銆b
=a
銆銆銆銆
print(a==b, a~=b)  --杈撳嚭 true, false
銆銆銆銆a={1,2}
銆銆銆銆b
={1,2}
銆銆銆銆
print(a==b, a~=b)  --杈撳嚭 false, true


銆銆錛庨昏緫榪愮畻
銆銆銆銆and, or, not
銆銆銆銆鍏朵腑錛宎nd 鍜?or 涓嶤璇█鍖哄埆鐗瑰埆澶с?br>銆銆銆銆鍦ㄨ繖閲岋紝璇峰厛璁頒綇錛屽湪Lua涓紝鍙湁false鍜宯il鎵嶈綆椾負false錛屽叾瀹冧換浣曟暟鎹兘璁$畻涓簍rue錛?涔熸槸true錛?br>銆銆銆銆and 鍜?or鐨勮繍綆楃粨鏋滀笉鏄痶rue鍜宖alse錛岃屾槸鍜屽畠鐨勪袱涓搷浣滄暟鐩稿叧銆?br>銆銆銆銆a and b錛氬鏋渁涓篺alse錛屽垯榪斿洖a錛涘惁鍒欒繑鍥瀊
銆銆銆銆a or b錛氬鏋?a 涓簍rue錛屽垯榪斿洖a錛涘惁鍒欒繑鍥瀊

銆銆銆銆涓懼嚑涓緥瀛愶細
銆銆銆銆 print(4 and 5--杈撳嚭 5
銆銆銆銆 print(nil and 13--杈撳嚭 nil
銆銆銆銆 print(false and 13--杈撳嚭 false
銆銆銆銆 print(4 or 5--杈撳嚭 4
銆銆銆銆 print(false or 5--杈撳嚭 5

銆銆銆銆鍦↙ua涓繖鏄緢鏈夌敤鐨勭壒鎬э紝涔熸槸姣旇緝浠や漢娣鋒揣鐨勭壒鎬с?br>銆銆銆銆鎴戜滑鍙互妯℃嫙C璇█涓殑璇彞錛歺 = a? b : c錛屽湪Lua涓紝鍙互鍐欐垚錛歺 = a and b or c銆?br>銆銆銆銆鏈鏈夌敤鐨勮鍙ユ槸錛?x = x or v錛屽畠鐩稿綋浜庯細if not x then x = v end 銆?br>
銆銆錛庤繍綆楃浼樺厛綰э紝浠庝綆鍒伴珮欏哄簭濡備笅錛?br>
     or
     and
     <     >     <=    >=    ~=    ==
     .. (瀛楃涓茶繛鎺?
     +     -
     *     /     %
     not   #(lua5.1 鍙栭暱搴﹁繍綆?/span>)     - (涓鍏冭繍綆?
     ^
鍜孋璇█涓鏍鳳紝鎷彿鍙互鏀瑰彉浼樺厛綰с?br>
III.  鍏抽敭瀛?br>銆銆鍏抽敭瀛楁槸涓嶈兘鍋氫負鍙橀噺鐨勩侺ua鐨勫叧閿瓧涓嶅錛屽氨浠ヤ笅鍑犱釜錛?br>    
and break do else elseif
end false for function if
in local nil not or
repeat return then true until while

IV.  鍙橀噺綾誨瀷
銆銆鎬庝箞紜畾涓涓彉閲忔槸浠涔堢被鍨嬬殑鍛紵澶у鍙互鐢╰ype()鍑芥暟鏉ユ鏌ャ侺ua鏀寔鐨勭被鍨嬫湁浠ヤ笅鍑犵錛?br>
Nil 絀哄鹼紝鎵鏈夋病鏈変嬌鐢ㄨ繃鐨勫彉閲忥紝閮芥槸nil銆俷il鏃㈡槸鍊鹼紝鍙堟槸綾誨瀷銆?/td>
Boolean 甯冨皵鍊鹼紝鍙湁涓や釜鏈夋晥鍊鹼細true鍜宖alse
Number 鏁板鹼紝鍦↙ua閲岋紝鏁板肩浉褰撲簬C璇█鐨刣ouble
String 瀛楃涓詫紝濡傛灉浣犳効鎰忕殑璇濓紝瀛楃涓叉槸鍙互鍖呭惈"\0"瀛楃鐨勶紙榪欏拰C璇█鎬繪槸浠?\0"緇撳熬鏄笉涓鏍風殑錛?/td>
Table 鍏崇郴琛ㄧ被鍨嬶紝榪欎釜綾誨瀷鍔熻兘姣旇緝寮哄ぇ錛岃鍙傝冨悗闈㈢殑鍐呭銆?/td>
Function 鍑芥暟綾誨瀷錛屼笉瑕佹鐤戯紝鍑芥暟涔熸槸涓縐嶇被鍨嬶紝涔熷氨鏄錛屾墍鏈夌殑鍑芥暟錛屽畠鏈韓灝辨槸涓涓彉閲忋?/td>
Userdata 鍡紝榪欎釜綾誨瀷涓撻棬鐢ㄦ潵鍜孡ua鐨勫涓繪墦浜ら亾鐨勩傚涓婚氬父鏄敤C鍜孋++鏉ョ紪鍐欑殑錛屽湪榪欑鎯呭喌涓嬶紝Userdata鍙互鏄涓葷殑浠繪剰鏁版嵁綾誨瀷錛屽父鐢ㄧ殑鏈塖truct鍜屾寚閽堛?/td>
Thread 綰跨▼綾誨瀷錛屽湪Lua涓病鏈夌湡姝g殑綰跨▼銆侺ua涓彲浠ュ皢涓涓嚱鏁板垎鎴愬嚑閮ㄤ喚榪愯銆?/span>濡傛灉鎰熷叴瓚g殑璇濓紝鍙互鍘葷湅鐪婰ua鐨勬枃妗c?br>鐜板湪鍥炶繃澶存潵鐪嬬湅錛屽掕寰椾笉鏄嚎紼嬬被鍨嬨傚弽鑰岃薄鏄敤鏉ュ仛閬嶅巻鐨勶紝璞℃槸Iterator鍑芥暟銆?br>濡傦細
function range(n)
  local
= 0
  
while(i < n) do
    coroutine.yield( i )
    i = i + 1
  
end
end
鍙儨鐨勬槸瑕佺戶緇繍琛岋紝闇瑕乧oroutine.resume鍑芥暟錛屾湁鐐歸浮鑲嬨傝鎸囨暀銆?br>

V.  鍙橀噺鐨勫畾涔?br>銆銆鎵鏈夌殑璇█錛岄兘瑕佺敤鍒板彉閲忋傚湪Lua涓紝涓嶇鍦ㄤ粈涔堝湴鏂逛嬌鐢ㄥ彉閲忥紝閮戒笉闇瑕佸0鏄庯紝騫朵笖鎵鏈夌殑榪欎簺鍙橀噺鎬繪槸鍏ㄥ眬鍙橀噺錛岄櫎闈炴垜浠湪鍓嶉潰鍔犱笂"local"銆傝繖涓鐐硅鐗瑰埆娉ㄦ剰錛屽洜涓烘垜浠彲鑳芥兂鍦ㄥ嚱鏁伴噷浣跨敤灞閮ㄥ彉閲忥紝鍗村繕浜嗙敤local鏉ヨ鏄庛?br>銆銆鑷充簬鍙橀噺鍚嶅瓧錛屽畠鏄ぇ灝忓啓鐩稿叧鐨勩備篃灝辨槸璇達紝A鍜宎鏄袱涓笉鍚岀殑鍙橀噺銆?br>銆銆瀹氫箟涓涓彉閲忕殑鏂規硶灝辨槸璧嬪箋?錛?鎿嶄綔灝辨槸鐢ㄦ潵璧嬪肩殑
銆銆鎴戜滑涓璧鋒潵瀹氫箟鍑犵甯哥敤綾誨瀷鐨勫彉閲忓惂銆?br>銆銆A.  Nil
銆銆銆銆姝e鍓嶉潰鎵璇寸殑錛屾病鏈変嬌鐢ㄨ繃鐨勫彉閲忕殑鍊鹼紝閮芥槸Nil銆傛湁鏃跺欐垜浠篃闇瑕佸皢涓涓彉閲忔竻闄わ紝榪欐椂鍊欙紝鎴戜滑鍙互鐩存帴緇欏彉閲忚祴浠il鍊箋傚錛?br>
銆銆銆銆var1=nil  -- 璇鋒敞鎰?nbsp;nil 涓瀹氳灝忓啓

銆銆B.  Boolean
銆銆銆銆甯冨皵鍊奸氬父鏄敤鍦ㄨ繘琛屾潯浠跺垽鏂殑鏃跺欍傚竷灝斿兼湁涓ょ錛歵rue 鍜?false銆傚湪Lua涓紝鍙湁false鍜宯il鎵嶈璁$畻涓篺alse錛岃屾墍鏈変換浣曞叾瀹冪被鍨嬬殑鍊鹼紝閮芥槸true銆傛瘮濡?錛岀┖涓茬瓑絳夛紝閮芥槸true銆備笉瑕佽 C璇█鐨勪範鎯墍璇錛?鍦↙ua涓殑鐨勭‘紜槸true銆備綘涔熷彲浠ョ洿鎺ョ粰涓涓彉閲忚祴浠oolean綾誨瀷鐨勫鹼紝濡傦細
銆銆銆銆theBoolean = true

銆銆C.  Number
銆銆銆銆鍦↙ua涓紝鏄病鏈夋暣鏁扮被鍨嬬殑錛屼篃涓嶉渶瑕併備竴鑸儏鍐典笅錛屽彧瑕佹暟鍊間笉鏄緢澶э紙姣斿涓嶈秴榪?00,000,000,000,000錛夛紝鏄笉浼氫駭鐢熻垗鍏ヨ宸殑銆傚湪WindowsXP鑳借窇鐨勫綋浠婁富嫻丳C涓婏紝瀹炴暟鐨勮繍綆楀茍涓嶆瘮鏁存暟鎱€?br>銆銆銆銆瀹炴暟鐨勮〃紺烘柟娉曪紝鍚孋璇█綾諱技錛屽錛?br>銆銆銆銆4 0.4 4.57e-3 0.3e12 5e+20

銆銆D.  String
銆銆銆銆瀛楃涓詫紝鎬繪槸涓縐嶉潪甯稿父鐢ㄧ殑楂樼駭綾誨瀷銆傚湪Lua涓紝鎴戜滑鍙互闈炲父鏂逛究鐨勫畾涔夊緢闀垮緢闀跨殑瀛楃涓層?br>銆銆銆銆瀛楃涓插湪Lua涓湁鍑犵鏂規硶鏉ヨ〃紺猴紝鏈閫氱敤鐨勬柟娉曪紝鏄敤鍙屽紩鍙鋒垨鍗曞紩鍙鋒潵鎷搗涓涓瓧絎︿覆鐨勶紝濡傦細
銆銆銆銆"That's go!"
銆銆銆銆鎴?br>銆銆銆銆'Hello world!'

銆銆銆銆鍜孋璇█鐩稿悓鐨勶紝瀹冩敮鎸佷竴浜涜漿涔夊瓧絎︼紝鍒楄〃濡備笅錛?br>銆銆銆銆\a  bell
銆銆銆銆\b  back space
銆銆銆銆\f  form feed
銆銆銆銆\n  newline
銆銆銆銆\r  carriage return
銆銆銆銆\t  horizontal tab
銆銆銆銆\v  vertical tab
銆銆銆銆\\  backslash
銆銆銆銆\"  double quote
銆銆銆銆\"  single quote
銆銆銆銆\[  left square bracket
銆銆銆銆\]  right square bracket

銆銆銆銆鐢變簬榪欑瀛楃涓插彧鑳藉啓鍦ㄤ竴琛屼腑錛屽洜姝わ紝涓嶅彲閬垮厤鐨勮鐢ㄥ埌杞箟瀛楃銆傚姞鍏ヤ簡杞箟瀛楃鐨勪覆錛岀湅璧鋒潵瀹炲湪鏄笉鏁㈡伃緇達紝姣斿錛?br>銆銆銆銆"one line\nnext line\n\"in quotes\", "in quotes""
銆銆銆銆涓澶у爢鐨?\"絎﹀彿璁╀漢鐪嬭搗鏉ュ緢鍊掕儍鍙c傚鏋滀綘涓庢垜鏈夊悓鎰燂紝閭d箞錛屾垜浠湪Lua涓紝鍙互鐢ㄥ彟涓縐嶈〃紺烘柟娉曪細鐢?[["鍜?]]"灝嗗琛岀殑瀛楃涓叉嫭璧鋒潵銆傦紙lua5.1: 涓嫭鍙蜂腑闂村彲浠ュ姞鍏ヨ嫢騫蹭釜"="鍙鳳紝濡?[==[ ... ]==]錛岃瑙佷笅闈㈢ず渚?/span>錛?br>銆銆銆銆紺轟緥錛氫笅闈㈢殑璇彞鎵琛ㄧず鐨勬槸瀹屽叏鐩稿悓鐨勫瓧絎︿覆錛?br>
= 'alo\n123"'
= "alo\n123\""
= '\97lo\10\04923"'
= [[alo
123"
]]
= [==[
alo
123"
]==]

銆銆銆銆鍊煎緱娉ㄦ剰鐨勬槸錛屽湪榪欑瀛楃涓蹭腑錛屽鏋滃惈鏈夊崟鐙嬌鐢ㄧ殑"[["鎴?]]"灝變粛鐒跺緱鐢?\["鎴?\]"鏉ラ伩鍏嶆涔夈傚綋鐒訛紝榪欑鎯呭喌鏄瀬灝戜細鍙戠敓鐨勩?br>
銆銆E.  Table
銆銆銆銆鍏崇郴琛ㄧ被鍨嬶紝榪欐槸涓涓緢寮哄ぇ鐨勭被鍨嬨傛垜浠彲浠ユ妸榪欎釜綾誨瀷鐪嬩綔鏄竴涓暟緇勩傚彧鏄疌璇█鐨勬暟緇勶紝鍙兘鐢ㄦ鏁存暟鏉ヤ綔绱㈠紩錛涘湪Lua涓紝浣犲彲浠ョ敤浠繪剰綾誨瀷鏉ヤ綔鏁扮粍鐨勭儲寮曪紝闄や簡nil銆傚悓鏍鳳紝鍦–璇█涓紝鏁扮粍鐨勫唴瀹瑰彧鍏佽涓縐嶇被鍨嬶紱鍦↙ua涓紝浣犱篃鍙互鐢ㄤ換鎰忕被鍨嬬殑鍊兼潵浣滄暟緇勭殑鍐呭錛岄櫎浜唍il銆?br>銆銆銆銆Table鐨勫畾涔夊緢綆鍗曪紝瀹冪殑涓昏鐗瑰緛鏄敤"{"鍜?}"鏉ユ嫭璧蜂竴緋誨垪鏁版嵁鍏冪礌鐨勩傛瘮濡傦細
銆銆銆銆T1 = {}  -- 瀹氫箟涓涓┖琛?/span>
銆銆銆銆T1[1]=10  -- 鐒跺悗鎴戜滑灝卞彲浠ヨ薄C璇█涓鏍鋒潵浣跨敤瀹冧簡銆?/span>

銆銆銆銆T1["John"]={Age=27, Gender="Male"}
銆銆銆銆榪欎竴鍙ョ浉褰撲簬錛?br>銆銆銆銆T1
["John"]={}  -- 蹇呴』鍏堝畾涔夋垚涓涓〃錛岃繕璁板緱鏈畾涔夌殑鍙橀噺鏄痭il綾誨瀷鍚?/span>
銆銆銆銆T1["John"]["Age"]=27
銆銆銆銆T1
["John"]["Gender"]="Male"
銆銆銆銆褰撹〃鐨勭儲寮曟槸瀛楃涓茬殑鏃跺欙紝鎴戜滑鍙互綆鍐欐垚錛?br>銆銆銆銆T1.John
={}
銆銆銆銆T1.John.Age
=27
銆銆銆銆T1.John.Gender
="Male"
銆銆銆銆鎴?br>銆銆銆銆T1.John{Age
=27, Gender="Male"}
榪欐槸涓涓緢寮虹殑鐗規с?br>
銆銆銆銆鍦ㄥ畾涔夎〃鐨勬椂鍊欙紝鎴戜滑鍙互鎶婃墍鏈夌殑鏁版嵁鍐呭涓璧峰啓鍦?{"鍜?}"涔嬮棿錛岃繖鏍峰瓙鏄潪甯告柟渚匡紝鑰屼笖寰堝ソ鐪嬨傛瘮濡傦紝鍓嶉潰鐨凾1鐨勫畾涔夛紝鎴戜滑鍙互榪欎箞鍐欙細
銆銆銆銆T1=
銆銆銆銆{
銆銆銆銆銆銆
10,  -- 鐩稿綋浜?nbsp;[1] = 10
銆銆銆銆銆銆[100] = 40,
銆銆銆銆銆銆John
=  -- 濡傛灉浣犲師鎰忥紝浣犺繕鍙互鍐欐垚錛歔"John"] =
銆銆銆銆銆銆{
銆銆銆銆銆銆銆銆Age
=27,   -- 濡傛灉浣犲師鎰忥紝浣犺繕鍙互鍐欐垚錛歔"Age"] =27
銆銆銆銆銆銆銆銆Gender=Male   -- 濡傛灉浣犲師鎰忥紝浣犺繕鍙互鍐欐垚錛歔"Gender"] =Male
銆銆銆銆銆銆},
銆銆銆銆銆銆
20  -- 鐩稿綋浜?nbsp;[2] = 20
銆銆銆銆}

銆銆銆銆鐪嬭搗鏉ュ緢婕備寒錛屼笉鏄悧錛熸垜浠湪鍐欑殑鏃跺欙紝闇瑕佹敞鎰忎笁鐐癸細
銆銆銆銆絎竴錛屾墍鏈夊厓绱犱箣闂達紝鎬繪槸鐢ㄩ楀彿"錛?闅斿紑錛?br>銆銆銆銆絎簩錛屾墍鏈夌儲寮曞奸兘闇瑕佺敤"["鍜?]"鎷搗鏉ワ紱濡傛灉鏄瓧絎︿覆錛岃繕鍙互鍘繪帀寮曞彿鍜屼腑鎷彿錛?br>銆銆銆銆絎笁錛屽鏋滀笉鍐欑儲寮曪紝鍒欑儲寮曞氨浼氳璁や負鏄暟瀛楋紝騫舵寜欏哄簭鑷姩浠?寰鍚庣紪錛?br>
銆銆銆銆琛ㄧ被鍨嬬殑鏋勯犳槸濡傛鐨勬柟渚匡紝浠ヨ嚧浜庡父甯歌浜虹敤鏉ヤ唬鏇塊厤緗枃浠躲傛槸鐨勶紝涓嶇敤鎬鐤戯紝瀹冩瘮ini鏂囦歡瑕佹紓浜紝騫朵笖寮哄ぇ鐨勫銆?br>
銆銆F.  Function
銆銆銆銆鍑芥暟錛屽湪Lua涓紝鍑芥暟鐨勫畾涔変篃寰堢畝鍗曘傚吀鍨嬬殑瀹氫箟濡備笅錛?br>
銆銆銆銆function add(a,b)  -- add 鏄嚱鏁板悕瀛楋紝a鍜宐鏄弬鏁板悕瀛?/span>
銆銆銆銆 return a+b  -- return 鐢ㄦ潵榪斿洖鍑芥暟鐨勮繍琛岀粨鏋?/span>
銆銆銆銆end

銆銆銆銆璇鋒敞鎰忥紝return璇█涓瀹氳鍐欏湪end涔嬪墠銆傚亣濡傛垜浠潪瑕佸湪涓棿鏀句笂涓鍙eturn錛岄偅涔堝氨搴旇瑕佸啓鎴愶細do return end銆?br>銆銆銆銆榪樿寰楀墠闈㈣榪囷紝鍑芥暟涔熸槸鍙橀噺綾誨瀷鍚楋紵涓婇潰鐨勫嚱鏁板畾涔夛紝鍏跺疄鐩稿綋浜庯細
銆銆銆銆add = function (a,b) return a+end
褰撻噸鏂扮粰add璧嬪兼椂錛屽畠灝變笉鍐嶈〃紺鴻繖涓嚱鏁頒簡銆傛垜浠敋鑷沖彲浠ヨ祴緇檃dd浠繪剰鏁版嵁錛屽寘鎷琻il 錛堣繖鏍鳳紝璧嬪間負nil錛屽皢浼氭妸璇ュ彉閲忔竻闄わ級銆侳unction鏄笉鏄緢璞璇█鐨勫嚱鏁版寚閽堝憿錛?br>
銆銆銆銆鍜孋璇█涓鏍鳳紝Lua鐨勫嚱鏁板彲浠ユ帴鍙楀彲鍙樺弬鏁頒釜鏁幫紝瀹冨悓鏍鋒槸鐢?..."鏉ュ畾涔夌殑錛屾瘮濡傦細
銆銆銆銆function sum (a,b,)
濡傛灉鎯沖彇寰?..鎵浠h〃鐨勫弬鏁幫紝鍙互鍦ㄥ嚱鏁頒腑璁塊棶arg灞閮ㄥ彉閲忥紙琛ㄧ被鍨嬶級寰楀埌 (lua5.1: 鍙栨秷arg錛屽茍鐩存帴鐢?..."鏉ヤ唬琛ㄥ彲鍙樺弬鏁頒簡錛屾湰璐ㄨ繕鏄痑rg)銆?br>銆銆銆銆濡?sum(1,2,3,4)
銆銆銆銆鍒欙紝鍦ㄥ嚱鏁頒腑錛宎 = 1, b = 2, arg = {3, 4}  (lua5.1:  a = 1, b = 2, ... = {3, 4})
銆銆銆銆鏇村彲璐電殑鏄紝瀹冨彲浠ュ悓鏃惰繑鍥炲涓粨鏋滐紝姣斿錛?br>
銆銆銆銆function s()
銆銆銆銆銆銆
return 1,2,3,4
銆銆銆銆
end
銆銆銆銆a,b,c,d 
= s()  -- 姝ゆ椂錛宎 = 1, b = 2, c = 3, d = 4

銆銆銆銆鍓嶉潰璇磋繃錛岃〃綾誨瀷鍙互鎷ユ湁浠繪剰綾誨瀷鐨勫鹼紝鍖呮嫭鍑芥暟錛佸洜姝わ紝鏈変竴涓緢寮哄ぇ鐨勭壒鎬ф槸錛屾嫢鏈夊嚱鏁扮殑琛紝鍝︼紝鎴戞兂鏇存伆褰撶殑搴旇璇存槸瀵硅薄鍚с侺ua鍙互浣跨敤闈㈠悜瀵硅薄緙栫▼浜嗐備笉淇★紵涓句緥濡備笅錛?br>
銆銆銆銆t =
銆銆銆銆{
銆銆銆銆 Age 
= 27
銆銆銆銆 
add = function(self, n) self.Age = self.Age+end
銆銆銆銆}
銆銆銆銆
print(t.Age)  -- 27
銆銆銆銆t.add(t, 10)
銆銆銆銆
print(t.Age)  -- 37

銆銆銆銆涓嶈繃錛宼.add(t,10) 榪欎竴鍙ュ疄鍦ㄦ槸鏈夌偣鍦熷鍚э紵娌″叧緋伙紝鍦↙ua涓紝鎴戜滑鍙互綆鍐欐垚錛?br>
銆銆銆銆t:add(10)    -- 鐩稿綋浜?nbsp;t.add(t,10)

銆銆G.  Userdata 鍜?Thread
銆銆銆銆榪欎袱涓被鍨嬬殑璇濋錛岃秴鍑轟簡鏈枃鐨勫唴瀹癸紝灝變笉鎵撶畻緇嗚浜嗐?br>
VI.  緇撴潫璇?br>銆銆灝辮繖涔堢粨鏉熶簡鍚楋紵褰撶劧涓嶆槸錛屾帴涓嬫潵錛屾垜浠渶瑕佺敤Lua瑙i噴鍣紝鏉ュ府鍔╃悊瑙e拰瀹炶返浜嗐傜浉淇¤繖鏍蜂細鏇村揩鐨勫Lua涓婃墜浜嗐?br>銆銆灝辮薄C璇█涓鏍鳳紝Lua鎻愪緵浜嗙浉褰撳鐨勬爣鍑嗗嚱鏁版潵澧炲己璇█鐨勫姛鑳姐備嬌鐢ㄨ繖浜涙爣鍑嗗嚱鏁幫紝鍙互寰堟柟渚跨殑鎿嶄綔鍚勭鏁版嵁綾誨瀷錛屽茍澶勭悊杈撳叆杈撳嚭銆傛湁鍏寵繖鏂歸潰鐨勪俊鎭紝鎴戜滑鍙互鍙傝冦奝rogramming in Lua 銆嬩竴涔︼紝涔熷彲浠ュ湪緗戠粶涓婄洿鎺ヨ鐪嬬數瀛愮増錛岀綉鍧涓猴細http://www.lua.org/pil/index.html
銆銆
澶囨敞錛氭湰鏂囩殑閮ㄤ喚鍐呭鎽樸佽瘧鑷猯ua闅忔満鏂囨。銆?br>鐩稿叧閾炬帴錛?br>1. Lua 瀹樻柟緗戠珯錛?http://www.lua.org
2. Lua Wiki緗戠珯錛屼綘鍙互鍦ㄨ繖閲屾壘鍒板緢澶氱浉鍏崇殑璧勬枡錛屽鏂囨。銆佹暀紼嬨佹墿灞曪紝浠ュ強C/C++鐨勫寘瑁呯瓑錛?http://lua-users.org/wiki/
3. Lua 鎵撳寘涓嬭澆錛堝寘鎷悇縐嶅鉤鍙板拰緙栬瘧鍣ㄧ殑宸ョ▼鏂囦歡濡倂s2003,vs2005錛夛細http://luabinaries.luaforge.net/download.html

榪欐槸鎴戠紪璇戝ソ鐨凩ua5.02鐨勮В閲婂櫒錛?a >http://files.cnblogs.com/ly4cn/lua.zip


avatar 2010-04-21 22:55 鍙戣〃璇勮
]]>
Lua 鑴氭湰 C++ 灝佽搴?LuaWrapper http://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113186.htmlavataravatarWed, 21 Apr 2010 14:46:00 GMThttp://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113186.htmlhttp://www.shnenglu.com/iwangchuchu/comments/113186.htmlhttp://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113186.html#Feedback0http://www.shnenglu.com/iwangchuchu/comments/commentRss/113186.htmlhttp://www.shnenglu.com/iwangchuchu/services/trackbacks/113186.html

杞澆錛?http://www.d2-life.com/LBS/blogview.asp?logID=41

銆銆浣跨敤Lua浣滆剼鏈紝涓昏鏄洜涓哄畠灝忓閥鐜茬彂錛堜綋縐皬錛岃繍琛屽揩錛夛紝鑰屼笖瀹冪殑璇硶鍙堟瘮杈冪畝鍗曟槑浜嗐備笉榪囷紝浣跨敤LuaAPI灝哃ua寮曟搸闆嗘垚鍒扮▼搴忎腑錛岀‘瀹炴湁涓浜涗笉鏂逛究鈥斺旂敤钀芥湪闅忛緗戝弸鐨勮瘽鏉ヨ錛屽氨鏄?灝辮薄鐢ㄦ眹緙?銆傚綋鐒訛紝鐜板湪浣犱笉鐢ㄥ啀榪欎箞杈涜嫤浜嗭紝鍥犱負浣犲彲浠ヤ嬌鐢↙uaWrapper For C++銆備嬌鐢ㄨ繖涓伐鍏鳳紝鍦–++涓泦鎴怢ua鑴氭湰灝辨槸杞昏屾槗涓劇殑浜嬨備綘鍘熸湁鐨凜++鍑芥暟鍜岀被錛屽嚑涔庝笉闇瑕佷換浣曟敼鍙橈紝灝卞彲浠ヤ笌Lua鑴氭湰鍏變韓銆?br>

浣滆咃細 娌愭灚 錛堢浜屼漢鐢熸垚鍛橈級
鐗堟潈鎵鏈夎漿杞借娉ㄦ槑鍘熷嚭澶?br>涓婚〉錛氱浜屼漢鐢?http://www.d2-life.com
銆銆銆http://www.d2-life.com/LBS/blogview.asp?logID=41

涓轟粈涔堣鐢↙ua浣滆剼鏈紵
銆銆浣跨敤Lua浣滆剼鏈紝涓昏鏄洜涓哄畠灝忓閥鐜茬彂錛堜綋縐皬錛岃繍琛屽揩錛夛紝鑰屼笖瀹冪殑璇硶鍙堟瘮杈冪畝鍗曟槑浜嗐備笉榪囷紝浣跨敤LuaAPI灝哃ua寮曟搸闆嗘垚鍒扮▼搴忎腑錛岀‘瀹炴湁涓浜涗笉鏂逛究鈥斺旂敤钀芥湪闅忛緗戝弸鐨勮瘽鏉ヨ錛屽氨鏄?灝辮薄鐢ㄦ眹緙?銆傚綋鐒訛紝鐜板湪浣犱笉鐢ㄥ啀榪欎箞杈涜嫤浜嗭紝鍥犱負浣犲彲浠ヤ嬌鐢↙uaWrapper For C++銆備嬌鐢ㄨ繖涓伐鍏鳳紝鍦–++涓泦鎴怢ua鑴氭湰灝辨槸杞昏屾槗涓劇殑浜嬨備綘鍘熸湁鐨凜++鍑芥暟鍜岀被錛屽嚑涔庝笉闇瑕佷換浣曟敼鍙橈紝灝卞彲浠ヤ笌Lua鑴氭湰鍏變韓銆?br>銆銆鎴戜滑鎺ヤ笅鏉ワ紝鐢ㄥ疄渚嬫潵璇存槑錛屽浣曠敤LuaWrapper鏉ラ泦鎴怢ua鑴氭湰鍒頒綘鐨勭▼搴忎腑鍘匯?br>
1.  鍒涘緩Lua寮曟搸
銆銆LuaWrap lua; 鎴栬?LuaWrap* lua = new LuaWrap;
銆銆鍒涘緩涓涓狶uaWrap瀵硅薄錛屽氨鏄垱寤轟竴涓狶ua鑴氭湰寮曟搸銆傚茍涓旀牴鎹甃ua鐨勭壒鎬э紝浣犲彲浠ュ垱寤轟換鎰忓涓狶ua寮曟搸錛岀敋鑷沖彲浠ュ垎甯冨湪涓嶅悓鐨勭嚎紼嬪綋涓?br>
2.  瑁呰澆騫舵墽琛岃剼鏈▼搴?br>銆銆浣犲彲浠ヤ粠緙撳啿鍖轟腑瑁呰澆Lua鑴氭湰錛?br>銆銆lua.LoadString(
銆銆銆銆"print('Hello World')"
銆銆);
銆銆褰撶劧錛屼綘涔熷彲浠ヤ粠鏂囦歡涓鍏ワ紝騫舵墽琛孡ua鑴氭湰錛?br>銆銆Lua.LoadFile("./test.lua");
銆銆Lua鐨勮剼鏈紝鍙互鏄簮浠g爜錛屼篃鍙互緇忚繃緙栬瘧鍚庣殑涓棿浠g爜銆備篃璁鎬綘瀵圭紪璇戝悗鐨勪腑闂翠唬鐮佹洿鎰熷叴瓚b斺斿鏋滀綘涓嶅笇鏈涜婧愪唬鐮佽丹瑁歌8鐨勮闇插湪澶у鐨勭溂鍓嶃?br>
3.  鑾峰彇鍜岃緗甃ua鍙橀噺
銆銆鑳藉鑾峰彇鍜岃緗剼鏈彉閲忕殑鍐呭錛屾槸涓涓渶鍩烘湰鐨勫姛鑳姐備綘鍙互浣跨敤GetGlobal鍜孲etGlobal鍑芥暟鏉ュ仛鍒拌繖涓鐐癸細
銆銆(1)  鑾峰彇鍙橀噺錛?br>銆銆銆銆int a = lua.GetGlobal<int>("a");
銆銆銆銆LuaTable table = lua.GetGlobal<LuaTable>("t");
銆銆銆銆榪欓噷錛?lt;> 閲屽ご鐨勭被鍨嬶紝灝辨槸鎯寵鐨勫彉閲忕殑綾誨瀷銆?br>銆銆(2)  璁劇疆鍙橀噺錛?br>銆銆銆銆lua.SetGlobal("a", a);
銆銆銆銆lua.SetGlobal("t", table);

4.  璋冪敤Lua鍑芥暟
銆銆浣跨敤Call鍑芥暟錛屽氨鍙互寰堢畝鍗曠殑浠庝綘鐨勭▼搴忎腑璋冪敤Lua鍑芥暟錛?br>銆銆lua.Call<void>("print", "Hello World");
銆銆int sum = lua.Call<int>("add", 2, 3);
銆銆榪欓噷錛?lt;> 閲屽ご鐨勭被鍨嬫槸榪斿洖鍊肩殑綾誨瀷銆?br>
5.  濡備綍璁㎜ua涔熻兘璋冪敤C++鐨勫嚱鏁?br>銆銆綺鵑噰鐨勫湴鏂規潵浜嗐傚亣濡傛湁涓嬮潰榪欐牱鐨勪竴涓嚱鏁幫細
銆銆int add(int a, int b)
銆銆{
銆銆銆銆return a + b;
銆銆}
銆銆濡傛灉鎯寵瀹冭兘澶熻Lua浣跨敤錛屽彧闇灝嗗畠娉ㄥ唽鍒癓ua寮曟搸褰撲腑灝卞彲浠ヤ簡錛?br>銆銆lua.RegisterFunc("add", int(int,int), add);
銆銆榪欐牱錛孡ua涓氨鍙互鐢ㄧ洿鎺ヤ嬌鐢ㄤ簡錛?br>銆銆錛圠ua鑴氭湰錛塻um = add(1, 3)

銆銆(*) RegisterFunc鐨勫姛鑳斤紝灝辨槸璁╀綘鎶奀++鐨勫嚱鏁版敞鍐屽埌Lua涓紝渚汱ua鑴氭湰浣跨敤銆?br>銆銆銆銆絎竴涓弬鏁幫紝鏄兂瑕佸湪Lua涓敤鐨勫嚱鏁板悕銆?br>銆銆銆銆絎簩涓弬鏁幫紝鏄疌++涓嚱鏁扮殑鍘熷瀷錛?C++鍏佽鍑芥暟閲嶈澆鐨勶紝浣犲彲浠ヤ嬌鐢ㄥ嚱鏁板師鍨嬶紝鏉ラ夋嫨闇瑕佹敞鍐屽埌Lua寮曟搸涓殑閭d釜鍑芥暟銆?br>銆銆銆銆絎笁涓弬鏁幫紝灝辨槸C++涓嚱鏁扮殑鎸囬拡浜嗐?br>
6.  濡備綍鑳借C++鐨勭被鍦↙ua涓嬌鐢?br>銆銆鎴戜滑鍏堢湅鐪嬩笅闈㈣繖涓狢++綾伙細
class MyArray
{
  std::vector<double> array;
public:
  void setvalue(int index, double value);
  double getvalue(int index);
  int size();
  const char* ToString();
};

銆銆浣犲噯澶囪璁㎜ua鑳藉鑷敱璁塊棶騫舵搷浣滆繖涓被銆傚緢綆鍗曪紝浣犲彧闇澧炲姞鍑犱釜瀹忓畾涔夊氨鍙互浜嗭細

class MyArray
{
  std::vector<double> array;
public:
  void setvalue(int index, double value);
  double getvalue(int index);
  int size();
  const char* ToString();
  // 灝嗕竴涓?class 浣滀負涓涓?Lua 瀵硅薄鏄緢瀹規槗鐨勶紝鍙渶瑕佸鍔犱互涓嬪畯瀹氫箟銆?br>  DEFINE_TYPENAME("My.array");
  BEGIN_REGLUALIB("array")
      LUALIB_ITEM_CREATE("new", MyArray )  // 鍒涘緩MyArray 
      LUALIB_ITEM_DESTROY("del", MyArray )  // 娑堥櫎MyArray銆?br>  END_REGLUALIB()
  BEGIN_REGLUALIB_MEMBER()
    LUALIB_ITEM_FUNC("size", int (MyArray*), &MyArray::size)
    LUALIB_ITEM_FUNC("__getindex", double(MyArray*, int), &MyArray::getvalue)  
    LUALIB_ITEM_FUNC("__newindex", void (MyArray*, int, double), &MyArray::setvalue)
    LUALIB_ITEM_FUNC("__tostring", const char* (MyArray*), &MyArray::ToString)
    LUALIB_ITEM_DESTROY("__gc", MyArray )   // 鍨冨溇鏀墮泦鏃舵秷闄ゅ璞$敤銆?br>  END_REGLUALIB_MEMBER()
};

銆銆鍙鏈変簡榪欎簺瀹忓畾涔夛紝榪欎釜綾誨氨鏄彲浠ュ湪Lua涓嬌鐢ㄧ殑綾諱簡錛屾垜浠氨鍙互鍦↙ua涓敞鍐岃繖涓被浜嗭細
銆銆lua.Register<MyArray>()

銆銆榪欐牱娉ㄥ唽浠ュ悗錛屾垜浠湪Lua涓氨鍙互浣跨敤榪欎釜綾諱簡錛?br>銆銆a = array.new()  -- 鍒涘緩瀵硅薄錛岀浉褰撲簬 a = new Myarray
銆銆a[1] = 10  -- 璋冪敤__newindex錛屼篃灝辨槸C++涓殑 a->setvalue(1, 10)
銆銆a[2] = 20  -- 璋冪敤__newindex錛屼篃灝辨槸C++涓殑 a->setvalue(2, 20)
銆銆print(
銆銆銆銆a,  -- 璋冪敤 __tostring錛屼篃灝辨槸C++涓殑 a->ToString()
銆銆銆銆a:size(), -- 鐩稿綋浜嶤++涓殑 a->size()
銆銆銆銆a[1], -- 璋冪敤__getindex錛屼篃灝辨槸C++涓殑a->getvalue(1)
銆銆銆銆a[2]) --璋冪敤__getindex錛屼篃灝辨槸C++涓殑a->getvalue(2)
銆銆array.del(a)  -- 娓呴櫎瀵硅薄錛岀浉褰撲簬 delete a
銆銆a = nil  -- 娓呯┖ a錛屽緢璞++涓殑 a = NULL

銆銆褰撶劧錛屼綘涔熷彲浠ヤ笉鐢╠el榪欎釜瀵硅薄錛岃屾槸絳夊緟Lua甯綘鑷姩榪涜鍨冨溇鍥炴敹銆傚湪Lua榪涜鍨冨溇鍥炴敹鏃訛紝瀹冧細鑷姩璋冪敤榪欎釜瀵硅薄鐨?__gc 錛岀浉褰撲簬 delete銆?br>
銆銆閭d箞錛屽湪C++涓鍒涘緩MyArray瀵硅薄錛屽茍涓斾紶閫掔粰Lua鍏ㄥ眬鍙橀噺鎬庝箞鍔烇紵灝辮薄鍓嶉潰璁茶繃鐨勪竴鏍鳳紝浣跨敤SetGlobal錛?br>銆銆MyArray* a = new MyArray;
銆銆lua.SetGlobal("a", a);
銆銆瑕佽幏鍙栬瀵硅薄錛屽悓鏍風殑錛屽簲璇ヤ嬌鐢℅etGlobal錛?br>銆銆MyArray* a = lua.GetGlobal<MyArray>("a");
銆銆
銆銆瀵逛簬浼犻掔粰Lua鐨勫璞★紝灝辮Lua鏉ョ鐞嗚瀵硅薄鐨勭敓瀛樺懆鏈熷ソ浜嗐傚鏋滀綘闈炶鍒犻櫎瀹冪殑璇濓紝浣犲彲浠ヤ嬌鐢―elGlobalObject錛?br>銆銆lua.DelGlobalObject<MyArray>("a");
銆銆涓嶈繃榪欎箞鍋氱殑璇濓紝浣犲簲褰撴槑鐧戒綘鍦ㄥ仛浠涔堬紝鍥犱負鍦↙ua鐨勮剼鏈腑錛屽彲鑳藉凡緇忓湪澶氬寮曠敤浜嗚繖涓璞′簡銆傚垹闄や簡鍏朵腑涓涓紝灝嗗鑷村叾瀹冨紩鐢ㄥ璞″け鏁堬紝浠庤屽彲鑳藉紩鑷寸郴緇熷穿婧冦?br>
銆銆(1)  DEFINE_TYPENAME("My.array");
銆銆銆銆瀹氫箟綾誨瀷鐨勫悕縐般傚湪Lua涓紝榪欎釜綾誨瀷鍚嶇О鏄敮涓鐢ㄦ潵璇嗗埆C++綾誨瀷鐨勶紝浣犲繀欏諱負涓嶅悓鐨勫璞$粰浜堜笉鍚岀殑鍚嶇О銆?br>
銆銆(2)  BEGIN_REGLUALIB("array") ... END_REGLUALIB()
銆銆銆銆浣犲彲浠ヤ負涓涓璞″畾涔変竴涓▼搴忓簱錛?array"灝辨槸紼嬪簭搴撶殑鍚嶅瓧銆傚湪紼嬪簭搴撲腑瀹氫箟鐨勫嚱鏁版槸鍏ㄥ眬鍑芥暟錛屽湪Lua涓紝浣跨敤璇ュ嚱鏁幫紝闇瑕佸湪鍑芥暟鍓嶅姞涓婂簱鐨勫悕瀛楋紝濡傦細array.new錛堬級銆傞氬父錛岀▼搴忓簱浼氬寘鍚垱寤哄璞$殑鏂規硶銆傚錛?br>銆銆銆銆LUALIB_ITEM_CREATE("new", MyArray )  // 鍒涘緩MyArray

銆銆銆銆榪欐牱瀛愶紝浣犳墠鑳藉湪Lua涓垱寤篗yArray錛?br>銆銆銆銆a = array.new()
銆銆
銆銆銆銆浣犱篃鍙互閫夋嫨澧炲姞涓涓垹闄ゅ璞℃搷浣滐細
銆銆銆銆LUALIB_ITEM_DESTROY("del", MyArray )   // 鍒犻櫎MyArray
銆銆銆銆榪欐牱錛屼綘灝卞彲浠ョ洿鎺ュ垹闄や竴涓璞′簡錛?br>銆銆銆銆array.del(a)

銆銆(3)  BEGIN_REGLUALIB_MEMBER() ...END_REGLUALIB_MEMBER()
銆銆銆銆鍦ㄦ澶勶紝浣犲彲浠ュ畾涔夊璞$殑鎴愬憳鍑芥暟錛屼篃鍙互閲嶈澆瀵硅薄鐨勬搷浣滅鈥斺旀槸鐨勶紝灝辮薄C++鐨刼perator閲嶈澆銆備緥濡傦細
銆銆銆銆LUALIB_ITEM_FUNC("__newindex", void (MyArray*, int, double), &MyArray::setvalue)
銆銆銆銆灝辨槸閲嶈澆 operator[] 鎿嶄綔絎︺侺ua涓彲閲嶈澆鐨勬搷浣滅榪樻湁璁稿錛屽錛?br>
銆銆銆銆__getindex錛氭搷浣滅[]錛屾敮鎸佽鍙栬闂紝濡?v = a[10]
銆銆銆銆__newindex錛氭搷浣滅[]錛屾敮鎸佽祴鍊艱闂紝濡?a[10] = 1.22
銆銆銆銆__tostring錛氬皢鍙橀噺杞崲鎴愬瓧涓瞋_add錛氱瓑鍚屼簬operator +
銆銆銆銆__add錛氭搷浣滅 錛?br>銆銆銆銆__sub錛氭搷浣滅 -
銆銆銆銆__mul錛氭搷浣滅 ×
銆銆銆銆__div錛氭搷浣滅 ÷
銆銆銆銆__pow錛氭搷浣滅 ^ (涔樻柟)
銆銆銆銆__unm錛氫竴鍏冩搷浣滅 -
銆銆銆銆__concat錛氭搷浣滅 .. (瀛楃涓茶繛鎺?
銆銆銆銆__eq錛氭搷浣滅 == (a ~= b絳変環浜?not a == b)
銆銆銆銆__lt錛氭搷浣滅 < (a > b 絳変環浜?b < a)
銆銆銆銆__le錛氭搷浣滅 <= (a >= b 絳変環浜?b <= a錛岃娉ㄦ剰鐨勬槸錛屽鏋滄病鏈夊畾涔?__le"錛屽垯Lua灝嗕細灝濊瘯灝哸<=b 杞崲鎴?not (b < a) )

銆銆銆銆__gc錛氬湪鍨冨溇鍥炴敹鏃惰皟鐢ㄦ鍑芥暟錛岀浉褰撲簬C++鐨勬瀽鏋勫嚱鏁般傚己鐑堝緩璁畾涔夋鎿嶄綔絎︼紝浠ュ厤閫犳垚鍐呭瓨娉勬紡絳夋儏鍐點傛瘮濡傦細
銆銆銆銆LUALIB_ITEM_DESTROY("__gc", MyArray )   // 鍨冨溇鏀墮泦鏃舵秷闄ゅ璞$敤銆?br>
銆銆銆銆(娉? 榪欓噷瑕佽鏄庝竴涓嬶紝鍦╨ua涓紝璁塊棶绱㈠紩鎿嶄綔絎︽槸__index錛屼笉鏄痏_getindex錛屽湪luaWrapper搴撲腑錛屼負浜嗘柟渚夸嬌鐢紝灝嗗叾鏄犲皠涓篲_getindex錛屽悓鏃訛紝瀵筥_index鐨勫畾涔夊皢浼氳蹇界暐銆?br>
銆銆銆銆灝辮繖涔堢畝鍗曘傚亣濡備綘宸茬粡鏈夌幇鎴愮殑綾伙紝鑰屼綘娌℃湁淇敼璇ョ被鐨勬潈鍔涳紝濡備綍灝嗗叾鍔犲叆鍒癓ua涓憿錛熺瓟妗堝氨鏄紝緇ф壙瀹冿紝灝嗘妸媧劇敓綾誨姞鍏ュ埌Lua涓?br>
緇撴潫璇?br>銆銆LuaWrapper 闇瑕佺敤鍒癰oost搴撶殑鏀寔錛歜oost/type_traits.hpp, boost/function.hpp, boost/bind.hpp錛屽畠浣跨敤浜咰++鐨勬ā鏉塊儴浠界壒鍖栵紝鍥犳錛孋++緙栬瘧鍣ㄥ鏋滀笉鏀寔姝ょ壒鎬э紝灝嗘棤娉曠紪璇戙傜洰鍓嶆敮鎸佹鐗規х殑緙栬瘧鍣ㄥ凡緇忔湁寰堝銆傚湪VisualStudo浜у搧緋誨垪涓紝鍙湁VC7.1鑳芥敮鎸佹鐗規э紝鍥犳錛屾偍濡傛灉姝e湪浣跨敤VisualStudio錛岃紜浣犵敤鐨勬槸VisualStudio2003銆?br>銆銆濡傛灉浣犺寰?LuaWrapper For C++ 鑳藉甯姪浣狅紝鎴戜細鎰熻寰堣崳騫搞傛垜寰堟効鎰忓皢榪欎釜紼嬪簭搴撳垎浜粰澶у銆傞『渚夸竴鎻愮殑鏄紝濡傛灉浣犲湪浣跨敤榪囩▼涓彂鐜癇UG錛屾垨鏄湁濂界殑寤鴻錛屽笇鏈涙偍鑳戒笌鎴戣仈緋匯備綘鍦ㄤ嬌鐢ㄨ繃紼嬩腑錛岃涓嶈鍒犻櫎鏂囦歡涓殑緗插悕淇℃伅錛涘鏋滀綘淇敼浜嗙▼搴忓簱錛岃鎮ㄥ湪淇敼鐨勬枃浠朵腑鍔犲叆鎮ㄧ殑淇敼璇存槑銆傚綋鐒訛紝鎴戜細闈炲父嬈㈣繋鎮ㄨ兘灝嗕慨鏀瑰悗鐨勭▼搴忓洖棣堢粰鎴戙傛垜浼氱戶緇紭鍖栧茍瀹屽杽瀹冦?br>



avatar 2010-04-21 22:46 鍙戣〃璇勮
]]>
銆愯漿璐淬戜嬌鐢?Lua 緙栧啓鍙祵鍏ュ紡鑴氭湰 http://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113184.htmlavataravatarWed, 21 Apr 2010 14:44:00 GMThttp://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113184.htmlhttp://www.shnenglu.com/iwangchuchu/comments/113184.htmlhttp://www.shnenglu.com/iwangchuchu/archive/2010/04/21/113184.html#Feedback0http://www.shnenglu.com/iwangchuchu/comments/commentRss/113184.htmlhttp://www.shnenglu.com/iwangchuchu/services/trackbacks/113184.html

浣跨敤 Lua 緙栧啓鍙祵鍏ュ紡鑴氭湰

Lua 鎻愪緵浜嗛珮綰ф娊璞★紝鍗村張娌″け鍘諱笌紜歡鐨勫叧鑱?/p>
灝嗘欏典綔涓虹數瀛愰偖浠跺彂閫?src="http://www.ibm.com/i/v14/icons/em.gif"

灝嗘欏典綔涓虹數瀛愰偖浠跺彂閫?/font>



綰у埆: 鍒濈駭

Martin Streicher (martin.streicher@linux-mag.com), 棣栧腑緙栬緫, Linux Magazine

2006 騫?6 鏈?12 鏃?/p>

铏界劧緙栬瘧鎬х紪紼嬭璦鍜岃剼鏈璦鍚勮嚜鍏鋒湁鑷繁鐙壒鐨勪紭鐐癸紝浣嗘槸濡傛灉鎴戜滑浣跨敤榪欎袱縐嶇被鍨嬬殑璇█鏉ョ紪鍐欏ぇ鍨嬬殑搴旂敤紼嬪簭浼氭槸浠涔堟牱瀛愬憿錛烲ua 鏄竴縐嶅祵鍏ュ紡鑴氭湰璇█錛屽畠闈炲父灝忥紝閫熷害寰堝揩錛屽姛鑳藉嵈闈炲父寮哄ぇ銆傚湪鍒涘緩鍏朵粬閰嶇疆鏂囦歡鎴栬祫婧愭牸寮忥紙浠ュ強涓庝箣瀵瑰簲鐨勮В鏋愬櫒錛変箣鍓嶏紝璇峰皾璇曚竴涓?Lua銆?/blockquote>

灝界璇稿 Perl銆丳ython銆丳HP 鍜?Ruby 涔嬬被鐨勮В閲婃х紪紼嬭璦鏃ョ泭琚?Web 搴旂敤紼嬪簭騫挎硾鍦伴噰綰?鈥斺?瀹冧滑宸茬粡闀挎湡鐢ㄦ潵瀹炵幇鑷姩鍖栫郴緇熺鐞嗕換鍔?鈥斺?浣嗘槸璇稿 C銆丆++ 涔嬬被鐨勭紪璇戞х紪紼嬭璦渚濈劧鏄繀闇鐨勩傜紪璇戞х紪紼嬭璦鐨勬ц兘鏄剼鏈璦鎵鏃犳硶浼佸強鐨勶紙鍙湁鎵嬪伐璋冧紭鐨勬眹緙栫▼搴忕殑鎬ц兘鎵嶈兘瓚呰繃瀹冿級錛屾湁浜涜蔣浠?鈥斺?鍖呮嫭鎿嶄綔緋葷粺鍜岃澶囬┍鍔ㄧ▼搴?鈥斺?鍙兘浣跨敤緙栬瘧浠g爜鏉ラ珮鏁堝湴瀹炵幇銆傚疄闄呬笂錛屽綋杞歡鍜岀‖浠墮渶瑕佽繘琛屾棤緙濆湴榪炴帴鎿嶄綔鏃訛紝紼嬪簭鍛樻湰鑳藉湴灝變細閫夋嫨 C 緙栬瘧鍣細C 闈炲父鍩虹錛岃窛紱?“鍘熷閲戝睘鏉愭枡闈炲父榪?#8221; 鈥斺?鍗沖彲浠ユ搷浣滅‖浠剁殑寰堝鐗規?鈥斺?騫朵笖 C 鐨勮〃鐜板姏闈炲父寮哄ぇ錛屽彲浠ユ彁渚涢珮綰х紪紼嬬粨鏋勶紝渚嬪緇撴瀯銆佸驚鐜佸懡鍚嶅彉閲忓拰浣滅敤鍩熴?/p>

鐒惰岋紝鑴氭湰璇█涔熸湁鑷繁鐙壒鐨勪紭鐐廣備緥濡傦紝褰撴煇縐嶈璦鐨勮В閲婂櫒琚垚鍔熺Щ妞嶅埌涓縐嶅鉤鍙頒笂浠ュ悗錛屼嬌鐢ㄨ繖縐嶈璦緙栧啓鐨勫ぇ閲忚剼鏈氨鍙互涓嶅姞浠諱綍淇敼鍦ㄨ繖縐嶆柊騫沖彴涓婅繍琛?鈥斺?瀹冧滑娌℃湁璇稿緋葷粺鐗瑰畾鐨勫嚱鏁板簱涔嬬被鐨勪緷璧栭檺鍒躲傦紙鎴戜滑鍙互鑰冭檻涓涓?Microsoft® Windows® 鎿嶄綔緋葷粺涓婄殑璁稿 DLL 鏂囦歡鍜?UNIX® 鍙?Linux® 涓婄殑寰堝 libcs錛夈傚彟澶栵紝鑴氭湰璇█閫氬父閮借繕浼氭彁渚涢珮綰х紪紼嬫瀯閫犲拰渚垮埄鐨勬搷浣滐紝紼嬪簭鍛樺彲浠ヤ嬌鐢ㄨ繖浜涘姛鑳芥潵鎻愰珮鐢熶駭鏁堢巼鍜岀伒媧繪с傚彟澶栵紝浣跨敤瑙i噴璇█鏉ョ紪紼嬬殑紼嬪簭鍛樺伐浣滅殑閫熷害鏇村揩錛屽洜涓鴻繖涓嶉渶瑕佺紪璇戝拰閾炬帴鐨勬楠ゃ侰 鍙婂叾綾諱技璇█涓殑 “緙栫爜銆佺紪璇戙侀摼鎺ャ佽繍琛?#8221; 鍛ㄦ湡緙╁噺鎴愪簡鏇翠負绱у噾鐨?“緙栧啓鑴氭湰銆佽繍琛?#8221;銆?/p>

Lua 鏂扮壒鎬?/font>

涓庡叾浠栬剼鏈璦涓鏍鳳紝Lua 涔熸湁鑷繁鐨勪竴浜涚壒鎬э細

  • Lua 綾誨瀷銆?/strong>鍦?Lua 涓紝鍊煎彲浠ユ湁綾誨瀷錛屼絾鏄彉閲忕殑綾誨瀷閮芥槸鍔ㄦ佸喅瀹氱殑銆?em>nil銆佸竷灝斿瀷銆佹暟瀛?/em> 鍜?瀛楃涓?/em> 綾誨瀷鐨勫伐浣滄柟寮忎笌鎴戜滑鏈熸湜鐨勪竴鏍楓?
    • Nil 鏄間負 nil 鐨勪竴縐嶇壒孌婄被鍨嬶紝鐢ㄦ潵琛ㄧず娌℃湁鍊箋?
    • 甯冨皵鍨嬬殑鍊煎彲浠ユ槸 true 鍜?false 甯擱噺銆傦紙Nil 涔熷彲浠ヨ〃紺?false錛屼換浣曢潪 nil 鐨勫奸兘琛ㄧず true銆傦級
    • Lua 涓墍鏈夌殑鏁板瓧閮芥槸鍙岀簿搴︾殑錛堜笉榪囨垜浠彲浠ラ潪甯哥畝渚垮湴緙栧啓涓浜涗唬鐮佹潵瀹炵幇鍏朵粬鏁板瓧綾誨瀷錛夈?
    • 瀛楃涓叉槸瀹氶暱瀛楃鏁扮粍銆傦紙鍥犳錛岃鍦ㄤ竴涓瓧絎︿覆鍚庨潰闄勫姞涓婂瓧絎︼紝蹇呴』瀵瑰叾榪涜鎷瘋礉銆傦級
  • 琛ㄣ佸嚱鏁?/em> 鍜?em>綰跨▼ 綾誨瀷閮芥槸寮曠敤銆傛瘡涓兘鍙互璧嬪肩粰涓涓彉閲忥紝浣滀負鍙傛暟浼犻掞紝鎴栦綔涓鴻繑鍥炲間粠鍑芥暟涓繑鍥炪備緥濡傦紝涓嬮潰鏄竴涓瓨鍌ㄥ嚱鏁扮殑渚嬪瓙錛?br>
    -- example of an anonymous function
                                    -- returned as a value
                                    -- see http://www.tecgraf.puc-rio.br/~lhf/ftp/doc/hopl.pdf
                                    function add(x)
                                    return function (y) return (x + y) end
                                    end
                                    f = add(2)
                                    print(type(f), f(10))
                                    function  12
                                    

  • Lua 綰跨▼銆?/strong>綰跨▼鏄氳繃璋冪敤鍐呭祵鍑芥暟 coroutine.create(f) 鍒涘緩鐨勪竴涓?em>鍗忓悓渚嬬▼ (co-routine)錛屽叾涓?f 鏄竴涓?Lua 鍑芥暟銆傜嚎紼嬩笉浼氬湪鍒涘緩鏃跺惎鍔紱鐩稿弽錛屽畠鏄湪鍒涘緩涔嬪悗浣跨敤 coroutine.resume(t) 鍚姩鐨勶紝鍏朵腑 t 灝辨槸涓涓嚎紼嬨傛瘡涓崗鍚屼緥紼嬮兘蹇呴』浣跨敤 coroutine.yield() 鍋跺皵鑾峰緱鍏朵粬鍗忓悓渚嬬▼鐨勫鐞嗗櫒銆?
  • 璧嬪艱鍙ャ?/strong>Lua 鍏佽浣跨敤澶氱璧嬪艱鍙ワ紝鍙互鍏堝琛ㄨ揪寮忚繘琛屾眰鍊鹼紝鐒跺悗鍐嶈繘琛岃祴鍊箋備緥濡傦紝涓嬮潰鐨勮鍙ワ細

    i = 3
                                    a = {1, 3, 5, 7, 9}
                                    i, a[i], a[i+1], b = i+1, a[i+1], a[i]
                                    print (i, a[3], a[4], b, I)
                                    

    浼氱敓鎴?4 7 5 nil nil銆傚鏋滃彉閲忓垪琛ㄧ殑涓暟澶т簬鍊煎垪琛ㄧ殑涓暟錛岄偅涔堝鍑虹殑鍙橀噺閮借璧嬪間負 nil錛涘洜姝わ紝b 灝辨槸 nil銆傚鏋滃肩殑涓暟澶氫簬鍙橀噺鐨勪釜鏁幫紝閭d箞澶氬嚭鐨勫奸儴鍒嗗氨浼氱畝鍗曞湴涓㈠純銆傚湪 Lua 涓紝鍙橀噺鍚嶆槸澶у皬鍐欐晱鎰熺殑錛岃繖鍙互瑙i噴涓轟粈涔?I 鐨勫兼槸 nil銆?
  • 鍧楋紙Chunk錛夈?/strong> 鍧?/em> 鍙互鏄換浣?Lua 璇彞搴忓垪銆傚潡鍙互淇濆瓨鍒版枃浠朵腑錛屾垨鑰呬繚瀛樺埌 Lua 紼嬪簭涓殑瀛楃涓蹭腑銆傛瘡涓潡閮芥槸浣滀負涓涓尶鍚嶅嚱鏁頒綋鏉ユ墽琛岀殑銆傚洜姝わ紝鍧楀彲浠ュ畾涔夊眬閮ㄥ彉閲忓拰榪斿洖鍊箋?
  • 鏇撮叿鐨勪笢瑗褲?/strong>Lua 鍏鋒湁涓涓爣璁?娓呯悊鍨冨溇鏀墮泦鍣ㄣ傚湪 Lua 5.1 涓紝鍨冨溇鏀墮泦鍣ㄦ槸浠ュ閲忔柟寮忓伐浣滅殑銆侺ua 鍏鋒湁瀹屾暣鐨勮瘝娉曢棴鍖咃紙榪欎笌 Scheme 綾諱技錛岃屼笌 Python 涓嶅悓錛夈侺ua 鍏鋒湁鍙潬鐨勫熬閮ㄨ皟鐢ㄨ涔夛紙鍚屾牱錛岃繖涔熶笌 Scheme 綾諱技錛岃屼笌 Python 涓嶅悓錛夈?

鍦?Programming in Lua 鍜?Lua-users wiki 錛堥摼鎺ヨ鍙傝鍚庨潰鐨?鍙傝冭祫鏂?/font> 閮ㄥ垎錛変腑鍙互鎵懼埌鏇村 Lua 浠g爜鐨勪緥瀛愩?/p>

鍦ㄦ墍鏈夌殑宸ョ▼浠誨姟涓紝瑕佸湪緙栬瘧鎬ц璦鍜岃В閲婃ц璦涔嬮棿浣滃嚭閫夋嫨錛屽氨鎰忓懗鐫瑕佸湪榪欑鐜涓姣忕璇█鐨勪紭緙虹偣銆佹潈閲嶅拰鎶樹腑榪涜璇勬祴錛屽茍鎺ュ彈鎵甯︽潵鐨勯闄┿?/p>



鍥為〉棣?/font>


鍦ㄤ袱涓笘鐣屼箣闂存渶濂藉湴榪涜娣峰悎

濡傛灉鎮ㄥ笇鏈涘厖鍒嗗埄鐢ㄨ繖涓や釜涓栫晫鐨勪紭鐐癸紝搴旇鎬庢牱鍔炲憿錛屾槸閫夋嫨鏈濂界殑鎬ц兘榪樻槸閫夋嫨楂樼駭寮哄ぇ鐨勬娊璞★紵鏇磋繘涓姝ヨ錛屽鏋滄垜浠笇鏈涘澶勭悊鍣ㄥ瘑闆嗕笖渚濊禆浜庣郴緇熺殑綆楁硶鍜屽嚱鏁頒互鍙婁笌緋葷粺鏃犲叧涓斿緢瀹規槗鏍規嵁闇瑕佽岃繘琛屼慨鏀圭殑鍗曠嫭閫昏緫榪涜浼樺寲錛岄偅鍙堝綋濡備綍鍛紵

瀵歸珮鎬ц兘浠g爜鍜岄珮綰х紪紼嬬殑闇瑕佽繘琛屽鉤琛℃槸 Lua錛堜竴縐嶅彲宓屽叆寮忚剼鏈璦錛夎瑙e喅鐨勯棶棰樸傚湪闇瑕佹椂鎴戜滑鍙互浣跨敤緙栬瘧鍚庣殑浠g爜鏉ュ疄鐜板簳灞傜殑鍔熻兘錛岀劧鍚庤皟鐢?Lua 鑴氭湰鏉ユ搷浣滃鏉傜殑鏁版嵁銆傜敱浜?Lua 鑴氭湰鏄笌緙栬瘧浠g爜鐙珛鐨勶紝鍥犳鎴戜滑鍙互鍗曠嫭淇敼榪欎簺鑴氭湰銆備嬌鐢?Lua錛屽紑鍙戝懆鏈熷氨闈炲父綾諱技浜?“緙栫爜銆佺紪璇戙佽繍琛屻佺紪鍐欒剼鏈佺紪鍐欒剼鏈佺紪鍐欒剼鏈?...”銆?/p>

渚嬪錛孡ua Web 绔欑偣 “浣跨敤” 欏甸潰錛堣鍙傝 鍙傝冭祫鏂?/font>錛夊垪鍑轟簡涓繪祦甯傚満涓婄殑鍑犱釜璁$畻鏈烘父鎴忥紝鍖呮嫭 World of Warcraft 鍜岋紙瀹剁敤鐗堢殑錛?em>Defender錛屽畠浠泦鎴?Lua 鏉ュ疄鐜板緢澶氫笢瑗匡紝浠庣敤鎴風晫闈㈠埌鏁屼漢鐨勪漢宸ユ櫤鑳介兘鍙互銆侺ua 鐨勫叾浠栧簲鐢ㄧ▼搴忓寘鎷祦琛岀殑 Linux 杞歡鏇存柊宸ュ叿 apt-rpm 鐨勬墿灞曟満鍒訛紝榪樻湁 “Crazy Ivan” Robocup 2000 鍐犲啗鑱旇禌鐨勬帶鍒墮昏緫銆傝繖涓〉闈笂鐨勫緢澶氭帹鑽愭劅璦閮藉 Lua 鐨勫皬宸т笌鏉板嚭鎬ц兘璧炰笉緇濆彛銆?/p>



鍥為〉棣?/font>


寮濮嬩嬌鐢?Lua

Lua 5.0.2 鐗堟湰鏄挵鍐欐湰鏂囨椂鐨勬渶鏂扮増鏈紝涓嶈繃鏈榪戝垰鍒氬彂甯冧簡 5.1 鐗堟湰銆傛偍鍙互浠?lua.org 涓婁笅杞?Lua 鐨勬簮浠g爜錛屽湪 Lua-users wiki錛堥摼鎺ヨ鍙傝 鍙傝冭祫鏂?/font>錛変笂鍙互鎵懼埌棰勫厛緙栬瘧濂界殑浜岃繘鍒舵枃浠躲傚畬鏁寸殑 Lua 5.0.2 鏍稿績鏂囦歡涓寘鎷簡鏍囧噯搴撳拰 Lua 緙栬瘧鍣紝涓嶈繃鍙湁 200KB 澶у皬銆?/p>

濡傛灉鎮ㄤ嬌鐢ㄧ殑鏄?Debian Linux錛岄偅涔堝彲浠ヤ互瓚呯駭鐢ㄦ埛鐨勮韓浠借繍琛屼笅闈㈢殑鍛戒護鏉ュ揩閫熷畨瑁?Lua 5.0錛?/p>
# apt-get install lua50
                            

鏈枃涓粰鍑虹殑渚嬪瓙閮芥槸鍦?Debian Linux Sarge 涓婅繍琛岀殑錛屼嬌鐢ㄧ殑鏄?Lua 5.0.2 鍜?2.4.27-2-686 鐗堟湰鐨?Linux 鍐呮牳銆?/p>

鍦ㄧ郴緇熶笂瀹夎濂?Lua 涔嬪悗錛屾垜浠彲浠ラ鍏堟潵璇曠敤涓涓嬪崟鐙殑 Lua 瑙i噴鍣ㄣ傦紙鎵鏈夌殑 Lua 搴旂敤紼嬪簭蹇呴』瑕佸祵鍏ュ埌瀹夸富搴旂敤紼嬪簭涓傝В閲婂櫒鍙槸涓縐嶇壒孌婄被鍨嬬殑瀹夸富錛屽浜庡紑鍙戝拰璋冭瘯宸ヤ綔鏉ヨ闈炲父鏈夌敤銆傦級鍒涘緩涓涓悕涓?factorial.lua 鐨勬枃浠訛紝鐒跺悗杈撳叆涓嬮潰鐨勪唬鐮侊細

-- defines a factorial function
                            function fact (n)
                            if n == 0 then
                            return 1
                            else
                            return n * fact(n-1)
                            end
                            end
                            print("enter a number:")
                            a = io.read("*number")
                            print(fact(a))
                            

factorial.lua 涓殑浠g爜 鈥斺?鏇寸‘鍒囧湴璇存槸浠諱綍 Lua 璇彞搴忓垪 鈥斺?閮界О涓轟竴涓?em>鍧?/em>錛岃繖鍦ㄤ笂闈㈢殑 Lua 鐗規?/font> 涓凡緇忚繘琛屼簡浠嬬粛銆傝鎵ц鍒氭墠鍒涘緩鐨勪唬鐮佸潡錛岃榪愯鍛戒護 lua factorial.lua錛?/p>
$ lua factorial.lua
                            enter a number:
                            10
                            3628800
                            

鎴栬呭儚鍦ㄥ叾浠栬В閲婃ц璦涓竴鏍鳳紝鎴戜滑鍙互鍦ㄤ唬鐮侀《閮ㄦ坊鍔犱竴琛?“鏍囪瘑絎?#8221;錛?code>#!錛夛紝浣胯繖涓剼鏈彉鎴愬彲鎵ц鐨勶紝鐒跺悗鍍忓崟鐙懡浠や竴鏍鋒潵榪愯榪欎釜鏂囦歡錛?/p>
$ (echo '#! /usr/bin/lua'; cat factorial.lua) > factorial
                            $ chmod u+x factorial
                            $ ./factorial
                            enter a number:
                            4
                            24
                            





鍥為〉棣?/font>


Lua 璇█

Lua 鍏鋒湁鐜頒唬鑴氭湰璇█涓殑寰堝渚垮埄錛氫綔鐢ㄥ煙錛屾帶鍒剁粨鏋勶紝榪唬鍣紝浠ュ強涓緇勭敤鏉ュ鐞嗗瓧絎︿覆銆佷駭鐢熷強鏀墮泦鏁版嵁鍜屾墽琛屾暟瀛﹁綆楁搷浣滅殑鏍囧噯搴撱傚湪 Lua 5.0 Reference Manual 涓湁瀵?Lua 璇█鐨勫畬鏁翠粙緇嶏紙璇峰弬瑙?鍙傝冭祫鏂?/font>錛夈?/p>

鍦?Lua 涓紝鍙湁鍊?/em> 鍏鋒湁綾誨瀷錛岃屽彉閲忕殑綾誨瀷鏄姩鎬佸喅瀹氱殑銆侺ua 涓殑鍩烘湰綾誨瀷錛堝鹼級鏈?8 縐嶏細 nil錛屽竷灝斿瀷錛屾暟瀛楋紝瀛楃涓詫紝鍑芥暟錛岀嚎紼嬶紝琛?/em> 浠ュ強 鐢ㄦ埛鏁版嵁銆傚墠 6 縐嶇被鍨嬪熀鏈笂鏄嚜鎻忚堪鐨勶紙渚嬪鎯呭喌璇峰弬瑙佷笂闈㈢殑 Lua 鐗規?/font> 涓鑺傦級錛涙渶鍚庝袱涓渶瑕佷竴鐐硅В閲娿?/p>

Lua 琛?/font>

鍦?Lua 涓紝琛ㄦ槸鐢ㄦ潵淇濆瓨鎵鏈夋暟鎹殑緇撴瀯銆傚疄闄呬笂錛岃〃鏄?Lua 涓?em>鎯熶竴鐨?/em> 鏁版嵁緇撴瀯銆傛垜浠彲浠ュ皢琛ㄤ綔涓烘暟緇勩佸瓧鍏革紙涔熺О涓?em>鏁e垪 鎴?em>鑱斿悎鏁扮粍錛夈佹爲銆佽褰曪紝絳夌瓑銆?/p>

涓庡叾浠栫紪紼嬭璦涓嶅悓錛孡ua 琛ㄧ殑姒傚康涓嶉渶瑕佹槸寮傛瀯鐨勶細琛ㄥ彲浠ュ寘鍚換浣曠被鍨嬬殑緇勫悎錛屼篃鍙互鍖呭惈綾繪暟緇勫厓绱犲拰綾誨瓧鍏稿厓绱犵殑娣峰悎浣撱傚彟澶栵紝浠諱綍 Lua 鍊?鈥斺?鍖呮嫭鍑芥暟鎴栧叾浠栬〃 鈥斺?閮藉彲浠ョ敤浣滃瓧鍏稿厓绱犵殑閿箋?/p>

瑕佸琛ㄨ繘琛屾祻瑙堬紝璇峰惎鍔?Lua 瑙i噴鍣紝騫惰緭鍏ユ竻鍗?1 涓殑榛戜綋鏄劇ず鐨勪唬鐮併?/p>
娓呭崟 1. 浣撻獙 Lua 琛?/strong>
$ lua
                            > -- create an empty table and add some elements
                            > t1 = {}
                            > t1[1] = "moustache"
                            > t1[2] = 3
                            > t1["brothers"] = true
                            > -- more commonly, create the table and define elements
                            > all at once
                            > t2 = {[1] = "groucho", [3] = "chico", [5] = "harpo"}
                            > t3 = {[t1[1]] = t2[1], accent = t2[3], horn = t2[5]}
                            > t4 = {}
                            > t4[t3] = "the marx brothers"
                            > t5 = {characters = t2, marks = t3}
                            > t6 = {["a night at the opera"] = "classic"}
                            > -- make a reference and a string
                            > i = t3
                            > s = "a night at the opera"
                            > -- indices can be any Lua value
                            > print(t1[1], t4[t3], t6[s])
                            moustache   the marx brothers classic
                            > -- the phrase table.string is the same as table["string"]
                            > print(t3.horn, t3["horn"])
                            harpo   harpo
                            > -- indices can also be "multi-dimensional"
                            > print (t5["marks"]["horn"], t5.marks.horn)
                            harpo   harpo
                            > -- i points to the same table as t3
                            > = t4[i]
                            the marx brothers
                            > -- non-existent indices return nil values
                            > print(t1[2], t2[2], t5.films)
                            nil     nil     nil
                            >  -- even a function can be a key
                            > t = {}
                            > function t.add(i,j)
                            >> return(i+j)
                            >> end
                            > print(t.add(1,2))
                            3
                            > print(t['add'](1,2))
                            3
                            >  -- and another variation of a function as a key
                            > t = {}
                            > function v(x)
                            >> print(x)
                            >> end
                            > t[v] = "The Big Store"
                            > for key,value in t do key(value) end
                            The Big Store
                            

姝e鎴戜滑鍙兘鏈熸湜鐨勪竴鏍鳳紝Lua 榪樻彁渚涗簡寰堝榪唬鍣ㄥ嚱鏁版潵瀵硅〃榪涜澶勭悊銆傚叏灞鍙橀噺 table 鎻愪緵浜嗚繖浜涘嚱鏁幫紙鏄殑錛孡ua 鍖呭氨鏄〃錛夈傛湁浜涘嚱鏁幫紝渚嬪 table.foreachi()錛屼細鏈熸湜涓涓粠 1錛堟暟瀛?1錛夊紑濮嬬殑榪炵畫鏁存暟鑼冨洿錛?/p>
> table.foreachi(t1, print)
                            1 moustache
                            2 3
                            

鍙﹀涓浜涘嚱鏁幫紝渚嬪 table.foreach()錛屼細瀵規暣涓〃榪涜榪唬錛?/p>
> table.foreach(t2,print)
                            1       groucho
                            3       chico
                            5       harpo
                            > table.foreach(t1,print)
                            1       moustache
                            2       3
                            brothers        true
                            

灝界鏈変簺榪唬鍣ㄥ鏁存暟绱㈠紩榪涜浜嗕紭鍖栵紝浣嗘槸鎵鏈夎凱浠e櫒閮藉彧綆鍗曞湴澶勭悊 (key, value) 瀵廣?/p>

鐜板湪鎴戜滑鍙互鍒涘緩涓涓〃 t錛屽叾鍏冪礌鏄?{2, 4, 6, language="Lua", version="5", 8, 10, 12, web="www.lua.org"}錛岀劧鍚庤繍琛?table.foreach(t, print) 鍜?table.foreachi(t, print)銆?/p>

鐢ㄦ埛鏁版嵁

鐢變簬 Lua 鏄負浜嗗祵鍏ュ埌浣跨敤鍙﹀涓縐嶈璦錛堜緥濡?C 鎴?C++錛夌紪鍐欑殑瀹夸富搴旂敤紼嬪簭涓紝騫朵笌瀹夸富搴旂敤紼嬪簭鍗忓悓宸ヤ綔錛屽洜姝ゆ暟鎹彲浠ュ湪 C 鐜鍜?Lua 涔嬮棿榪涜鍏變韓銆傛濡?Lua 5.0 Reference Manual 鎵璇達紝userdata 綾誨瀷鍏佽鎴戜滑鍦?Lua 鍙橀噺涓繚瀛樹換鎰忕殑 C 鏁版嵁銆傛垜浠彲浠ヨ涓?userdata 灝辨槸涓涓瓧鑺傛暟緇?鈥斺?瀛楄妭鍙互琛ㄧず鎸囬拡銆佺粨鏋勬垨瀹夸富搴旂敤紼嬪簭涓殑鏂囦歡銆?/p>

鐢ㄦ埛鏁版嵁鐨勫唴瀹規簮鑷簬 C錛屽洜姝ゅ湪 Lua 涓笉鑳藉鍏惰繘琛屼慨鏀廣傚綋鐒訛紝鐢變簬鐢ㄦ埛鏁版嵁婧愯嚜浜?C錛屽洜姝ゅ湪 Lua 涓篃娌℃湁瀵圭敤鎴鋒暟鎹瀹氫箟鎿嶄綔銆備笉榪囨垜浠彲浠ヤ嬌鐢ㄥ彟澶栦竴縐?Lua 鏈哄埗鏉ュ垱寤哄 userdata 榪涜澶勭悊鐨勬搷浣滐紝榪欑鏈哄埗縐頒負 鍏冭〃錛坢etatable錛夈?/em>

鍏冭〃

鐢變簬琛ㄥ拰鐢ㄦ埛鏁版嵁閮介潪甯哥伒媧伙紝鍥犳 Lua 鍏佽鎴戜滑閲嶈澆榪欎袱縐嶇被鍨嬬殑鏁版嵁鐨勬搷浣滐紙涓嶈兘閲嶈澆鍏朵粬 6 縐嶇被鍨嬶級銆?em>鍏冭〃 鏄竴涓紙鏅氱殑錛塋ua 琛紝瀹冨皢鏍囧噯鎿嶄綔鏄犲皠鎴愭垜浠彁渚涚殑鍑芥暟銆傚厓琛ㄧ殑閿肩О涓?em>浜嬩歡錛涘鹼紙鎹㈣岃█涔嬪氨鏄嚱鏁幫級縐頒負鍏冩柟娉?/em>銆?/p>

鍑芥暟 setmetatable() 鍜?getmetatable() 鍒嗗埆瀵瑰璞$殑鍏冭〃榪涜淇敼鍜屾煡璇€傛瘡涓〃鍜?userdada 瀵硅薄閮藉彲浠ュ叿鏈夎嚜宸辯殑鍏冭〃銆?/p>

渚嬪錛屾坊鍔犳搷浣滃搴旂殑浜嬩歡鏄?__add銆傛垜浠彲浠ユ帹鏂繖孌典唬鐮佹墍鍋氱殑浜嬫儏涔堬紵

-- Overload the add operation
                            -- to do string concatenation
                            --
                            mt = {}
                            function String(string)
                            return setmetatable({value = string or ''}, mt)
                            end
                            -- The first operand is a String table
                            -- The second operand is a string
                            -- .. is the Lua concatenate operator
                            --
                            function mt.__add(a, b)
                            return String(a.value..b)
                            end
                            s = String('Hello')
                            print((s + ' There ' + ' World!').value )
                            

榪欐浠g爜浼氫駭鐢熶笅闈㈢殑鏂囨湰錛?/p>
Hello There World!
                            

鍑芥暟 String() 鎺ユ敹涓涓瓧絎︿覆 string錛屽皢鍏跺皝瑁呭埌涓涓〃錛?code>{value = s or ''}錛変腑錛屽茍灝嗗厓琛?mt 璧嬪肩粰榪欎釜琛ㄣ傚嚱鏁?mt.__add() 鏄竴涓厓鏂規硶錛屽畠灝嗗瓧絎︿覆 b 娣誨姞鍒板湪 a.value 涓壘鍒扮殑瀛楃涓插悗闈?b 嬈°傝繖琛屼唬鐮?print((s + ' There ' + ' World!').value ) 璋冪敤榪欎釜鍏冩柟娉曚袱嬈°?/p>

__index 鏄彟澶栦竴涓簨浠躲?code>__index 鐨勫厓鏂規硶姣忓綋琛ㄤ腑涓嶅瓨鍦ㄩ敭鍊兼椂灝變細琚皟鐢ㄣ備笅闈㈡槸涓涓緥瀛愶紝瀹冭浣?(memoize) 鍑芥暟鐨勫鹼細

-- code courtesy of Rici Lake, rici@ricilake.net
                            function Memoize(func, t)
                            return setmetatable(
                            t or {},
                            {__index =
                            function(t, k)
                            local v = func(k);
                            t[k] = v;
                            return v;
                            end
                            }
                            )
                            end
                            COLORS = {"red", "blue", "green", "yellow", "black"}
                            color = Memoize(
                            function(node)
                            return COLORS[math.random(1, table.getn(COLORS))]
                            end
                            )
                            

灝嗚繖孌典唬鐮佹斁鍒?Lua 瑙i噴鍣ㄤ腑錛岀劧鍚庤緭鍏?print(color[1], color[2], color[1])銆傛偍灝嗕細鐪嬪埌綾諱技浜?blue black blue 鐨勫唴瀹廣?/p>

榪欐浠g爜鎺ユ敹涓涓敭鍊?node錛屾煡鎵?node 鎸囧畾鐨勯鑹層傚鏋滆繖縐嶉鑹蹭笉瀛樺湪錛屼唬鐮佸氨浼氱粰 node 璧嬩竴涓柊鐨勯殢鏈洪夋嫨鐨勯鑹層傚惁鍒欙紝灝辮繑鍥炶祴緇?node 鐨勯鑹層傚湪鍓嶄竴縐嶆儏鍐典腑錛?code>__index 鍏冩柟娉曡鎵ц涓嬈′互鍒嗛厤涓涓鑹層傚悗涓縐嶆儏鍐墊瘮杈冪畝鍗曪紝鎵鎵ц鐨勬槸蹇熸暎鍒楁煡鎵俱?/p>

Lua 璇█鎻愪緵浜嗗緢澶氬叾浠栧姛鑳藉己澶х殑鐗規э紝鎵鏈夎繖浜涚壒鎬ч兘鏈夊緢濂界殑鏂囨。榪涜浠嬬粛銆傚湪紕板埌闂鎴栧笇鏈涗笌涓撳榪涜浜よ皥鏃訛紝璇瘋繛鎺?Lua Users Chat Room IRC Channel錛堣鍙傝 鍙傝冭祫鏂?/font>錛夎幏寰楅潪甯哥儹蹇冪殑鏀寔銆?/p>



鍥為〉棣?/font>


宓屽叆鍜屾墿灞?/font>

闄や簡璇硶綆鍗曞茍涓斿叿鏈夊姛鑳藉己澶х殑琛ㄧ粨鏋勪箣澶栵紝Lua 鐨勫己澶у姛鑳戒嬌鍏跺彲浠ヤ笌瀹夸富璇█娣峰悎浣跨敤銆傜敱浜?Lua 涓庡涓昏璦鐨勫叧緋婚潪甯稿瘑鍒囷紝鍥犳 Lua 鑴氭湰鍙互瀵瑰涓昏璦鐨勫姛鑳借繘琛屾墿鍏呫備絾鏄繖縐嶈瀺鍚堟槸鍙岃耽鐨勶細瀹夸富璇█鍚屾椂涔熷彲浠ュ Lua 榪涜鎵╁厖銆備婦渚嬫潵璇達紝C 鍑芥暟鍙互璋冪敤 Lua 鍑芥暟錛屽弽涔嬩害鐒躲?/p>

Lua 涓庡涓昏璦涔嬮棿鐨勮繖縐嶅叡鐢熷叧緋葷殑鏍稿績鏄涓昏璦鏄竴涓?em>铏氭嫙鍫嗘爤銆傝櫄鎷熷爢鏍堜笌瀹為檯鍫嗘爤綾諱技錛屾槸涓縐嶅悗榪涘厛鍑猴紙LIFO錛夌殑鏁版嵁緇撴瀯錛屽彲浠ョ敤鏉ヤ復鏃跺瓨鍌ㄥ嚱鏁板弬鏁板拰鍑芥暟緇撴灉銆傝浠?Lua 涓皟鐢ㄥ涓昏璦鐨勫嚱鏁幫紙鍙嶄箣浜︾劧錛夛紝璋冪敤鑰呬細灝嗕竴浜涘煎帇鍏ュ爢鏍堜腑錛屽茍璋冪敤鐩爣鍑芥暟錛涜璋冪敤鐨勫嚱鏁頒細寮瑰嚭榪欎簺鍙傛暟錛堝綋鐒惰瀵圭被鍨嬪拰姣忎釜鍙傛暟鐨勫艱繘琛岄獙璇侊級錛屽鏁版嵁榪涜澶勭悊錛岀劧鍚庡皢緇撴灉鏀懼叆鍫嗘爤涓傚綋鎺у埗榪斿洖緇欒皟鐢ㄧ▼搴忔椂錛岃皟鐢ㄧ▼搴忓氨鍙互浠庡爢鏍堜腑鎻愬彇鍑鴻繑鍥炲箋?/p>

瀹為檯涓婂湪 Lua 涓嬌鐢ㄧ殑鎵鏈夌殑 C 搴旂敤紼嬪簭緙栫▼鎺ュ彛錛圓PI錛夐兘鏄氳繃鍫嗘爤鏉ヨ繘琛屾搷浣滅殑銆傚爢鏍堝彲浠ヤ繚瀛?Lua 鐨勫鹼紝涓嶈繃鍊肩殑綾誨瀷蹇呴』鏄皟鐢ㄧ▼搴忓拰琚皟鐢ㄨ呴兘鐭ラ亾鐨勶紝鐗瑰埆鏄悜鍫嗘爤涓帇鍏ョ殑鍊煎拰浠庡爢鏍堜腑寮瑰嚭鐨勫兼洿鏄姝わ紙渚嬪 lua_pushnil() 鍜?lua_pushnumber()銆?/p>

娓呭崟 2 緇欏嚭浜嗕竴涓畝鍗曠殑 C 紼嬪簭錛堣妭閫夎嚜 鍙傝冭祫鏂?/font> 涓?Programming in Lua 涓涔︾殑絎?24 绔狅級錛屽畠瀹炵幇浜嗕竴涓緢灝忎絾鍗村姛鑳藉畬鍠勭殑 Lua 瑙i噴鍣ㄣ?/p>
娓呭崟 2. 涓涓畝鍗曠殑 Lua 瑙i噴鍣?/strong>
 1 #include <stdio.h>
                            2 #include <lua.h>
                            3 #include <lauxlib.h>
                            4 #include <lualib.h>
                            5
                            6 int main (void) {
                            7   char buff[256];
                            8   int error;
                            9   lua_State *L = lua_open();   /* opens Lua */
                            10   luaopen_base(L);             /* opens the basic library */
                            11   luaopen_table(L);            /* opens the table library */
                            12   luaopen_io(L);               /* opens the I/O library */
                            13   luaopen_string(L);           /* opens the string lib. */
                            14   luaopen_math(L);             /* opens the math lib. */
                            15
                            16   while (fgets(buff, sizeof(buff), stdin) != NULL) {
                            17     error = luaL_loadbuffer(L, buff, strlen(buff), "line") ||
                            18             lua_pcall(L, 0, 0, 0);
                            19     if (error) {
                            20       fprintf(stderr, "%s", lua_tostring(L, -1));
                            21       lua_pop(L, 1);  /* pop error message from the stack */
                            22     }
                            23   }
                            24
                            25   lua_close(L);
                            26   return 0;
                            27 }
                            

絎?2 琛屽埌絎?4 琛屽寘鎷簡 Lua 鐨勬爣鍑嗗嚱鏁幫紝鍑犱釜鍦ㄦ墍鏈?Lua 搴撲腑閮戒細浣跨敤鐨勬柟渚垮嚱鏁頒互鍙婄敤鏉ユ墦寮搴撶殑鍑芥暟銆傜 9 琛屽垱寤轟簡涓涓?Lua 鐘舵?/em>銆傛墍鏈夌殑鐘舵佹渶鍒濋兘鏄┖鐨勶紱鎴戜滑鍙互浣跨敤 luaopen_...() 灝嗗嚱鏁板簱娣誨姞鍒扮姸鎬佷腑錛屽絎?10 琛屽埌絎?14 琛屾墍紺恒?/p>

絎?17 琛屽拰 luaL_loadbuffer() 浼氫粠 stdin 涓互鍧楃殑褰㈠紡鎺ユ敹杈撳叆錛屽茍瀵瑰叾榪涜緙栬瘧錛岀劧鍚庡皢鍏舵斁鍏ヨ櫄鎷熷爢鏍堜腑銆傜 18 琛屼粠鍫嗘爤涓脊鍑烘暟鎹茍鎵ц涔嬨傚鏋滃湪鎵ц鏃跺嚭鐜頒簡閿欒錛屽氨鍚戝爢鏍堜腑鍘嬪叆涓涓?Lua 瀛楃涓層傜 20 琛岃闂爤欏訛紙鏍堥《鐨勭儲寮曚負 -1錛変綔涓?Lua 瀛楃涓詫紝鎵撳嵃娑堟伅錛岀劧鍚庝粠鍫嗘爤涓垹闄よ鍊箋?/p>

浣跨敤 C API錛屾垜浠殑搴旂敤紼嬪簭涔熷彲浠ヨ繘鍏?Lua 鐘舵佹潵鎻愬彇淇℃伅銆備笅闈㈢殑浠g爜鐗囨浠?Lua 鐘舵佷腑鎻愬彇涓や釜鍏ㄥ眬鍙橀噺錛?/p>
..
                            if (luaL_loadfile(L, filename) || lua_pcall(L, 0, 0, 0))
                            error(L, "cannot run configuration file: %s", lua_tostring(L, -1));
                            lua_getglobal(L, "width");
                            lua_getglobal(L, "height");
                            ..
                            width = (int) lua_tonumber(L, -2);
                            height = (int) lua_tonumber(L, -1);
                            ..
                            

璇峰啀嬈℃敞鎰忎紶杈撴槸閫氳繃鍫嗘爤榪涜鐨勩備粠 C 涓皟鐢ㄤ換浣?Lua 鍑芥暟涓庤繖孌典唬鐮佺被浼鹼細浣跨敤 lua_getglobal() 鏉ヨ幏寰楀嚱鏁幫紝灝嗗弬鏁板帇鍏ュ爢鏍堬紝璋冪敤 lua_pcall()錛岀劧鍚庡鐞嗙粨鏋溿傚鏋?Lua 鍑芥暟榪斿洖 n 涓鹼紝閭d箞絎竴涓肩殑浣嶇疆鍦ㄥ爢鏍堢殑 -n 澶勶紝鏈鍚庝竴涓煎湪鍫嗘爤涓殑浣嶇疆鏄?-1銆?/p>

鍙嶄箣錛屽湪 Lua 涓皟鐢?C 鍑芥暟涔熶笌涔嬬被浼箋傚鏋滄偍鐨勬搷浣滅郴緇熸敮鎸佸姩鎬佸姞杞斤紝閭d箞 Lua 鍙互鏍規嵁闇瑕佹潵鍔ㄦ佸姞杞藉茍璋冪敤鍑芥暟銆傦紙鍦ㄥ繀欏諱嬌鐢ㄩ潤鎬佸姞杞界殑鎿嶄綔緋葷粺涓紝鍙互瀵?Lua 寮曟搸榪涜鎵╁厖錛屾鏃惰皟鐢?C 鍑芥暟鏃墮渶瑕侀噸鏂扮紪璇?Lua銆傦級





鍥為〉棣?/font>


緇撴潫璇?/font>

Lua 鏄竴縐嶅涔犺搗鏉ュ鏄撳緱闅句互緗俊鐨勮璦錛屼絾鏄畠綆鍗曠殑璇硶鍗存帺楗頒笉浜嗗叾寮哄ぇ鐨勫姛鑳斤細榪欑璇█鏀寔瀵硅薄錛堣繖涓?Perl 綾諱技錛夛紝鍏冭〃浣胯〃綾誨瀷鍏鋒湁鐩稿綋紼嬪害鐨勫彲浼稿睍鎬э紝C API 鍏佽鎴戜滑鍦ㄨ剼鏈拰瀹夸富璇█涔嬮棿榪涜鏇村ソ鐨勯泦鎴愬拰鎵╁厖銆侺ua 鍙互鍦?C銆丆++銆丆#銆丣ava™ 鍜?Python 璇█涓嬌鐢ㄣ?/p>

鍦ㄥ垱寤哄彟澶栦竴涓厤緗枃浠舵垨璧勬簮鏍煎紡錛堜互鍙婄浉搴旂殑澶勭悊紼嬪簭錛変箣鍓嶏紝璇峰皾璇曚竴涓?Lua銆侺ua 璇█鍙婂叾紺懼尯闈炲父鍋ュ.錛屽叿鏈夊垱鏂扮簿紲烇紝闅忔椂鍑嗗濂芥彁渚涘府鍔┿?/p>



鍥為〉棣?/font>


鍙傝冭祫鏂?

瀛︿範

鑾峰緱浜у搧鍜屾妧鏈?/strong>
  • 涓嬭澆 Lua 5.0.2 鎴?Lua 5.1 婧愪唬鐮侊紝浠庡ご寮濮嬬紪璇?Lua銆?

  • 鍦?Lua-users wiki 涓婏紝嫻忚寰堝棰勫厛鏋勫緩鐨勩佸彲瀹夎鐨?Lua 浜岃繘鍒舵枃浠躲?

  • 鍦?LuaForge 涓婂彲浠ユ壘鍒板ぇ閲忕殑浠g爜搴擄紝鍖呮嫭寰堝璇█緇戝畾鍜屼笓闂ㄧ殑璁$畻搴撱?

  • 璁㈣喘鍏嶈垂鐨?SEK for Linux 錛岃繖鏈変袱寮?DVD錛屽寘鎷渶鏂扮殑 IBM for Linux 璇曠敤杞歡錛屽寘鎷?DB2®銆丩otus®銆丷ational®銆乀ivoli® 鍜?WebSphere®銆?

  • 鍦ㄦ偍鐨勪笅涓涓紑鍙戦」鐩腑閲囩敤 IBM 璇曠敤杞歡錛岃繖鍙互浠?developerWorks 鐩存帴涓嬭澆銆?


璁ㄨ






鍏充簬浣滆?/font>

Martin Streicher 鏄?Linux Magazine 鐨勯甯紪杈戙備粬鍦ㄦ櫘娓″ぇ瀛﹁幏寰椾簡璁$畻鏈虹澹浣嶏紝鑷?1982 騫翠互鏉ワ紝灝變竴鐩村湪浣跨敤 Pascal銆丆銆丳erl銆丣ava 浠ュ強錛堟渶榪戜嬌鐢ㄧ殑錛塕uby 緙栫▼璇█緙栧啓綾?Unix 緋葷粺銆?/p>



avatar 2010-04-21 22:44 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产精品女人久久久| 国产精品国产| 最新国产乱人伦偷精品免费网站| 美玉足脚交一区二区三区图片| 久久爱另类一区二区小说| 国内外成人免费激情在线视频| 老司机午夜精品| 欧美高清视频一二三区| 一本色道久久综合亚洲91| 亚洲午夜伦理| 精品96久久久久久中文字幕无| 欧美华人在线视频| 国产精品va在线| 久久一区二区三区四区| 你懂的国产精品| 午夜精品亚洲| 久久一区二区三区超碰国产精品| 亚洲人成网站在线观看播放| 亚洲精品乱码久久久久久久久| 欧美三区免费完整视频在线观看| 欧美永久精品| 欧美a级片网| 欧美一级专区| 欧美日韩a区| 久久香蕉国产线看观看av| 欧美日韩国产二区| 久久久久国产一区二区三区四区| 欧美电影在线观看完整版| 久久av一区| 欧美精品福利在线| 久久婷婷综合激情| 国产精品九九| 亚洲肉体裸体xxxx137| 国产视频一区在线| 夜夜嗨一区二区三区| 亚洲美女视频在线观看| 久久久久久久精| 亚洲一区二区日本| 免费成人高清在线视频| 久久久精品日韩| 国产精品视频男人的天堂| 亚洲国产成人在线| 在线免费观看日本一区| 午夜免费电影一区在线观看| 亚洲精品日本| 另类专区欧美制服同性| 久久久久久久波多野高潮日日 | 亚洲国产精品成人一区二区| 国产欧美日韩专区发布| 在线一区视频| 一区二区三区日韩欧美精品| 欧美国产精品| 亚洲国产美女| 亚洲精品美女在线| 美女日韩欧美| 欧美激情亚洲自拍| 亚洲电影免费在线| 免费在线欧美视频| 亚洲激情网站免费观看| 亚洲国产成人精品女人久久久| 久久精品视频在线播放| 久久一本综合频道| 在线观看欧美成人| 久久一区二区三区超碰国产精品| 久久免费精品日本久久中文字幕| 国产女主播一区二区| 亚洲欧美在线磁力| 久久爱另类一区二区小说| 国产麻豆精品在线观看| 性欧美8khd高清极品| 久久漫画官网| 亚洲日本欧美天堂| 欧美精品日韩| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲网站在线播放| 国产精品一区二区a| 欧美在线91| 欧美激情一区二区三区四区| 亚洲精品一区二区三区婷婷月| 欧美激情按摩在线| 亚洲视频免费| 麻豆成人在线| 日韩一级在线| 国产精品嫩草影院av蜜臀| 午夜综合激情| 亚洲风情在线资源站| 一区二区成人精品| 国产日韩欧美在线播放不卡| 久久免费国产精品1| 亚洲精品美女| 欧美资源在线观看| 亚洲人成免费| 国产精品免费视频观看| 久久免费视频观看| 一区二区高清视频在线观看| 久久精品视频免费播放| 日韩图片一区| 国产一区二区三区久久 | 野花国产精品入口| 欧美一区二区视频在线观看| 最新国产の精品合集bt伙计| 国产精品五区| 欧美日韩精品在线播放| 精品av久久久久电影| 欧美另类亚洲| 久久国产欧美日韩精品| 亚洲人成在线观看一区二区| 久久精品国产免费| 这里是久久伊人| 亚洲二区三区四区| 国产视频在线一区二区| 欧美女同视频| 老司机午夜精品| 性欧美video另类hd性玩具| 亚洲麻豆av| 亚洲高清自拍| 久久久国产精品一区| 亚洲一区二区免费在线| 日韩午夜激情| 亚洲国产高清一区| 精品成人一区二区三区| 国产精品无码永久免费888| 欧美日韩亚洲国产精品| 久久在线91| 欧美中文字幕第一页| 亚洲综合精品四区| 一区二区三区四区蜜桃| 91久久久国产精品| 久久在精品线影院精品国产| 欧美一区二区三区在线看| 亚洲一区黄色| 亚洲免费在线播放| 亚洲砖区区免费| 亚洲婷婷免费| 亚洲综合精品四区| 午夜精品久久| 午夜精品久久久久久久99热浪潮 | 欧美日韩在线三区| 欧美日韩精品一区视频| 欧美日韩另类字幕中文| 欧美久久久久免费| 欧美日韩福利| 欧美无砖砖区免费| 国产精品www.| 国产精品亚洲精品| 国产一二精品视频| 国产视频亚洲精品| 精品不卡一区| 亚洲国产高清自拍| 99re66热这里只有精品3直播 | 亚洲另类自拍| 亚洲天堂av在线免费| 亚洲免费视频观看| 久久精品亚洲精品| 美女精品网站| 亚洲精品欧洲| 亚洲午夜久久久久久尤物| 欧美一区二区三区四区在线观看地址| 欧美一区二区三区视频| 久久久天天操| 欧美精品一区二区精品网| 欧美三级午夜理伦三级中视频| 国产九九视频一区二区三区| 黄色一区二区在线| 亚洲日产国产精品| 亚洲自拍偷拍网址| 免费高清在线视频一区·| 亚洲人体一区| 欧美一二区视频| 免费视频一区| 国产欧美91| 日韩亚洲视频| 欧美一区二区精美| 亚洲成在人线av| 亚洲一区欧美一区| 麻豆freexxxx性91精品| 欧美午夜精品久久久久久浪潮| 国产视频一区免费看| 一本色道**综合亚洲精品蜜桃冫| 亚洲欧美日本在线| 国产精品二区三区四区| 亚洲一区二区久久| 欧美一级网站| 欧美精品在欧美一区二区少妇| 国产精品视频xxxx| 亚洲免费电影在线| 久久久高清一区二区三区| 亚洲精品久久久久久一区二区 | 亚洲第一精品电影| 亚洲欧美中文日韩v在线观看| 欧美成人久久| 国产亚洲网站| 性欧美暴力猛交另类hd| 亚洲激情六月丁香| 久久久无码精品亚洲日韩按摩| 国产精品乱码人人做人人爱| 亚洲精品日本| 欧美韩国一区| 久久五月婷婷丁香社区| 国产农村妇女精品一二区|