Flash Actionscript WebGame背包的实现

Flash AS 背包实现

Flash AS3中AStar(A星)寻路方法

主视图类

package
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import com.astar.AStar;
	import com.astar.Grid;
	import com.astar.Node;

	/**
	 * 主视图类
	 * */
	public class MainView extends Sprite
	{
		//网格的大小
		private var cellSize:int=10;
		//网格实例
		private var grid:Grid;
		//玩家人物,就是红色小球
		private var player:Player;
		//路径数组索引
		private var index:int;
		//Astar找到的路径
		private var path:Array;
		//开始按钮
		private var btnStart:Button;

		public function MainView()
		{
			super();
			initBtn();
			initPlayer();
			initGrid();
			setStartEnd();
		}

		/**初始化按钮*/
		private function initBtn():void
		{
			btnStart=new Button(50, 20, "START");
			btnStart.x=200;
			btnStart.y=0;
			btnStart.addEventListener(MouseEvent.CLICK, btnStartHandler);
			addChild(btnStart);
		}

		/**初始化玩家*/
		private function initPlayer():void
		{
			player=new Player(10);
			player.x=10;
			player.y=590;
			addChild(player);
		}

		/**初始化网格、节点数量*/
		private function initGrid():void
		{
			//本例子是30 * 30的,要多少自己调
			grid=new Grid(30, 30);
			//按题目铺设的障碍,也可以随机铺设
			for (var i:int=0; i < 10; i++)
			{
				grid.setWalkable(i, i + 15, false);
			}
			for (var j:int=10; j < 30; j++)
			{
				grid.setWalkable(j, j, false);
			}
			for (var k:int=15; k < 25; k++)
			{
				grid.setWalkable(k, k - 15, false);
			}
			//绘画可视网格
			drawGrid();
		}

		/**画网格,为障碍填充颜色*/
		private function drawGrid():void
		{
			this.graphics.clear();
			for (var i:int=0; i < grid.numCol; i++)
			{
				for (var j:int=0; j < grid.numRow; j++)
				{
					var node:Node=grid.getNode(i, j);
					this.graphics.lineStyle(0);
					this.graphics.beginFill(getNodeColor(node));
					this.graphics.drawRect(i * cellSize, j * cellSize, cellSize, cellSize);
					this.graphics.endFill();
				}
			}
		}

		/**根据节点是否能通过来着色*/
		private function getNodeColor(node:Node):uint
		{
			if (node.walkable == false)
				return 0;
			return 0xffffff;
		}

		/**设置起点终点*/
		private function setStartEnd():void
		{
			//可自行设置,起点可以随机,终点可采用鼠标点击生成
			grid.setStartNode(0, 29);
			grid.setEndNode(29, 0);
		}

		/**开始寻路*/
		private function btnStartHandler(event:MouseEvent):void
		{
			//重新绘图
			drawGrid();
			//寻路
			findPath();
		}

		/**调用AStar中的寻路*/
		private function findPath():void
		{
			var aStar:AStar=new AStar();
			//如果返回的是真,则说明找到路径,添加侦听绘制可视化路径
			if (aStar.findPath(grid))
			{
				path=aStar.path;
				index=0;
				addEventListener(Event.ENTER_FRAME, efHandler);
			}
		}

		/**每帧的动画处理*/
		private function efHandler(event:Event):void
		{
			//经过的节点
			var passedNode:Node=path[index];
			//将走过的节点填充为黄色
			this.graphics.lineStyle(0);
			this.graphics.beginFill(0xffff00);
			this.graphics.drawRect(passedNode.x * cellSize, passedNode.y * cellSize, cellSize, cellSize);

			//当前目标中心点 = 节点的行列 * 格子宽高 + 格子大小的一半
			var targetX:int=path[index].x * cellSize + cellSize / 2;
			var targetY:int=path[index].y * cellSize + cellSize / 2;
			var dx:int=targetX - player.x;
			var dy:int=targetY - player.y;
			//路径数组索引++,当索引大于等于路径数组长度时删除侦听
			index++;
			if (index >= path.length)
			{
				removeEventListener(Event.ENTER_FRAME, efHandler);
			}
			//玩家人物移动一格
			player.x+=dx;
			player.y+=dy;
		}
	}
}

阅读更多…

Flash游戏 – 利用FLEX Adobe AIR程序切序列帧对坐标

最近做页游项目,需要将人物跑动的序列帧切成最小以提高程序效率,于是我写了这个小程序。

protected function CutButton_clickHandler(event:MouseEvent):void
{
/* 新建文件夹 */
if(!_selectedFolder)
return;

_fileList = new Array();

var temp:Array = _selectedFolder.getDirectoryListing();
for (var i:uint = 0; i < temp.length; i++)
{
if(!temp[i].isDirectory){
var afterfix:Array = (temp[i].name as String).split(".");
if(afterfix[afterfix.length-1] == "png")
_fileList.push(temp[i]);
}
}

if(_fileList.length>0){
_curPicIndex = 0;
_loadPng = new LoadPng();
_cut = new CutAction();
addEventListener("finish",nextCut);
progressBar.visible = true;
cutButton.enabled = false;
fileSystemTree.enabled = false;
_saveFolder = _selectedFolder.resolvePath("new");
_saveFolder.createDirectory();
nextCut();

}
}

阅读更多…

