锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久国产精华液,久久精品免费全国观看国产,武侠古典久久婷婷狼人伊人http://www.shnenglu.com/sandy/category/769.html楂樻ц兘鏈嶅姟鍣ㄧ璁$畻zh-cnThu, 13 Apr 2017 01:19:39 GMTThu, 13 Apr 2017 01:19:39 GMT60榛戠櫧媯嬬畻娉曡璁?/title><link>http://www.shnenglu.com/sandy/archive/2012/09/20/191377.html</link><dc:creator>灝忔槑</dc:creator><author>灝忔槑</author><pubDate>Thu, 20 Sep 2012 04:50:00 GMT</pubDate><guid>http://www.shnenglu.com/sandy/archive/2012/09/20/191377.html</guid><wfw:comment>http://www.shnenglu.com/sandy/comments/191377.html</wfw:comment><comments>http://www.shnenglu.com/sandy/archive/2012/09/20/191377.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.shnenglu.com/sandy/comments/commentRss/191377.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/sandy/services/trackbacks/191377.html</trackback:ping><description><![CDATA[<div><h2>浠嬬粛</h2>榛戠櫧媯嬶紝鍙堝彨鍙嶆錛圧eversi錛夈佸ゥ璧涚綏媯嬶紙Othello錛夈佽嫻鏋滄鎴栫炕杞銆傞粦鐧芥鍦ㄨタ鏂瑰拰鏃ユ湰寰堟祦琛屻傛父鎴忛氳繃鐩鎬簰緲昏漿瀵規(guī)柟鐨勬瀛愶紝鏈鍚庝互媯嬬洏 涓婅皝鐨勬瀛愬鏉ュ垽鏂儨璐熴傚畠鐨勬父鎴忚鍒欑畝鍗曪紝鍥犳涓婃墜寰堝鏄擄紝浣嗘槸瀹冪殑鍙樺寲鍙堥潪甯稿鏉傘傛湁涓縐嶈娉曟槸錛氬彧闇瑕佸嚑鍒嗛挓瀛︿細(xì)瀹冿紝鍗撮渶瑕佷竴鐢熺殑鏃墮棿鍘葷簿閫氬畠銆?/div><br /><div>榛戠櫧媯嬬殑媯嬬洏鏄竴涓湁8*8鏂規(guī)牸鐨勬鐩樸備笅媯嬫椂灝嗘涓嬪湪絀烘牸涓棿錛岃屼笉鏄儚<a target="_blank" >鍥存</a>涓鏍蜂笅鍦ㄤ氦鍙夌偣涓娿傚紑濮嬫椂鍦ㄦ鐩樻涓湁涓ょ櫧涓ら粦鍥涗釜媯嬪瓙浜ゅ弶鏀劇疆錛岄粦媯嬫繪槸鍏堜笅瀛愩?銆銆<strong><br /><br />涓嬪瓙鐨勬柟娉曪細(xì)</strong>鎶婅嚜宸遍鑹茬殑媯嬪瓙鏀懼湪媯嬬洏鐨勭┖鏍間笂錛岃屽綋鑷繁鏀句笅鐨勬瀛愬湪妯佺珫銆佹枩鍏釜鏂瑰悜鍐呮湁涓涓嚜宸辯殑媯嬪瓙錛屽垯琚す鍦ㄤ腑闂寸殑鍏ㄩ儴緲昏漿浼?xì)鎴愪给檱忿q殑媯嬪瓙銆傚茍涓旓紝鍙湁鍦ㄥ彲浠ョ炕杞瀛愮殑鍦版柟鎵嶅彲浠ヤ笅瀛愩?br /><br /><h2>浼頒環(huán)鍑芥暟</h2><div>榛戠櫧媯嬩腑鏈閲嶈鐨勬槸鐢?shù)鑴戝灞鍔跨殑鍒ゆ柇錛屽浣曞啓濂借繖鏍風(fēng)殑浼頒環(huán)鍑芥暟鏄粦鐧芥浜哄伐鏅鴻兘紼嬪簭鐨勯噸鐐廣?br /><br />鎵璋撶殑“閲戣閾惰竟鑽夎倸鐨?#8221;,璇存槑浜嗗瓙鐨勪綅緗殑閲嶈鎬ф槸涓嶅悓鐨勩傛渶鏈瑕佺殑鐐規(guī)槸鍥涗釜瑙掞紝鑰屽拰瑙掔浉閭?cè)潥勪笁涓偣锛屽垯鏄笉搴旇鍗犻鐨勫Q屽叾嬈℃槸鍥涙潯杈癸紝鍗犻鍚庣殑濂藉涔熷緢澶氥?br /><br />褰撶劧浜嗛櫎浜嗗瓙鐨勪綅緗紝鑷敱搴︿篃姣旇緝閲嶈銆?div>浣犵殑鐩爣鏄檺鍒跺鎵嬬殑鑷敱搴︼紙鍗蟲姝ユ暟閲忥級錛屽悓鏃跺鍔犺嚜宸辯殑鑷敱搴?/div></div></div><br /><div><img src="data:image/png;base64,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" alt="" /><br /><br /><br /><h2>鎼滅儲綆楁硶</h2><p>濡傛灉鍙槸鍑及浠峰嚱鏁版潵璧版錛屾槸寰堥毦璧㈢殑錛屽ソ鐨凙I蹇呴』鑳藉鍚戝墠鐪嬪嚑姝ワ紝鐪嬪緱瓚婃繁錛屾鍔涘氨瓚婂己銆?/p><p>榪欏氨娑夊強鍒板崥寮堟爲(wèi)鎼滅儲浜嗭紝鏈緇忓吀鏄瀬澶ф瀬灝忕畻娉曘?/p><p> </p><div>Minimax綆楁硶甯哥敤浜庢綾葷瓑鐢變袱鏂硅緝閲忕殑娓告垙鍜岀▼搴忋傝綆楁硶鏄竴涓浂鎬誨拰綆楁硶錛屽嵆涓鏂硅鍦ㄥ彲閫夌殑閫夐」涓夋嫨灝嗗叾浼樺娍鏈澶у寲鐨勯夋嫨錛屽彟涓鏂瑰垯閫夋嫨浠ゅ鎵嬩紭鍔挎渶灝忓寲鐨勬柟娉曘傝屽紑濮嬬殑鏃跺欐誨拰涓?銆?/div>浼唬鐮侊細(xì)<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">function</span><span style="color: #000000; "> minimax(node, depth)<br />   </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> node is a terminal node or depth </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; "><br />       </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> the heuristic value of node<br />   </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> the adversary is to play at node<br />       let α :</span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">+</span><span style="color: #000000; ">∞<br />       foreach child of node<br />           α :</span><span style="color: #000000; ">=</span><span style="color: #000000; "> min(α, minimax(child, depth</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">))<br />   </span><span style="color: #0000FF; ">else</span><span style="color: #000000; "> {we are to play at node}<br />       let α :</span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">-</span><span style="color: #000000; ">∞<br />       foreach child of node<br />           α :</span><span style="color: #000000; ">=</span><span style="color: #000000; "> max(α, minimax(child, depth</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">))<br />   </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> α</span></div><p> </p><p><br /></p><h2>瀹炵幇<br /></h2><p> </p><div>鐢╦avascript鍜宧tml5鍐欎簡涓涓粦鐧芥錛屽疄鐜頒簡浜烘満瀵規(guī)垬錛屾湁榪樹笉閿欑殑鏅鴻兘錛?鎴戣嚜宸卞凡緇忓緢闅句笅璧簡銆?br /> <br /> 璇風(fēng)敤chrome鎴栬協(xié)irefox鎵撳紑錛宑hrome鐨刯avascript鎬ц兘鏇村ソ锝?br /> <br /> 婕旂ず鍦板潃:  <a ><span style="font-size: 18pt; color: red;">https://yshan.github.io/othello/</span></a></div><br /><p> </p><p><br /></p></div><img src ="http://www.shnenglu.com/sandy/aggbug/191377.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/sandy/" target="_blank">灝忔槑</a> 2012-09-20 12:50 <a href="http://www.shnenglu.com/sandy/archive/2012/09/20/191377.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>D3D緇冧範(fàn)---鍔ㄦ侀搧杞?/title><link>http://www.shnenglu.com/sandy/archive/2007/05/05/23426.html</link><dc:creator>灝忔槑</dc:creator><author>灝忔槑</author><pubDate>Fri, 04 May 2007 23:55:00 GMT</pubDate><guid>http://www.shnenglu.com/sandy/archive/2007/05/05/23426.html</guid><wfw:comment>http://www.shnenglu.com/sandy/comments/23426.html</wfw:comment><comments>http://www.shnenglu.com/sandy/archive/2007/05/05/23426.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/sandy/comments/commentRss/23426.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/sandy/services/trackbacks/23426.html</trackback:ping><description><![CDATA[     鎽樿: D3D鐨勬憚鍍忔満鍔ㄧ敾  <a href='http://www.shnenglu.com/sandy/archive/2007/05/05/23426.html'>闃呰鍏ㄦ枃</a><img src ="http://www.shnenglu.com/sandy/aggbug/23426.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/sandy/" target="_blank">灝忔槑</a> 2007-05-05 07:55 <a href="http://www.shnenglu.com/sandy/archive/2007/05/05/23426.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>D3d瀹炵幇2d鏁堟灉(2)--榧犳爣鐢葷嚎http://www.shnenglu.com/sandy/archive/2007/05/04/23398.html灝忔槑灝忔槑Fri, 04 May 2007 05:33:00 GMThttp://www.shnenglu.com/sandy/archive/2007/05/04/23398.htmlhttp://www.shnenglu.com/sandy/comments/23398.htmlhttp://www.shnenglu.com/sandy/archive/2007/05/04/23398.html#Feedback0http://www.shnenglu.com/sandy/comments/commentRss/23398.htmlhttp://www.shnenglu.com/sandy/services/trackbacks/23398.html闃呰鍏ㄦ枃

