• 拼图游戏


    ==========Main文档类==========
    
    package {
    	import flash.display.Sprite;
    	import com.RectShape;
    	import flash.events.MouseEvent;
    	public class Main extends Sprite {
    		private var indexshape:Array=new Array(1,2,3,4,5,6,7,8);//矩形上的8个编号
    		private var ditu:Array=new Array(new Array(3),new Array(3),new Array(3));
    		//小方块的坐标编号,1代表坐标编号位上没有小方块,0代表坐标编号位上有小方块
    		private var pailie:Array=new Array(new Array(0,0),new Array(40,0),new Array(80,0),new Array(0,40),new Array(40,40),new Array(80,40),new Array(0,80),new Array(40,80),new Array(80,80));
    		//小方块的坐标
    		public function Main():void {
    			init();
    		}
    		private function init():void {
    			var kuang:Sprite=new Sprite();
    			kuang.graphics.lineStyle(3,0xff0000);
    			kuang.graphics.drawRect(0,0,120,120);
    			kuang.graphics.endFill();
    			kuang.x=215;
    			kuang.y=140;//设置大方框位置在舞台中间
    			addChild(kuang);
    			
    			for (var i:uint=0; i<3; i++) {
    				for (var t:uint=0; t<3; t++) {
    					ditu[i][t]=1;
    				}
    			}//初始化小方块坐标编号均为1
    			
    			//初始化8个小方块位置
    			for (var n:uint=1; n<=8; n++) {
    				//随机抽取一个indexshape数组的元素,将它设置为一个小方块的编号
    				var hao:uint=Math.floor(Math.random()*indexshape.length);//随机抽取得到数组indexshape的一个索引号(0~7)
    				var bianhao:uint=indexshape[hao];//得到上面随机抽取的索引号对应的indexshape数组的元素
    				indexshape.splice(hao,1);//删除已经抽取的元素,indexshape剩下7个元素,下次从这7个元素中抽取,依次递减
    				var rect:RectShape=new RectShape(bianhao);
    				rect.mouseChildren=false;//小方块里的文本框和小方块刚好是重合的,此处设置点击到文本框,不处罚鼠标事件,目的是只让小方块接收鼠标事件
    				
    				//通过随机得到一个坐标,随机得到一个位置的小方块,以便让这个小方块具有上面随机抽到的编号
    				var weizhi:uint=Math.floor(Math.random()*pailie.length);
    				var dui:Array=pailie[weizhi];
    				pailie.splice(weizhi,1);
    				rect.x=dui[0];
    				rect.y=dui[1];
    				rect.X=dui[0]/40;
    				rect.Y=dui[1]/40;
    				kuang.addChild(rect);
    				ditu[dui[0]/40][dui[1]/40]=0;
    				rect.addEventListener(MouseEvent.CLICK,dong);
    			}
    		}
    		
    		private function dong(evt:MouseEvent):void {
    			//当前被点击的小方块左右上下四个位置的xzuobiao、yzuobiao
    			var zuo:uint=evt.target.X-1;
    			var you:uint=evt.target.X+1;
    			var shang:uint=evt.target.Y-1;
    			var xia:uint=evt.target.Y+1;
    			
    			if (zuo!=4294967295&&ditu[zuo][evt.target.Y]==1) {
    				ditu[evt.target.X][evt.target.Y]=1;
    				evt.target.X=zuo;
    				evt.target.x-=40;
    				//判断当前小方块左边位置是否有小方块,如果没有,就将小方块当前位置设置为没有小方块状态,即坐标编号为1;并将小方块向左平移1个位置;同时将它的x坐标减去40
    			} else if (you!=3&&ditu[you][evt.target.Y]==1) {
    				ditu[evt.target.X][evt.target.Y]=1;
    				ditu[you][evt.target.Y]=0;
    				evt.target.X=you;
    				evt.target.x+=40;
    			} else if (shang!=4294967295&&ditu[evt.target.X][shang]==1) {
    				ditu[evt.target.X][evt.target.Y]=1;
    				ditu[evt.target.X][shang]=0;
    				evt.target.Y=shang;
    				evt.target.y-=40;
    			} else if (xia!=3&&ditu[evt.target.X][xia]==1) {
    				ditu[evt.target.X][evt.target.Y]=1;
    				ditu[evt.target.X][xia]=0;
    				evt.target.Y=xia;
    				evt.target.y+=40;
    			}
    		}
    	}
    }
    
    ==========RectShape小方块类==========
    
    package com{ //RectShape类在com包中
    	import flash.display.Sprite;
    	import flash.text.TextField;
    	import flash.text.TextFormat;
    	import flash.text.TextFieldAutoSize;
    	public class RectShape extends Sprite {
    		private var xzuobiao:uint;
    		private var yzuobiao:uint;
    		public function RectShape(indexs):void {
    			init(indexs);
    		}
    		private function init(index):void {
    			this.graphics.beginFill(0x00ff00);
    			this.graphics.lineStyle(1,0x000000,1);
    			this.graphics.drawRect(0,0,40,40);
    			this.graphics.endFill();
    
    			var txt:TextFormat=new TextFormat();
    			txt.size=30;
    			var num_txt:TextField=new TextField();
    			num_txt.selectable=false;
    			num_txt.text=String(index);
    			num_txt.width=40;
    			num_txt.height=40;//文本框大小刚好和上面绘制的矩形一样大
    			num_txt.x=0;
    			num_txt.y=0;
    			num_txt.setTextFormat(txt);
    			num_txt.autoSize=TextFieldAutoSize.CENTER;
    			this.addChild(num_txt);
    		}
    		public function get X():uint {
    			return xzuobiao;
    		}
    		public function set X(n:uint):void {
    			xzuobiao=n;
    		}
    		public function get Y():uint {
    			return yzuobiao;
    		}
    		public function set Y(n:uint):void {
    			yzuobiao=n;
    		}
    	}
    }
    
  • 相关阅读:
    密码加密
    注册视图
    session会话
    验证码功能
    使用Django表单替代html表单
    实现登陆视图功能
    设计登陆需求页面
    配置视图
    配置数据库
    npm 学习
  • 原文地址:https://www.cnblogs.com/leon3286/p/1708342.html
Copyright © 2020-2023  润新知