火车票预定之二

火车票自动订购软件 我要回家(Go-Home)自动订票软件2012绿色版  http://dl.dbank.com/c0tggl2l3r

本程序为java语言编写,使用时依赖jre(java runtime environment),且版本必须大于1.6,对应不熟悉的朋友建议直接使用[360软件管家or其他同类软件]搜索java,然后安装Java Runtime Environment 6

火车票预定之一

谷歌浏览器安装https://github.com/zzdhidden/12306/raw/master/12306BookingAssistant.user.js 然后登陆https://dynamic.12306.cn/otsweb/有惊喜。详情请垂询https://github.com/zzdhidden/12306/blob/master/README.md

域名免费转出

 

看图吧,不想说话,在天朝各种蛋疼,在此仅问候他们家一户口本!

我们就这样屈服了么?不能!有网友提供了如下攻略:

前提:

    你的域名必须符合规定的允许转出的条件,比如离注册或续费时间60天以上,离到期时间30天以上。

    你要能登入域名所有人的邮箱。不记得的可以用whois来查询域名所有人的邮箱。

步骤:

    如果你要转出,先联系原来的国内域名注册服务商,要求转出。 阅读更多…

博客喜迁新居

感谢伟大的GFW,本博客已迁至饭桶VPS~

使用MySQL内置函数将IP地址字符串转为无符号整数进行存取

在一般应用中,我们可以把ip地址转换成无符号整数来存储,这样的好处是存储空间小,索引空间小,速度快。
MySQL内置函数inet_aton()和inet_ntoa()就可以实现ip和整数的互转,其中inet_aton()将ip转成整数,而inet_ntoa()则将整数再还原为ip.
使用方法: INET_ATON(expr) 给出一个作为字符串的网络地址的”点地址”(如127.0.0.1)表示,返回一个代表该地址数值的整数。地址可以是4或8比特地址。
mysql> SELECT INET_ATON(’209.207.224.40′); -> 3520061480 产生的数字总是按照网络字节顺序。 阅读更多…

SQL语句优化

1、用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数;
2、通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担;
3、能够分开的操作尽量分开处理,提高每次的响应速度;
4、在数据窗口使用SQL时,尽量把使用的索引放在选择的首列;
5、算法的结构尽量简单;
6、在查询时,不要过多地使 用通配符如SELECT * FROM T1语句,要用到几列就选择几列如:SELECT COL1,COL2 FROM T1; 阅读更多…

WIN7 VHD试玩四:其他小应用

VHD不是仅仅用来装系统,其他地方照样可以用。比如童鞋们玩的魔兽世界喜欢被病毒感染客户端,我们就可以用VHD来保护我们的客户端。

首先创建VHD,格式化,并将客户端拖入其中。

diskpart
Creste vdisk file=D:\game\wow.vhd type=fixed maximum=20000
Select vdisk file=D:\game\wow.vhd
Attach vdisk
Exit

复制文件吧。。。半个小时后回来。。。

diskpart
Select vdisk file=D:\game\wow.vhd
detach vdisk
create vdisk file=”D:\game\wow_temp.vhd” parent=”D:\game\wow.vhd”
Exit

 

工作做完了,下面是我做好的批处理,童鞋们修改下路径就可以用了。

开机启动.bat

rem 我要玩WOW…
echo select vdisk file=”D:\game\wow_temp.vhd” >> “D:\game\wow.txt”
echo attach vdisk >> “D:\game\wow.txt”
diskpart /s “D:\game\wow.txt”
del “D:\game\wow.txt”

 

我的客户端被感染了,我要还原!.bat

rem 卸载wow_temp.vhd并将之删除
echo select vdisk file=”D:\game\wow_temp.vhd” >> “D:\game\wow.txt”
echo detach vdisk >> “D:\game\wow.txt”
diskpart /s “D:\game\wow.txt”
del “D:\game\wow_temp.vhd”
del “D:\game\wow.txt”
rem 创建新wow_temp.vhd并加载
echo create vdisk file=”D:\game\wow_temp.vhd” parent=”D:\game\wow.vhd” > “D:\game\wow.txt”
echo select vdisk file=”D:\game\wow_temp.vhd” >> “D:\game\wow.txt”
echo attach vdisk >> “D:\game\wow.txt”
diskpart /s “D:\game\wow.txt”
del “D:\game\wow.txt”

 

我要更新我的客户端!.bat

rem 更新客户端中,请勿浏览神马神马电影网站。。。
echo select vdisk file=”D:\game\wow.vhd” >> “D:\game\wow.txt”
echo attach vdisk >> “D:\game\wow.txt”
diskpart /s “D:\game\wow.txt”
del “D:\game\wow.txt”

 

更新完了.bat

rem 我更新完了,我要上线做日常…
del “D:\game\wow_temp.vhd”
echo select vdisk file=”D:\game\wow.vhd” >> “D:\game\wow.txt”
echo detach vdisk >> “D:\game\wow.txt”
echo create vdisk file=”D:\game\wow_temp.vhd” parent=”D:\game\wow.vhd”>> “D:\game\wow.txt”
echo select vdisk file=”D:\game\wow_temp.vhd” >> “D:\game\wow.txt”
echo attach vdisk >> “D:\game\wow.txt”
diskpart /s “D:\game\wow.txt”
del “D:\game\wow.txt”