灝忔槑 2007-05-04 13:33 鍙戣〃璇勮
]]>
D3d瀹炵幇2d鏁堟灉(1)--鍔ㄦ佹槦絀?/title><link>http://www.shnenglu.com/sandy/archive/2007/05/04/23395.html</link><dc:creator>灝忔槑</dc:creator><author>灝忔槑</author><pubDate>Fri, 04 May 2007 04:19:00 GMT</pubDate><guid>http://www.shnenglu.com/sandy/archive/2007/05/04/23395.html</guid><wfw:comment>http://www.shnenglu.com/sandy/comments/23395.html</wfw:comment><comments>http://www.shnenglu.com/sandy/archive/2007/05/04/23395.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/sandy/comments/commentRss/23395.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/sandy/services/trackbacks/23395.html</trackback:ping><description><![CDATA[     鎽樿: D3D鐨勭敾鐐硅兘鍔?nbsp; <a href='http://www.shnenglu.com/sandy/archive/2007/05/04/23395.html'>闃呰鍏ㄦ枃</a><img src ="http://www.shnenglu.com/sandy/aggbug/23395.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/sandy/" target="_blank">灝忔槑</a> 2007-05-04 12:19 <a href="http://www.shnenglu.com/sandy/archive/2007/05/04/23395.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>浜斿瓙榪炵彔http://www.shnenglu.com/sandy/archive/2006/05/12/7029.html灝忔槑灝忔槑Fri, 12 May 2006 08:19:00 GMThttp://www.shnenglu.com/sandy/archive/2006/05/12/7029.htmlhttp://www.shnenglu.com/sandy/comments/7029.htmlhttp://www.shnenglu.com/sandy/archive/2006/05/12/7029.html#Feedback2http://www.shnenglu.com/sandy/comments/commentRss/7029.htmlhttp://www.shnenglu.com/sandy/services/trackbacks/7029.html
source:聽聽 http://www.shnenglu.com/Files/sandy/Five_src.rar

bin: 聽 http://www.shnenglu.com/Files/sandy/Five_bin.rar


picture:

chess.jpg

