flash简单的3.0flash拼图游戏源码

as3实现的拼图游戏功能代码介绍
互联网 & 06-06 17:43:12 & 作者:佚名 &
as3实现的拼图游戏效果如下图,如果其上下左右有空白处的话,可以实现交换,最后可以排列成有序的,感兴趣的朋友可以学习下哈
效果如下图,如果其上下左右有空白处的话,可以实现交换,最后可以排列成有序的 &实现代码如下: 包含两个as文件: 第一个是构造小方块数字的as文件:RectShape.as 代码如下: package { import flash.display.S import flash.text.TextF import flash.text.TextF import flash.text.TextFieldAutoS public class RectShape extends Sprite { private var xzuobiao: private var yzuobiao: public function RectShape(num:uint) { init(num); } private function init(num:uint) { this.graphics.beginFill(0x00ff00); this.graphics.lineStyle(1);//设置线条粗细 this.graphics.drawRect(0,0,40,40); this.graphics.endFill(); //设置数字 var txt_format:TextFormat=new TextFormat(); txt_format.size=30; var txt_num:TextField=new TextField(); txt_num.selectable=//设置文本字段不可选 txt_num.text=""+ txt_num.width=40; txt_num.height=40; txt_num.x=0; txt_num.y=0; txt_num.setTextFormat(txt_format); txt_num.autoSize=TextFieldAutoSize.CENTER; this.addChild(txt_num); } //对属性设置get set方法 public function get X():uint {
} public function set X(xzuo:uint):void { this.xzuobiao= } public function get Y():uint {
} public function set Y(yzuo:uint):void { this.yzuobiao= } } } 第二个是入口as:Main.as 代码如下: package{ import flash.display.S import flash.events.MouseE public class Main extends Sprite{ private var indexShape:Array=new Array(1,2,3,4,5,6,7,8);//表示需要显示的八个方块的文本 private var jilu:Array=[[1,1,1],[1,1,1],[1,1,1]];//默认值为1,记录该位置是否放了小方块,没有放方块时其值为1,放了方块后改为0 private var pielie:Array=[[0,0],[40,0],[80,0],[0,40],[40,40],[80,40],[0,80],[40,80],[80,80]];//定义小方块排列的xy坐标 public function Main(){ init(); } private function init():void{ var kuang:Sprite=new Sprite(); kuang.graphics.lineStyle(3,0xff00ff); kuang.graphics.drawRect(0,0,120,120); kuang.graphics.endFill(); kuang.x=215; kuang.y=140; addChild(kuang); //随机的填充数字1-8 for(var i:uint=1;i&=8;i++){ var index:uint=Math.floor(Math.random()*indexShape.length); var num:uint=indexShape[index]; indexShape.splice(index,1);//在数组中移除该数字 var shape:RectShape=new RectShape(num);//生成小方块 shape.mouseChildren=//解决方块被TextField文本框覆盖的问题 //随机生成一个位置来存放小方块 var position:uint=Math.floor(Math.random()*pielie.length); var positionValue:Array=pielie[position]; pielie.splice(position,1);//删除记录的该位置 shape.x=positionValue[0]; shape.y=positionValue[1]; shape.X=positionValue[0]/40; shape.Y=positionValue[1]/40; //修改记录的位置的值改为0 jilu[positionValue[0]/40][positionValue[1]/40]=0; kuang.addChild(shape); //添加鼠标点击事件 shape.addEventListener(MouseEvent.CLICK,moveNum); } } private function moveNum(evt:MouseEvent):void{ var left:int=evt.target.X-1; var right:int=evt.target.X+1; var top:int=evt.target.Y+1; var bottom:int=evt.target.Y-1; //处理向左移动 if(left!=-1&&jilu[left][evt.target.Y]==1){ //trace("come left"); jilu[evt.target.X][evt.target.Y]=1; jilu[left][evt.target.Y]=0; evt.target.X= evt.target.x-=40;//向左移动40 }else if(right!=3&&jilu[right][evt.target.Y]==1){ //trace("come right"); jilu[evt.target.X][evt.target.Y]=1; jilu[right][evt.target.Y]=0;//修改记录 evt.target.X= evt.target.x+=40;//向右移动40 }else if(top!=-1&&jilu[evt.target.X][top]==1){ jilu[evt.target.X][evt.target.Y]=1; jilu[evt.target.X][top]=0;//修改记录 evt.target.Y= evt.target.y+=40;//向上移动40 }else if(bottom!=3 &&jilu[evt.target.X][bottom]==1){ jilu[evt.target.X][evt.target.Y]=1; jilu[evt.target.X][bottom]=0;//修改记录 evt.target.Y= evt.target.y-=40;//向上移动40 } } } }
大家感兴趣的内容
12345678910
最近更新的内容他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

参考资料

 

随机推荐