<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>DFdou&#039;s Blog &#187; NamePK</title>
	<atom:link href="http://nwhy.org/tag/namepk/feed" rel="self" type="application/rss+xml" />
	<link>http://nwhy.org</link>
	<description>Life is short,Be yourself.</description>
	<lastBuildDate>Wed, 25 Aug 2010 05:26:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>GAME-NamePK 基于MD5的名字PK(下)</title>
		<link>http://nwhy.org/game-namepk-2.html</link>
		<comments>http://nwhy.org/game-namepk-2.html#comments</comments>
		<pubDate>Sun, 22 Mar 2009 02:00:48 +0000</pubDate>
		<dc:creator>DFdou</dc:creator>
				<category><![CDATA[AIR+FB+AS3]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[MD5]]></category>
		<category><![CDATA[NamePK]]></category>

		<guid isPermaLink="false">http://nwhy.org/?p=3964</guid>
		<description><![CDATA[上接：“GAME-NamePK 基于MD5的名字PK(上)” Source Code： import org.nwhy.Player; //这个是As3CoreLib里的工具类 import com.adobe.utils.StringUtil; import gs.TweenLite; btnStart.buttonMode=true; btnStart.addEventListener (MouseEvent.CLICK... ]]></description>
			<content:encoded><![CDATA[<p>上接：“<a  href="http://nwhy.org/game-namepk-1.html">GAME-NamePK 基于MD5的名字PK(上)</a>”<br />
Source Code：</p>
<pre class="brush: js">
import org.nwhy.Player;
//这个是As3CoreLib里的工具类
import com.adobe.utils.StringUtil;
import gs.TweenLite;

btnStart.buttonMode=true;
btnStart.addEventListener (MouseEvent.CLICK,gameStart);
//开始游戏
function gameStart (_evt:MouseEvent) {
	var p1Name:String=trimStr(inputP1.text);
	var p2Name:String=trimStr(inputP2.text);
	if (checkPName (p1Name) &amp;&amp; checkPName (p2Name)) {
		txtInfoShow.text=&quot;&quot;;
		btnStart.buttonMode=false;
		btnStart.removeEventListener (MouseEvent.CLICK,gameStart);
		var p1=new Player(p1Name);
		initPlayer(p1,mcP1);
		var p2=new Player(p2Name);
		initPlayer(p2,mcP2);
		if(p1.getDex()&gt;=p2.getDex()){
			txtInfoShow.appendText(&quot;比对敏捷值  &quot;+p1.getName()+&quot;  获得优先攻击权 \n&quot;);
			setTimeout(doPK,2000,p1,p2);
		}else{
			txtInfoShow.appendText(&quot;比对敏捷值  &quot;+p2.getName()+&quot;  获得优先攻击权 \n&quot;);
			setTimeout(doPK,2000,p2,p1);
		}
	} else {
		txtInfoShow.appendText(&quot;请输入名字！\n&quot;);
	}
}
//初始化角色
function initPlayer(_player:Player,_mc:MovieClip){
	_player.setBindMC(_mc);
	setTxt(_mc.txtName,String(_player.getName()));
	setTxt(_mc.txtHp,String(_player.getHp()));
	setTxt(_mc.txtStr,String(_player.getStr()));
	setTxt(_mc.txtDex,String(_player.getDex()));
	TweenLite.to(_mc.hp,0.3,{width:_player.getHp()/5&lt; &amp;lt;0});
	TweenLite.to(_mc.str,0.3,{width:_player.getStr()*2});
	TweenLite.to(_mc.dex,0.3,{width:_player.getDex()*2});
}
function doPK(_p1:Player,_p2:Player){
	attack(_p1,_p2);
	if(_p2.isAlive()){
		setTimeout(doPK,1000,_p2,_p1);
	}
}
//攻击函数
function attack(_p1:Player,_p2:Player){
	var p1AttackValue:Array=_p1.attack();
	gameInfoShow(txtInfoShow,p1AttackValue[1],p1AttackValue[0],_p1);
	if(_p1.getRate()&gt;_p2.getRate()){
		_p2.setHp(_p2.getHp()-p1AttackValue[0]);
  		if(_p2.isAlive()){
			setTxt(_p2.getBindMC().txtHp,String(_p2.getHp()));
			TweenLite.to(_p2.getBindMC().hp,0.3,{width:_p2.getHp()/5&lt; &amp;lt;0});
		}else{
			setTxt(_p2.getBindMC().txtHp,&quot;死亡&quot;);
			TweenLite.to(_p2.getBindMC().hp,0.3,{width:0});
			txtInfoShow.appendText(_p2.getName()+&quot;  被扁趴下  &quot;+_p1.getName()+&quot;  获得胜利 \n&quot;);
			btnStart.buttonMode=true;
			btnStart.addEventListener (MouseEvent.CLICK,gameStart);
		}
	}else{
		txtInfoShow.appendText(&quot;但是  &quot;+_p2.getName()+&quot;  闪开了 \n&quot;);
	}
}
//文本设置
function setTxt(_txt:TextField,_str:String){
	_txt.text=_str;
}
//显示PK实况
function gameInfoShow(_txt:TextField,_style:String,_str:uint,_player:Player){
	_txt.appendText(_player.getName()+&quot;  &quot;+_style+&quot;  伤害值为  &quot;+_str+&quot;\n&quot;);
}
//简单的见车名字输入
function checkPName (playerName:String):Boolean {
	if (playerName==&quot;&quot;) {
		return false;
	} else {
		return true;
	}
}
//去左右空格函数
function trimStr(_str:String){
	return StringUtil.trim(_str);
}
</pre>
<p>相对来说主要就是攻击的顺序判断，攻击的命中，还有游戏是否结束的判断。<br />
Source files here:http://dl.getdropbox.com/u/477487/flash/game/namePK.rar<br />
<span id="more-3964"></span><br />
放个豆腐和豆奶的PK结果记录哈：</p>
<pre class="brush: html">
比对敏捷值  豆奶  获得优先攻击权
豆奶  使出了砖石星辰拳  伤害值为  122
豆腐  喝下一口酒精喷出一个大火球  伤害值为  82
但是  豆奶  闪开了
豆奶  搬起一块石头砸了过来  伤害值为  111
豆腐  喝下一口酒精喷出一个大火球  伤害值为  91
豆奶  扔出了发着佛光的雅典娜  伤害值为  128
豆腐  不知从哪丢出一陀大便  伤害值为  91
但是  豆奶  闪开了
豆奶  使出了砖石星辰拳  伤害值为  133
豆腐  被扁趴下  豆奶  获得胜利
</pre>
<h4  class="related_post_title">Some Related Posts</h4><ul class="related_post"><li>2009/03/21 -- <a  href="http://nwhy.org/game-namepk-1.html" title="GAME-NamePK 基于MD5的名字PK(上)">GAME-NamePK 基于MD5的名字PK(上)</a> (4)</li><li>2009/07/20 -- <a  href="http://nwhy.org/game-avoid-bullets-2.html" title="AS3-子弹躲避游戏(下)">AS3-子弹躲避游戏(下)</a> (0)</li><li>2009/07/17 -- <a  href="http://nwhy.org/game-avoid-bullets-1.html" title="AS3-子弹躲避游戏(上)">AS3-子弹躲避游戏(上)</a> (1)</li><li>2009/02/24 -- <a  href="http://nwhy.org/as3-mc-move.html" title="AS3-MC的移动控制">AS3-MC的移动控制</a> (3)</li><li>2009/09/07 -- <a  href="http://nwhy.org/as3-physics-formula.html" title="Flash-一些常用物理公式和AS3的结合应用">Flash-一些常用物理公式和AS3的结合应用</a> (1)</li><li>2009/08/10 -- <a  href="http://nwhy.org/as3-lianliankan.html" title="AS3-连连看的主要算法">AS3-连连看的主要算法</a> (8)</li><li>2009/07/28 -- <a  href="http://nwhy.org/flash-fuzzy-theory.html" title="Flash &#8211; 说是XXX的模糊理论视觉模型？">Flash &#8211; 说是XXX的模糊理论视觉模型？</a> (2)</li><li>2009/07/27 -- <a  href="http://nwhy.org/flash-setter-getter.html" title="Flash-Setter &#038; Getter">Flash-Setter &#038; Getter</a> (0)</li><li>2009/07/13 -- <a  href="http://nwhy.org/as3-code-optimization.html" title="AS3 Code Optimization一些代码优化的问题">AS3 Code Optimization一些代码优化的问题</a> (0)</li><li>2009/06/25 -- <a  href="http://nwhy.org/flash-megazine3.html" title="Flash-An Pageflip/Flashbook Engine MegaZine 3">Flash-An Pageflip/Flashbook Engine MegaZine 3</a> (4)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://nwhy.org/game-namepk-2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GAME-NamePK 基于MD5的名字PK(上)</title>
		<link>http://nwhy.org/game-namepk-1.html</link>
		<comments>http://nwhy.org/game-namepk-1.html#comments</comments>
		<pubDate>Sat, 21 Mar 2009 06:30:00 +0000</pubDate>
		<dc:creator>DFdou</dc:creator>
				<category><![CDATA[AIR+FB+AS3]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[MD5]]></category>
		<category><![CDATA[NamePK]]></category>

		<guid isPermaLink="false">http://nwhy.org/?p=3958</guid>
		<description><![CDATA[先上Demo： 灵感来自网上的“MD5大作战”，不过无法找到原作者的链接。 这个游戏过程很简单，只要输入2个名字，点击“StartPk”，就开始战斗，直到有一个被扁趴下为止。 详细的制作过程如... ]]></description>
			<content:encoded><![CDATA[<p>先上Demo：<br />
<object id="namePK" height="601" width="650" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"><param name="allowScriptAccess" value="sameDomain"/><param name="movie" value="http://nwhy.org/nwhy/game/namePK.swf"/><param name="quality" value="high"/><embed height="601" width="650" src="http://nwhy.org/nwhy/game/namePK.swf" quality="high" bgcolor="#ffffff" name="namePK" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"/><br />
</object><br />
<span id="more-3958"></span><br />
灵感来自网上的“MD5大作战”，不过无法找到原作者的链接。<br />
这个游戏过程很简单，只要输入2个名字，点击“StartPk”，就开始战斗，直到有一个被扁趴下为止。<br />
详细的制作过程如下：<br />
首先要让输入的名字对应的角色属性值唯一化，实现这个的方法有很多种(例如MD5，SHA)，这里用的是MD5，先把输入的名字去除左右空格后转化做MD5转换，这样出来的就是一个固定32位长度的字符串，接下去只要把这个字符串转换成数字就可以了，做法有好几种，可以将字符串里的字母转换为ASCII码值，可以直接去掉里边的字母只保留数字，也可以自己做一个转换函数来把字母转换成特定的数字，这里我直接去掉字符串中的字母。<br />
实现这部分功能的代码，根据输入字符串生成Player属性的类，Player.as:</p>
<pre class="brush: js">
package org.nwhy{
	import utils.MD5;
	import flash.display.MovieClip;

	public class Player {
		//名字
		private var _name:String;
		//血量值
		private var _hp:int;
		//力量值，影响攻击力
		private var _str:uint;
		//敏捷值，影响命中和躲避率
		private var _dex:uint;
		//幸运值，影响攻击力和命中/闪避率
		private var _luck:uint;
		//显示状态的MC
		private var _bindMC:MovieClip;
		//攻击方式
		private var _aryAttackStyle:Array=new Array(&quot;不知从哪丢出一陀大便&quot;,&quot;搬起一块石头砸了过来&quot;,&quot;喝下一口酒精喷出一个大火球&quot;,&quot;高唱我的菊花为谁开&quot;,&quot;使出了砖石星辰拳&quot;,&quot;扔出了发着佛光的雅典娜&quot;);
		public function Player (__str:String=&quot;&quot;) {
			var strTmp=MD5.hash(__str);
			strTmp=str2num(strTmp);
			//保证strTmp的长度为10个字符以上
			while (strTmp.length&amp;lt;10) {
				strTmp+=strTmp;
			}
			//各属性的赋值和调整
			_hp=int(strTmp.substr(0,3));
			if (_hp&amp;lt;150) {
				_hp+=200;
			} else if (500&lt;_hp ) {
				_hp=(_hp*0.8)&lt;&amp;lt;0;
			}
			_str=int(strTmp.substr(3,2));
			if (_str&amp;lt;20) {
				_str+=20;
			} else if (90&lt;_str) {
				_str=(_str*0.9)&lt;&amp;lt;0;
			}
			_dex=int(strTmp.substr(5,2));
			if (_dex&amp;lt;20) {
				_dex+=20;
			} else if (80&lt;_dex) {
				_dex=(_dex*0.75)&lt;&amp;lt;0;
			}
			_luck=int(strTmp.substr(7,2));
			_name=__str;
		}
		public function getName ():String {
			return _name;
		}
		public function setHp (value:int):void {
			if(value&amp;lt;0){
				value=0;
			}
			_hp=value;
		}
		public function getHp ():int {
			return _hp;
		}
		public function getStr ():uint {
			return _str;
		}
		public function getDex ():uint {
			return _dex;
		}
		public function getLuck ():uint {
			return _luck;
		}
		//绑定显示用的MC
		public function setBindMC (_mc:MovieClip):void {
			_bindMC=_mc;
		}
		public function getBindMC ():MovieClip {
			return _bindMC;
		}
		//判断是不是还活着
		public function isAlive ():Boolean {
			if (_hp&gt;0) {
				return true;
			} else {
				return false;
			}
		}
		//攻击函数
		public function attack():Array{
			var aryAttack:Array=new Array((Math.random()*_str&lt; &amp;lt;0)+_str/5+_luck,_aryAttackStyle[Math.random()*_aryAttackStyle.length&lt;&amp;lt;0]);
			return aryAttack;
		}
		//生成命中和闪避率
		public function getRate():Number{
			return Math.random()*((_dex+_luck)/100);
		}
		//获取字符串中数字
		public static function str2num (char:String):String {
			var pattern:RegExp=/^[-\+]?\d+$/;
			var strTemp:String=&quot;&quot;;
			for (var i:uint=0; i&lt;char.length; i++) {
				var rs:Object=pattern.exec(char.charAt(i));
				if (rs==null) {
				} else {
					strTemp+=char.charAt(i);
				}
			}
			return strTemp;
		}
	}
}
</pre>
<p>下边是具体的游戏实现部分和源码下载：“<a  href="http://nwhy.org/game-namepk-2.html">GAME-NamePK 基于MD5的名字PK(下)”。</_hp></p>
<h4  class="related_post_title">Some Related Posts</h4><ul class="related_post"><li>2009/03/22 -- <a href="http://nwhy.org/game-namepk-2.html" title="GAME-NamePK 基于MD5的名字PK(下)">GAME-NamePK 基于MD5的名字PK(下)</a> (0)</li><li>2009/07/20 -- <a  href="http://nwhy.org/game-avoid-bullets-2.html" title="AS3-子弹躲避游戏(下)">AS3-子弹躲避游戏(下)</a> (0)</li><li>2009/07/17 -- <a  href="http://nwhy.org/game-avoid-bullets-1.html" title="AS3-子弹躲避游戏(上)">AS3-子弹躲避游戏(上)</a> (1)</li><li>2009/02/24 -- <a  href="http://nwhy.org/as3-mc-move.html" title="AS3-MC的移动控制">AS3-MC的移动控制</a> (3)</li><li>2009/09/07 -- <a  href="http://nwhy.org/as3-physics-formula.html" title="Flash-一些常用物理公式和AS3的结合应用">Flash-一些常用物理公式和AS3的结合应用</a> (1)</li><li>2009/08/10 -- <a  href="http://nwhy.org/as3-lianliankan.html" title="AS3-连连看的主要算法">AS3-连连看的主要算法</a> (8)</li><li>2009/07/28 -- <a  href="http://nwhy.org/flash-fuzzy-theory.html" title="Flash &#8211; 说是XXX的模糊理论视觉模型？">Flash &#8211; 说是XXX的模糊理论视觉模型？</a> (2)</li><li>2009/07/27 -- <a  href="http://nwhy.org/flash-setter-getter.html" title="Flash-Setter &#038; Getter">Flash-Setter &#038; Getter</a> (0)</li><li>2009/07/13 -- <a  href="http://nwhy.org/as3-code-optimization.html" title="AS3 Code Optimization一些代码优化的问题">AS3 Code Optimization一些代码优化的问题</a> (0)</li><li>2009/06/25 -- <a  href="http://nwhy.org/flash-megazine3.html" title="Flash-An Pageflip/Flashbook Engine MegaZine 3">Flash-An Pageflip/Flashbook Engine MegaZine 3</a> (4)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://nwhy.org/game-namepk-1.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