灝忔槑 2006-05-12 16:19 鍙戣〃璇勮
]]>
鐢⊿DL鍐欐父鎴?/title><link>http://www.shnenglu.com/sandy/archive/2005/12/28/2219.html</link><dc:creator>灝忔槑</dc:creator><author>灝忔槑</author><pubDate>Wed, 28 Dec 2005 13:32:00 GMT</pubDate><guid>http://www.shnenglu.com/sandy/archive/2005/12/28/2219.html</guid><wfw:comment>http://www.shnenglu.com/sandy/comments/2219.html</wfw:comment><comments>http://www.shnenglu.com/sandy/archive/2005/12/28/2219.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.shnenglu.com/sandy/comments/commentRss/2219.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/sandy/services/trackbacks/2219.html</trackback:ping><description><![CDATA[<STRONG>SDL(</STRONG><FONT face=Verdana><STRONG>Simple DirectMedia Layer)鏄?/STRONG>涓涓法騫沖彴鐨刴ultimedia library ,鍖呭惈浜嗗video,audio,keyboard,mouse鐨勬敮鎸併?BR>瀹冪殑鎺ュ彛姣旇緝綆媧侊紝浣犵敋鑷充笉闇瑕佺煡閬揥in32 API,灝卞彲浠ュ啓鍑烘父鎴忔潵銆傚畠?yōu)畞瑁呬簡璺?BR>騫沖彴鐩稿叧鐨勯儴鍒嗐傚畠浣挎垜鎯寵搗浜員C涓嬮潰鐨刧raphics BGI<BR><BR>瀹樻柟鍦板潃:   <A >http://www.libsdl.org/</A><BR><BR>涓嬮潰鏄垜鐢⊿DL鍐欑殑涓涓皬娓告垙<BR><IMG height=505 alt=run.jpg src="http://www.shnenglu.com/images/cppblog_com/sandy/run.jpg" width=406 border=0><BR><BR><BR><STRONG>1.楠ㄦ灦紼嬪簭</STRONG><BR><BR> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #000000">#include </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">sdl.h</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"><BR>#pragma comment(lib,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">sdl.lib</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)<BR>#pragma comment(lib,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">sdlmain.lib</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)<BR><BR></SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> main(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> argc,</SPAN><SPAN style="COLOR: #0000ff">char</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">**</SPAN><SPAN style="COLOR: #000000"> argv)<BR>{<BR>    </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">Init SDL</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">    SDL_Init( SDL_INIT_VIDEO );<BR>    atexit(SDL_Quit);<BR>    screen </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> SDL_SetVideoMode(</SPAN><SPAN style="COLOR: #000000">400</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">480</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">,SDL_SWSURFACE);<BR>    SDL_WM_SetCaption(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">RUN</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,NULL);<BR><BR>    </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">load resource<BR>    </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.shnenglu.com/images/dot.gif"></SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000"><BR>    </SPAN><SPAN style="COLOR: #0000ff">bool</SPAN><SPAN style="COLOR: #000000"> pause </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">false</SPAN><SPAN style="COLOR: #000000">;<BR>    </SPAN><SPAN style="COLOR: #0000ff">bool</SPAN><SPAN style="COLOR: #000000"> gone </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">true</SPAN><SPAN style="COLOR: #000000">;<BR><BR>    SDL_Event </SPAN><SPAN style="COLOR: #0000ff">event</SPAN><SPAN style="COLOR: #000000">;<BR>    </SPAN><SPAN style="COLOR: #0000ff">while</SPAN><SPAN style="COLOR: #000000">(gone)<BR>    {<BR>        </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(SDL_PollEvent(</SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #0000ff">event</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #000000">></SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">)<BR>        {<BR>            </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">event</SPAN><SPAN style="COLOR: #000000">.type </SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000"> SDL_QUIT)<BR>            {<BR>                </SPAN><SPAN style="COLOR: #0000ff">break</SPAN><SPAN style="COLOR: #000000">;<BR>            }<BR>            </SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">event</SPAN><SPAN style="COLOR: #000000">.type </SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000"> SDL_KEYDOWN)<BR>            {<BR>        </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">handle event<BR>        </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.shnenglu.com/images/dot.gif"></SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">            }<BR>            </SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">event</SPAN><SPAN style="COLOR: #000000">.type </SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000"> SDL_KEYUP)<BR>            {<BR>        </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">handle event<BR>        </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.shnenglu.com/images/dot.gif"></SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">            }<BR>        }<BR>        </SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">!</SPAN><SPAN style="COLOR: #000000">pause)<BR>        {<BR>            run(); <BR>        }<BR>    }<BR><BR>    </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">release resource<BR>    </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.shnenglu.com/images/dot.gif"></SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">    </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;<BR>}<BR><BR></SPAN></DIV></FONT><BR>SDL_Init : 鍒濆鍖栧瓙緋葷粺<BR>SDL_SetVideoMode錛氳緗垎杈ㄧ巼<BR>SDL_WM_SetCaption: 璁劇疆紿楀彛鏍囬<BR>SDL_PollEvent錛氭煡璇簨浠訛紝鐢ㄦ埛鐨勮緭鍏?BR><BR><STRONG>2.琛ㄩ潰鐨勬蹇?/STRONG><BR><BR>琛ㄩ潰(SDL_Surface)鏄疭DL涓竴涓噸瑕佺殑姒傚康錛岀簿鐏甸兘鏄繚瀛樺湪琛ㄩ潰涓?BR><BR> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #000000">SDL_Surface </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000"> temp </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> SDL_CreateRGBSurface(SDL_SRCCOLORKEY, w, h, </SPAN><SPAN style="COLOR: #000000">32</SPAN><SPAN style="COLOR: #000000">,<BR>                </SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">, </SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">, </SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">, </SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">);<BR>            <BR>rc.x </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> x </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000"> w ;<BR>rc.y </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> y </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000"> h;<BR>            <BR>SDL_BlitSurface(surf,</SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #000000">rc,temp,</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">);<BR>           <BR>SDL_SetColorKey(temp,SDL_SRCCOLORKEY,transcolor);</SPAN></DIV><BR>SDL_CreateRGBSurface 鍒涘緩涓涓〃闈?BR>SDL_BlitSurface 琛ㄩ潰涔嬮棿鐨刢opy<BR>SDL_SetColorKey 璁懼畾琛ㄩ潰鐨勯忔槑鑹?BR><BR>ps:涓昏〃闈㈡槸鐢盨DL_SetVideoMode榪斿洖鐨勶紝涔熷彲浠ラ氳繃<A href="file:///D:/SDL-1.2.8/docs/html/sdlgetvideosurface.html">SDL_GetVideoSurface</A>鏌ヨ鍒?BR><BR><STRONG>3. 澹伴煶鐨勪嬌鐢?/STRONG><BR><BR>娓告垙紱諱笉寮澹伴煶,SDL涔熸彁渚涗簡鏀寔<BR><BR> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000"> play_sound(</SPAN><SPAN style="COLOR: #0000ff">const</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">char</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">file)<BR>{<BR>    </SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> index;<BR>    SDL_AudioSpec wave;<BR>    Uint8 </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">data;<BR>    Uint32 dlen;<BR>    SDL_AudioCVT cvt;<BR><BR>    </SPAN><SPAN style="COLOR: #008000">/*</SPAN><SPAN style="COLOR: #008000"> 瀵繪壘涓涓┖鐨勶紙鎴栬呭畬鎴愪簡鐨勶級闊抽鍙?nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN><SPAN style="COLOR: #000000"><BR>    </SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000"> ( index</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">; index</SPAN><SPAN style="COLOR: #000000"><</SPAN><SPAN style="COLOR: #000000">NUM_SOUNDS; </SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">index ) {<BR>        </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000"> ( sounds[index].dpos </SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000"> sounds[index].dlen ) {<BR>            </SPAN><SPAN style="COLOR: #0000ff">break</SPAN><SPAN style="COLOR: #000000">;<BR>        }<BR>    }<BR>    </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000"> ( index </SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000"> NUM_SOUNDS )<BR>        </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">;<BR><BR>    </SPAN><SPAN style="COLOR: #008000">/*</SPAN><SPAN style="COLOR: #008000"> 鍔犺澆澹伴煶鏂囦歡錛屽茍杞崲鎴?6浣嶃佺珛浣撳0銆?2kHz鏍煎紡 </SPAN><SPAN style="COLOR: #008000">*/</SPAN><SPAN style="COLOR: #000000"><BR>    </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000"> ( SDL_LoadWAV(file, </SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #000000">wave, </SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #000000">data, </SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #000000">dlen) </SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000"> NULL ) {<BR>        fprintf(stderr, </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">鏃犳硶鍔犺澆 %s: %s\n</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">, file, SDL_GetError());<BR>        </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">;<BR>    }<BR>    SDL_BuildAudioCVT(</SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #000000">cvt, wave.format, wave.channels, wave.freq,<BR>                            AUDIO_S16,   </SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">,             </SPAN><SPAN style="COLOR: #000000">22050</SPAN><SPAN style="COLOR: #000000">);<BR>    cvt.buf </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> (unsigned </SPAN><SPAN style="COLOR: #0000ff">char</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">)malloc(dlen</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">cvt.len_mult);<BR>    memcpy(cvt.buf, data, dlen);<BR>    cvt.len </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> dlen;<BR>    SDL_ConvertAudio(</SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #000000">cvt);<BR>    SDL_FreeWAV(data);<BR><BR>    </SPAN><SPAN style="COLOR: #008000">/*</SPAN><SPAN style="COLOR: #008000"> 灝嗛煶棰戞暟鎹斁鍏ラ煶棰戝彛錛堢珛鍒誨紑濮嬪洖鏀句簡錛?nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN><SPAN style="COLOR: #000000"><BR>    </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000"> ( sounds[index].data ) {<BR>        free(sounds[index].data);<BR>    }<BR>    SDL_LockAudio();<BR>    sounds[index].data </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> cvt.buf;<BR>    sounds[index].dlen </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> cvt.len_cvt;<BR>    sounds[index].dpos </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;<BR>    SDL_UnlockAudio();<BR>}</SPAN></DIV><BR><STRONG>4.涓浜涙湁鐢ㄧ殑妯″潡</STRONG><BR><BR> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #000000">#include </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">sdl_image.h</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"><BR><BR></SPAN><SPAN style="COLOR: #008000">/*</SPAN><SPAN style="COLOR: #008000"><BR> * Return the pixel value at (x, y)<BR> * NOTE: The surface must be locked before calling this!<BR> </SPAN><SPAN style="COLOR: #008000">*/</SPAN><SPAN style="COLOR: #000000"><BR>Uint32 getpixel(SDL_Surface </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">surface, </SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> x, </SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> y)<BR>{<BR>    </SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> bpp </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> surface</SPAN><SPAN style="COLOR: #000000">-></SPAN><SPAN style="COLOR: #000000">format</SPAN><SPAN style="COLOR: #000000">-></SPAN><SPAN style="COLOR: #000000">BytesPerPixel;<BR>    </SPAN><SPAN style="COLOR: #008000">/*</SPAN><SPAN style="COLOR: #008000"> Here p is the address to the pixel we want to retrieve </SPAN><SPAN style="COLOR: #008000">*/</SPAN><SPAN style="COLOR: #000000"><BR>    Uint8 </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">p </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> (Uint8 </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">)surface</SPAN><SPAN style="COLOR: #000000">-></SPAN><SPAN style="COLOR: #000000">pixels </SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000"> y </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000"> surface</SPAN><SPAN style="COLOR: #000000">-></SPAN><SPAN style="COLOR: #000000">pitch </SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000"> x </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000"> bpp;<BR><BR>    </SPAN><SPAN style="COLOR: #0000ff">switch</SPAN><SPAN style="COLOR: #000000">(bpp) {<BR>    </SPAN><SPAN style="COLOR: #0000ff">case</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">:<BR>        </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">p;<BR><BR>    </SPAN><SPAN style="COLOR: #0000ff">case</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">:<BR>        </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">(Uint16 </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">)p;<BR><BR>    </SPAN><SPAN style="COLOR: #0000ff">case</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">3</SPAN><SPAN style="COLOR: #000000">:<BR>        </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(SDL_BYTEORDER </SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000"> SDL_BIG_ENDIAN)<BR>            </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> p[</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">] </SPAN><SPAN style="COLOR: #000000"><<</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">16</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">|</SPAN><SPAN style="COLOR: #000000"> p[</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">] </SPAN><SPAN style="COLOR: #000000"><<</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">8</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">|</SPAN><SPAN style="COLOR: #000000"> p[</SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">];<BR>        </SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000"><BR>            </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> p[</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">] </SPAN><SPAN style="COLOR: #000000">|</SPAN><SPAN style="COLOR: #000000"> p[</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">] </SPAN><SPAN style="COLOR: #000000"><<</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">8</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">|</SPAN><SPAN style="COLOR: #000000"> p[</SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">] </SPAN><SPAN style="COLOR: #000000"><<</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">16</SPAN><SPAN style="COLOR: #000000">;<BR><BR>    </SPAN><SPAN style="COLOR: #0000ff">case</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">4</SPAN><SPAN style="COLOR: #000000">:<BR>        </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">(Uint32 </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">)p;<BR><BR>    </SPAN><SPAN style="COLOR: #0000ff">default</SPAN><SPAN style="COLOR: #000000">:<BR>        </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;       </SPAN><SPAN style="COLOR: #008000">/*</SPAN><SPAN style="COLOR: #008000"> shouldn't happen, but avoids warnings </SPAN><SPAN style="COLOR: #008000">*/</SPAN><SPAN style="COLOR: #000000"><BR>    }<BR>}<BR><BR><BR></SPAN><SPAN style="COLOR: #008000">/*</SPAN><SPAN style="COLOR: #008000"><BR> * Set the pixel at (x, y) to the given value<BR> * NOTE: The surface must be locked before calling this!<BR> </SPAN><SPAN style="COLOR: #008000">*/</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000"> putpixel(SDL_Surface </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">surface, </SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> x, </SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> y, Uint32 pixel)<BR>{<BR>    </SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> bpp </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> surface</SPAN><SPAN style="COLOR: #000000">-></SPAN><SPAN style="COLOR: #000000">format</SPAN><SPAN style="COLOR: #000000">-></SPAN><SPAN style="COLOR: #000000">BytesPerPixel;<BR>    </SPAN><SPAN style="COLOR: #008000">/*</SPAN><SPAN style="COLOR: #008000"> Here p is the address to the pixel we want to set </SPAN><SPAN style="COLOR: #008000">*/</SPAN><SPAN style="COLOR: #000000"><BR>    Uint8 </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">p </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> (Uint8 </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">)surface</SPAN><SPAN style="COLOR: #000000">-></SPAN><SPAN style="COLOR: #000000">pixels </SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000"> y </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000"> surface</SPAN><SPAN style="COLOR: #000000">-></SPAN><SPAN style="COLOR: #000000">pitch </SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000"> x </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000"> bpp;<BR><BR>    </SPAN><SPAN style="COLOR: #0000ff">switch</SPAN><SPAN style="COLOR: #000000">(bpp) {<BR>    </SPAN><SPAN style="COLOR: #0000ff">case</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">:<BR>        </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">p </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> pixel;<BR>        </SPAN><SPAN style="COLOR: #0000ff">break</SPAN><SPAN style="COLOR: #000000">;<BR><BR>    </SPAN><SPAN style="COLOR: #0000ff">case</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">:<BR>        </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">(Uint16 </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">)p </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> pixel;<BR>        </SPAN><SPAN style="COLOR: #0000ff">break</SPAN><SPAN style="COLOR: #000000">;<BR><BR>    </SPAN><SPAN style="COLOR: #0000ff">case</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">3</SPAN><SPAN style="COLOR: #000000">:<BR>        </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(SDL_BYTEORDER </SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000"> SDL_BIG_ENDIAN) {<BR>            p[</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">] </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> (pixel </SPAN><SPAN style="COLOR: #000000">>></SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">16</SPAN><SPAN style="COLOR: #000000">) </SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">0xff</SPAN><SPAN style="COLOR: #000000">;<BR>            p[</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">] </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> (pixel </SPAN><SPAN style="COLOR: #000000">>></SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">8</SPAN><SPAN style="COLOR: #000000">) </SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">0xff</SPAN><SPAN style="COLOR: #000000">;<BR>            p[</SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">] </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> pixel </SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">0xff</SPAN><SPAN style="COLOR: #000000">;<BR>        } </SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000"> {<BR>            p[</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">] </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> pixel </SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">0xff</SPAN><SPAN style="COLOR: #000000">;<BR>            p[</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">] </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> (pixel </SPAN><SPAN style="COLOR: #000000">>></SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">8</SPAN><SPAN style="COLOR: #000000">) </SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">0xff</SPAN><SPAN style="COLOR: #000000">;<BR>            p[</SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">] </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> (pixel </SPAN><SPAN style="COLOR: #000000">>></SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">16</SPAN><SPAN style="COLOR: #000000">) </SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">0xff</SPAN><SPAN style="COLOR: #000000">;<BR>        }<BR>        </SPAN><SPAN style="COLOR: #0000ff">break</SPAN><SPAN style="COLOR: #000000">;<BR><BR>    </SPAN><SPAN style="COLOR: #0000ff">case</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">4</SPAN><SPAN style="COLOR: #000000">:<BR>        </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">(Uint32 </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">)p </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> pixel;<BR>        </SPAN><SPAN style="COLOR: #0000ff">break</SPAN><SPAN style="COLOR: #000000">;<BR>    }<BR>}<BR><BR></SPAN><SPAN style="COLOR: #0000ff">bool</SPAN><SPAN style="COLOR: #000000"> showpic(SDL_Surface </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">surface,</SPAN><SPAN style="COLOR: #0000ff">const</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">char</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">filename)<BR>{<BR>    SDL_Surface </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">image;<BR><BR>    </SPAN><SPAN style="COLOR: #008000">/*</SPAN><SPAN style="COLOR: #008000"> Load the BMP file into a surface </SPAN><SPAN style="COLOR: #008000">*/</SPAN><SPAN style="COLOR: #000000"><BR>    image </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> IMG_Load(filename);<BR>    </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000"> (image </SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000"> NULL) {<BR>        fprintf(stderr, </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Couldn't load %s: %s\n</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,filename,SDL_GetError());<BR>        </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">false</SPAN><SPAN style="COLOR: #000000">;<BR>    }<BR><BR>    </SPAN><SPAN style="COLOR: #008000">/*</SPAN><SPAN style="COLOR: #008000"> Blit onto the screen surface </SPAN><SPAN style="COLOR: #008000">*/</SPAN><SPAN style="COLOR: #000000"><BR>    </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(SDL_BlitSurface(image, NULL, surface, NULL) </SPAN><SPAN style="COLOR: #000000"><</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">)<BR>        fprintf(stderr, </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">BlitSurface error: %s\n</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">, SDL_GetError());<BR><BR>    SDL_UpdateRect(surface, </SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">, </SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">, image</SPAN><SPAN style="COLOR: #000000">-></SPAN><SPAN style="COLOR: #000000">w, image</SPAN><SPAN style="COLOR: #000000">-></SPAN><SPAN style="COLOR: #000000">h);<BR><BR>    </SPAN><SPAN style="COLOR: #008000">/*</SPAN><SPAN style="COLOR: #008000"> Free the allocated BMP surface </SPAN><SPAN style="COLOR: #008000">*/</SPAN><SPAN style="COLOR: #000000"><BR>    SDL_FreeSurface(image);<BR><BR>    </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">true</SPAN><SPAN style="COLOR: #000000">;<BR>}<BR><BR>SDL_Surface</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000"> createsurf(</SPAN><SPAN style="COLOR: #0000ff">const</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">char</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000"> filename)<BR>{<BR>    SDL_Surface </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">image;<BR><BR>    </SPAN><SPAN style="COLOR: #008000">/*</SPAN><SPAN style="COLOR: #008000"> Load the BMP file into a surface </SPAN><SPAN style="COLOR: #008000">*/</SPAN><SPAN style="COLOR: #000000"><BR>    image </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> IMG_Load(filename);<BR>    </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000"> (image </SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000"> NULL) {<BR>        fprintf(stderr, </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Couldn't load %s: %s\n</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,filename,SDL_GetError());<BR>        </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;<BR>    }<BR><BR>    </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> image;<BR>}</SPAN></DIV><BR>getpixel 鍙栧緱鍍忕礌鐨勯鑹?BR>putpixel 鐢葷偣<BR>showpic 鍔犺澆涓涓浘鐗囧埌鏌愪釜琛ㄩ潰<BR>createsurf 浠庢枃浠朵腑鍒涢犺〃闈?BR><BR>SDL鏈夊ぇ閲忕殑紺轟緥鍜岀涓夋柟搴撳彲浠ヤ嬌鐢紝闈炲父鐨勪笉閿?BR>鏈鍚庢帹鑽愪竴涓猄DL鍐欑殑瓚呯駭鐜涗附娓告垙<BR><A >http://smclone.sourceforge.net/</A><BR><BR><BR><BR><img src ="http://www.shnenglu.com/sandy/aggbug/2219.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/sandy/" target="_blank">灝忔槑</a> 2005-12-28 21:32 <a href="http://www.shnenglu.com/sandy/archive/2005/12/28/2219.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>涓鴻嫳闆勬棤鏁?鍐欎釜娓告垙淇敼鍣?/title><link>http://www.shnenglu.com/sandy/archive/2005/12/19/1872.html</link><dc:creator>灝忔槑</dc:creator><author>灝忔槑</author><pubDate>Mon, 19 Dec 2005 03:37:00 GMT</pubDate><guid>http://www.shnenglu.com/sandy/archive/2005/12/19/1872.html</guid><wfw:comment>http://www.shnenglu.com/sandy/comments/1872.html</wfw:comment><comments>http://www.shnenglu.com/sandy/archive/2005/12/19/1872.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.shnenglu.com/sandy/comments/commentRss/1872.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/sandy/services/trackbacks/1872.html</trackback:ping><description><![CDATA[鎴戞槸姣旇緝閾佹潌鐨勮嫳闆勬棤鏁?鐨刦ans,鍦ㄧ綉涓婄湅鍒拌繖鏍風(fēng)殑鏂囩珷錛?A >http://game.china.com/zh_cn/play/10002765/20021113/11362720.html</A><BR><BR>灝辨槸璁╂垜鏂硅嫳闆勫浼?xì)鎵鏈夋妧鑳斤紝鐪熺殑铔埥鐨?BR>瀛︿細(xì)28欏規(guī)妧鑳戒慨鏀規(guī)硶<BR><IMG height=644 alt=heroes3.jpg src="http://www.shnenglu.com/images/cppblog_com/sandy/heroes3.jpg" width=806 border=0><BR><BR>銆銆<FONT size=2>棣栧厛錛屾妸浣犵殑鑻遍泟鐨勫+鍏佃皟鍒板墠闈㈠嚑鏍兼潵錛屾帴鐫鐢‵PE鏉ユ悳绱€備緥濡備綘鐨勫+鍏墊暟錛氱涓鏍?錛岀浜屾牸14錛岀涓夋牸4錛岄偅涔堝氨鐢?3錛?錛?4錛?錛?錛? 鏉ユ悳绱紝灝卞彲浠ユ壘鍒板湴鍧銆傛樉紺轟負(fù)錛?<BR>銆銆澹叺縐嶇被錛?FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF<BR>銆銆 FF FF FF FF FF FF FF FF FF FF FF FF 03 00 00 00錛嶅+鍏墊暟閲?BR>銆銆 0E 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 <BR>銆銆 00 00 00 00 00 00 00 00 01 02 03 04 05 06 07 08<BR>銆銆 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <BR>銆銆 25 26 27 28 01 02 03 04 05 06 07 08 00 00 00 00<BR>銆銆 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <BR>銆銆 04 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF<BR>銆銆 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF<BR>銆銆 FF鎴?0浣滀負(fù)涓鏍鹼紝姣?鏍兼槸浠h〃涓縐嶅睘鎬э紝鐗╁搧錛?鐘舵佺瓑絳夈傚墠闈?8鏍兼槸澹叺鐨勭綾伙紝鎺ヤ笅鏉?8鏍兼槸澹叺鐨勬暟閲忋備緥濡? 鑻遍泟鍙甫7縐嶅+鍏碉紝浣犺姣忕閮芥槸澶╀嬌錛岄偅涔堟妸<BR>銆銆 03 00 00 00 鍓嶉潰鐨凢F FF FF FF 鏀逛負(fù)0D 00 00 00銆?濡傛灉浣犺鏁伴噺100錛?閭d箞鎶?BR>銆銆 03 00 00 00 鏀逛負(fù)64 00 00 00銆?澹叺鐨勭綾繪槸榪欐牱鍒嗙殑錛?0 00 00 00 鏄灙鍏碉紝<BR>銆銆 01 00 00 00 鏄?榪涘寲涓綰х殑鏋叺錛?2 00 00 00 鏄紦綆墜錛?3 00 00 00 鏄綆墜銆?BR>銆銆 濡傛綾繪帹銆?BR>銆銆 <BR>銆銆 浠?3閭d竴鏍煎紑濮嬫暟錛?8鏍煎悗灝辨槸鑻遍泟鐨勬妧鑳界瓑綰э紝鎺ョ潃鐨?8鏍兼槸鑻遍泟鐨勬妧鑳斤紝<BR>銆銆 涔熷氨鏄粠01鍒?8浠h〃鐨勬槸鑻遍泟鐨勬妧鑳界瓑綰э紝鎶鑳界瓑綰ф渶澶氬彧鑳芥槸3銆?BR>銆銆 01 綆湳絳夌駭 02 瀵昏礬鏈瓑綰?03 鍚庡嫟瀛︾瓑綰?BR>銆銆 04 渚﹀療鏈瓑綰?05 澶栦氦鏈瓑綰?06 鑸搗鏈瓑綰?BR>銆銆 07 棰嗗鏈瓑綰?08 鏅烘収鏈瓑綰?09 紲炵鏈瓑綰?BR>銆銆 10 騫歌繍鏈瓑綰?11 寮?xì)w亾鏈瓑綰?12 楣扮溂鏈瓑綰?BR>銆銆 13 鎷涢瓊鏈瓑綰?14 鐞嗚儲鏈瓑綰?15 鐏郴欖旀硶絳夌駭<BR>銆銆 16 姘旂郴欖旀硶絳夌駭 17 姘寸郴欖旀硶絳夌駭 18 鍦熺郴欖旀硶絳夌駭<BR>銆銆 19 瀛︽湳絳夌駭 20 鎴樻湳絳夌駭 21 鐐湳絳夌駭<BR>銆銆 22 瀛︿範(fàn)鑳藉姏絳夌駭 23 榪涙敾鏈瓑綰?24 闃插盡鏈瓑綰?<BR></FONT><BR>浣嗘槸姣忔浣跨敤FPE鐪熺殑寰堥夯鐑︼紝鎴戝張鏄緢鎳掔殑浜恒侳PE鍙互鍋氬埌鐨勪簨鎯咃紝鎴戜篃鍙互鍋氬埌銆?BR>鍏跺疄娓告垙淇敼涓嶈繃鏄嬌鐢?STRONG><FONT color=#0000ff>ReadProcessMemory</FONT></STRONG>鍜?STRONG><FONT color=#0000ff>WriteProcessMemory</FONT></STRONG><BR><BR>鑺變簡鍗婂ぉ涓嶆柇鐨勮瘯楠岋紝緇堜簬鍐欏嚭涓涓彲浠ョ敤浜庤嫳闆勬棤鏁?.1鐗堢殑淇敼鍣紝娌℃湁鍐欑晫闈紙I'm lazy-:)錛夛紝榪愯涔嬪悗灝辨槸璁╂垜鏂硅嫳闆勫浼?xì)鎵鏈夋妧鑳姐?BR><BR> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #000000">#include </SPAN><SPAN style="COLOR: #000000"><</SPAN><SPAN style="COLOR: #000000">windows.h</SPAN><SPAN style="COLOR: #000000">></SPAN><SPAN style="COLOR: #000000"><BR>#include </SPAN><SPAN style="COLOR: #000000"><</SPAN><SPAN style="COLOR: #000000">tlhelp32.h</SPAN><SPAN style="COLOR: #000000">></SPAN><SPAN style="COLOR: #000000"><BR>#include </SPAN><SPAN style="COLOR: #000000"><</SPAN><SPAN style="COLOR: #000000">cstdio</SPAN><SPAN style="COLOR: #000000">></SPAN><SPAN style="COLOR: #000000"><BR><BR></SPAN><SPAN style="COLOR: #0000ff">const</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">char</SPAN><SPAN style="COLOR: #000000"> MODULE_NAME[] </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Heroes3.exe</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR><BR></SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000"> printError( TCHAR</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000"> msg )<BR>{<BR>    DWORD eNum;<BR>    TCHAR sysMsg[</SPAN><SPAN style="COLOR: #000000">256</SPAN><SPAN style="COLOR: #000000">];<BR>    TCHAR</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000"> p;<BR>    <BR>    eNum </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> GetLastError( );<BR>    FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM </SPAN><SPAN style="COLOR: #000000">|</SPAN><SPAN style="COLOR: #000000"> FORMAT_MESSAGE_IGNORE_INSERTS,<BR>        NULL, eNum,<BR>        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"> Default language</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">        sysMsg, </SPAN><SPAN style="COLOR: #000000">256</SPAN><SPAN style="COLOR: #000000">, NULL );<BR>    <BR>    </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"> Trim the end of the line and terminate it with a null</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">    p </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> sysMsg;<BR>    </SPAN><SPAN style="COLOR: #0000ff">while</SPAN><SPAN style="COLOR: #000000">( ( </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">p </SPAN><SPAN style="COLOR: #000000">></SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">31</SPAN><SPAN style="COLOR: #000000"> ) </SPAN><SPAN style="COLOR: #000000">||</SPAN><SPAN style="COLOR: #000000"> ( </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">p </SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">9</SPAN><SPAN style="COLOR: #000000"> ) )<BR>        </SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">p;<BR>    </SPAN><SPAN style="COLOR: #0000ff">do</SPAN><SPAN style="COLOR: #000000"> { </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">p</SPAN><SPAN style="COLOR: #000000">--</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">; } </SPAN><SPAN style="COLOR: #0000ff">while</SPAN><SPAN style="COLOR: #000000">( ( p </SPAN><SPAN style="COLOR: #000000">>=</SPAN><SPAN style="COLOR: #000000"> sysMsg ) </SPAN><SPAN style="COLOR: #000000">&&</SPAN><SPAN style="COLOR: #000000"><BR>        ( ( </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">p </SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">'</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #000000">'</SPAN><SPAN style="COLOR: #000000"> ) </SPAN><SPAN style="COLOR: #000000">||</SPAN><SPAN style="COLOR: #000000"> ( </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">p </SPAN><SPAN style="COLOR: #000000"><</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">33</SPAN><SPAN style="COLOR: #000000"> ) ) );<BR>    <BR>    </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"> Display the message</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">    printf( </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">WARNING: %s failed with error %d (%s)\n</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">, msg, eNum, sysMsg );<BR>}<BR><BR><BR>DWORD findProcessId(</SPAN><SPAN style="COLOR: #0000ff">const</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">char</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">module)<BR>{<BR>    DWORD result </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">;<BR>    HANDLE hProcessSnap;<BR>    <BR>    </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"> Take a snapshot of all processes in the system.</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">    hProcessSnap </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, </SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000"> );<BR>    </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">( hProcessSnap </SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000"> INVALID_HANDLE_VALUE )<BR>    {<BR>        printError( </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">CreateToolhelp32Snapshot (of processes)</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> );<BR>        </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> result;<BR>    }<BR>    <BR>    PROCESSENTRY32 pe32;<BR>    </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"> Set the size of the structure before using it.</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">    pe32.dwSize </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">sizeof</SPAN><SPAN style="COLOR: #000000">( PROCESSENTRY32 );<BR>    <BR>    </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"> Retrieve information about the first process,<BR>    </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"> and exit if unsuccessful</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">    </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">( </SPAN><SPAN style="COLOR: #000000">!</SPAN><SPAN style="COLOR: #000000">Process32First( hProcessSnap, </SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #000000">pe32 ) )<BR>    {<BR>        printError( </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Process32First</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> );  </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"> Show cause of failure</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">        CloseHandle( hProcessSnap );     </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"> Must clean up the snapshot object!</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">        </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> result;<BR>    }<BR>    <BR>    </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"> Now walk the snapshot of processes, and<BR>    </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"> display information about each process in turn</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">    </SPAN><SPAN style="COLOR: #0000ff">do</SPAN><SPAN style="COLOR: #000000"><BR>    {<BR>        </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(stricmp(pe32.szExeFile,module)</SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">)<BR>        {<BR>            printf( </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">find process:  %s\n</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">, module );<BR>            result </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> pe32.th32ProcessID;<BR>            </SPAN><SPAN style="COLOR: #0000ff">break</SPAN><SPAN style="COLOR: #000000">;<BR>        }<BR>        <BR>    } </SPAN><SPAN style="COLOR: #0000ff">while</SPAN><SPAN style="COLOR: #000000">( Process32Next( hProcessSnap, </SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #000000">pe32 ) );<BR>    <BR>    CloseHandle( hProcessSnap );<BR>    </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> result;<BR>}<BR><BR></SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> main(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> argc,</SPAN><SPAN style="COLOR: #0000ff">char</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">argv[])<BR>{<BR>    DWORD h3pid </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">;<BR>    <BR>    h3pid </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">  findProcessId(MODULE_NAME);<BR>    </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(h3pid </SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">)<BR>    {<BR>        printf(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">can't find %s in memory,please make sure the program started!\n</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,MODULE_NAME);<BR>        </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">;<BR>    }<BR><BR>    HANDLE h3 </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> OpenProcess( PROCESS_ALL_ACCESS, FALSE, h3pid );<BR>    </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">( h3 </SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000"> NULL )<BR>    {<BR>      printError( </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">OpenProcess</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> );<BR>      </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">;<BR>    }<BR><BR>    unsigned </SPAN><SPAN style="COLOR: #0000ff">long</SPAN><SPAN style="COLOR: #000000"> sideOffset</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">0x824994</SPAN><SPAN style="COLOR: #000000">;<BR>    unsigned </SPAN><SPAN style="COLOR: #0000ff">char</SPAN><SPAN style="COLOR: #000000"> side </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">0xff</SPAN><SPAN style="COLOR: #000000">;<BR>    </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">!</SPAN><SPAN style="COLOR: #000000">ReadProcessMemory(h3,(LPCVOID)sideOffset,</SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #000000">side,</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">)) //鏌ユ壘鎴戞柟鐨勯鑹?BR>    {<BR>        printError( </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">ReadProcessMemory</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> );<BR>        </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">;<BR>    }<BR><BR>    </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(side</SPAN><SPAN style="COLOR: #000000">!=</SPAN><SPAN style="COLOR: #000000">0xff</SPAN><SPAN style="COLOR: #000000">)<BR>    {<BR>        printf(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">find current side:%d\n</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">)side);<BR>    }<BR>    </SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000"><BR>    {<BR>        printf(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">can't find current side\n</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>        side </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;<BR>    }<BR><BR>    unsigned </SPAN><SPAN style="COLOR: #0000ff">long</SPAN><SPAN style="COLOR: #000000"> heroBaseAddress </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">0x15216ab</SPAN><SPAN style="COLOR: #000000">;  </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">hero name start</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">    unsigned </SPAN><SPAN style="COLOR: #0000ff">char</SPAN><SPAN style="COLOR: #000000"> name[</SPAN><SPAN style="COLOR: #000000">20</SPAN><SPAN style="COLOR: #000000">]</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">{</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">};<BR>    unsigned </SPAN><SPAN style="COLOR: #0000ff">long</SPAN><SPAN style="COLOR: #000000"> temp </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> heroBaseAddress</SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">;<BR><BR>    </SPAN><SPAN style="COLOR: #0000ff">char</SPAN><SPAN style="COLOR: #000000"> b[</SPAN><SPAN style="COLOR: #000000">28</SPAN><SPAN style="COLOR: #000000">]; //28縐嶆妧鑳?BR>    </SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> size </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">sizeof</SPAN><SPAN style="COLOR: #000000">(b);<BR>    memset(b,</SPAN><SPAN style="COLOR: #000000">3</SPAN><SPAN style="COLOR: #000000">,size);<BR>    b[</SPAN><SPAN style="COLOR: #000000">12</SPAN><SPAN style="COLOR: #000000">]</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;//涓嶅鎷涢瓊鏈?BR><BR>    </SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> i</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;i</SPAN><SPAN style="COLOR: #000000"><=</SPAN><SPAN style="COLOR: #000000">155</SPAN><SPAN style="COLOR: #000000">;</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">i) //涓鍏?56涓狧ero<BR>    {<BR>        </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">!</SPAN><SPAN style="COLOR: #000000">ReadProcessMemory(h3,(LPCVOID)temp,name,</SPAN><SPAN style="COLOR: #0000ff">sizeof</SPAN><SPAN style="COLOR: #000000">(name),</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">))<BR>        {<BR>            printError( </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">ReadProcessMemory</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> );<BR>            </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">;<BR>        }<BR>        </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(name[</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">]</SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000">side)<BR>        {<BR>            printf(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">find:%s\t</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,name</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">);<BR>            </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">!</SPAN><SPAN style="COLOR: #000000">WriteProcessMemory(h3,(LPVOID)(temp</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">0xA7</SPAN><SPAN style="COLOR: #000000">),b,size,</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">))<BR>            {<BR>                printError( </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">WriteProcessMemory</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> );<BR>                </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">;<BR>            }<BR>            </SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000"><BR>            {<BR>                printf(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">update skill sucess!\n</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>            }<BR>        }<BR>        temp </SPAN><SPAN style="COLOR: #000000">+=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">0x492</SPAN><SPAN style="COLOR: #000000">;<BR>    }<BR><BR>    CloseHandle(h3);<BR>    </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;<BR>}</SPAN></DIV> <P><BR>闄勫姞:<BR>璁╂垜鏂硅嫳闆勬墍鏈夎嫳闆勫浼?xì)闄や簡鎷洐靷鏈殑浠ュ鐨?7縐嶆妧鑳界殑灝忕▼搴?/P> <P>浠ュ墠鑻遍泟涓栫晫涔熸湁涓涓繖鏍風(fēng)殑紼嬪簭錛屼絾鏄増鏈お鑰侊紝涓嶈兘鐢ㄤ簡銆?/P> <P>浣跨敤鐗堟湰:涓枃鐗?.1,鍏朵粬鐗堟湰娌℃湁嫻嬭瘯</P> <P>浣跨敤鏂規(guī)硶:榪涘叆娓告垙鍚庯紝榪愯紼嬪簭</P> <P>Download: http://www.shnenglu.com/Files/sandy/h3c.zip</P><img src ="http://www.shnenglu.com/sandy/aggbug/1872.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/sandy/" target="_blank">灝忔槑</a> 2005-12-19 11:37 <a href="http://www.shnenglu.com/sandy/archive/2005/12/19/1872.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Ogre鐨凷ingleton瀹炵幇浠ュ強鏀硅繘http://www.shnenglu.com/sandy/archive/2005/11/30/1436.html灝忔槑灝忔槑Wed, 30 Nov 2005 03:38:00 GMThttp://www.shnenglu.com/sandy/archive/2005/11/30/1436.htmlhttp://www.shnenglu.com/sandy/comments/1436.htmlhttp://www.shnenglu.com/sandy/archive/2005/11/30/1436.html#Feedback1http://www.shnenglu.com/sandy/comments/commentRss/1436.htmlhttp://www.shnenglu.com/sandy/services/trackbacks/1436.htmlwww.ogre3d.org
OGRE: A 3D library for OpenGL and/or Direct3D

 

template <typename T> class Singleton
{
protected:
static T* ms_Singleton;

public:
Singleton( 
void )
{
    assert( 
!ms_Singleton );
    ms_Singleton 
= static_cast< T* >this );
}
~Singleton( void )
    {  assert( ms_Singleton );  ms_Singleton 
= 0;  }
static T& getSingleton( void )
    {  assert( ms_Singleton );  
return ( *ms_Singleton );  }
static T* getSingletonPtr( void )
    {  
return ( ms_Singleton );  }
};

//client绔殑浠g爜
//Singleton鐨勭被
//Root.h
class Root:public Singleton<Root>
{
   
public:
      
void Use();
};

//鍒濆鍖?BR>//Root.cpp
Root * Singleton<Root>::ms_Singleton =0;
Root g_root;
//must declare once only

//浣跨敤
//Test.Cpp
Root::getSingleton().Use();

寰堢畝鍗曪紝浣跨敤鐨勬妧宸ф槸template base class
榪欑瀹炵幇鏂規(guī)硶鐨勫ソ澶勬槸澶嶇敤鎬уソ銆?BR>涓嶈繃浣跨敤鑰呰澹版槑Root * Singleton<Root>::ms_Singleton =0;鎸鴻鍘岀殑

鏀硅繘鏂規(guī)硶錛歵emplate static member function
涔熷氨鏄敼鍙樺0鏄庝竴涓猻tatic T*鍦╰emplate class錛屾崲鎴愪嬌鐢ㄩ潤鎬佹垚鍛樺嚱鏁板彇鍑篿nstance

template <typename T> class Singleton
{
private:
static T* & ms_Singleton()
        {
                
static T* ms_Singleton_ =0 ;
                
return ms_Singleton_;
        }
        
public:
Singleton( 
void )
{
    assert( 
!ms_Singleton() );
    ms_Singleton() 
= static_cast< T* >this );
}
~Singleton( void )
        {  assert( ms_Singleton() );  ms_Singleton() 
= 0;  }
static T& getSingleton( void )
        {  assert( ms_Singleton() );  
return ( *ms_Singleton() );  }
static T* getSingletonPtr( void )
        {  
return ( ms_Singleton() );  }
};



 



灝忔槑 2005-11-30 11:38 鍙戣〃璇勮
]]>
久久久久久久97| 精品综合久久久久久98| 久久免费精品视频| 久久av高潮av无码av喷吹| 久久精品无码专区免费 | 欧美国产成人久久精品| 国产精品成人久久久| 狠狠狠色丁香婷婷综合久久五月| 国产精品免费久久久久久久久| 久久无码AV一区二区三区| 久久强奷乱码老熟女| 亚洲?V乱码久久精品蜜桃| 久久99热只有频精品8| 日本亚洲色大成网站WWW久久| 婷婷久久精品国产| 久久无码AV中文出轨人妻| 色8久久人人97超碰香蕉987| 久久精品18| 亚洲欧洲久久av| 久久精品中文字幕一区| 四虎影视久久久免费| 国内高清久久久久久| 久久亚洲精品无码观看不卡| 无码任你躁久久久久久久| 亚洲综合伊人久久综合| 久久久久免费看成人影片| 老司机国内精品久久久久| 国产视频久久| 久久国产色av免费看| 波多野结衣中文字幕久久| 亚洲狠狠综合久久| 97久久超碰国产精品2021| 久久这里只有精品首页| 久久99精品久久只有精品| 久久99国产亚洲高清观看首页| 久久996热精品xxxx| 熟妇人妻久久中文字幕| 亚洲AV无码久久精品狠狠爱浪潮 | 日日躁夜夜躁狠狠久久AV| 精品免费tv久久久久久久| 亚洲国产成人久久笫一页|