`
china34420
  • 浏览: 133814 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

拼图游戏的图片块图形类

 
阅读更多

使用以下类文件,可以裁剪出拼图游戏 的图片块

如下图:

 

Tile.as类文件

 

 

package zkl.as3.game.pintu 
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.BlendMode;
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.geom.Matrix;
	
	/**
	 * ...
	 * @author ZKL(Pointer) QQ:344209679
	 */
	public class Tile2 extends Sprite 
	{
		/**
		 * 0:无
		 * 1:补
		 * -1:切
		 *              up
		 *      -----------------
		 *      |				 |
		 * left |				 | right
		 *      |                |
		 *      -----------------
		 *             down
		 */
		public var left:int = 0;
		public var up:int = 0;
		public var right:int = 0;
		public var down:int = 0;
		
		/**
		 * 矩形的宽
		 */
		public var rectWidth:Number = 0;
		/**
		 * 矩形的高
		 */
		public var rectHeight:Number = 0;
		/**
		 * 圆半径
		 */
		public var circleRadius:Number = 0;
		
		/**
		 * 圆中心点与矩形的偏移量
		 */
		public var offset:Number = 0;
		
		/**
		 * 矩形焦点与当前实例的焦点的横坐标偏量
		 */
		public var offsetX:Number = 0;
		/**
		 * 矩形焦点与当前实例的焦点的竖坐标偏量
		 */
		public var offsetY:Number = 0;
		
		public var bitmap:Bitmap;
		
		public function Tile2() 
		{
			
		}
		
		public function draw():void {
			
			offset = circleRadius * 0.7;
			offsetX = circleRadius + offset;
			offsetY = circleRadius + offset;
			var _offsetNum:Number = (circleRadius + offset) * 2 + 2;//
			var bmp:BitmapData = new BitmapData(rectWidth + _offsetNum , rectHeight + _offsetNum, true, 0x00000000);
			
			bmp.draw(_createRect(), new Matrix(1, 0, 0, 1, offsetX, offsetY));
			
			if (left != 0) {
				bmp.draw(_createCircle(), new Matrix(1, 0, 0, 1, offsetX - left * offset, offsetY + rectHeight * .5), null, left == 1?null:BlendMode.ERASE);
			}
			if (up != 0) {
				bmp.draw(_createCircle(), new Matrix(1, 0, 0, 1, offsetX + rectWidth * .5, offsetX - up * offset), null, up == 1?null:BlendMode.ERASE);
			}
			if (right != 0) {
				bmp.draw(_createCircle(), new Matrix(1, 0, 0, 1, rectWidth + offsetX + right * offset, offsetY + rectHeight * .5), null, right == 1?null:BlendMode.ERASE);
			}
			if (down != 0) {
				bmp.draw(_createCircle(), new Matrix(1, 0, 0, 1, offsetX + rectWidth * .5, rectHeight + offsetY + down * offset), null, down == 1?null:BlendMode.ERASE);
			}
			
			bitmap = new Bitmap(bmp);
			bitmap.smoothing = true;
			addChild(bitmap);
		}
		
		public function dispose():void {
			if (bitmap == null) return;
			removeChild(bitmap);
			bitmap.bitmapData.dispose();
			bitmap = null;
		}
		
		protected function _createRect():Shape {
			var shape:Shape = new Shape();
			shape.graphics.beginFill(0xFFFFFF, 1);
			shape.graphics.drawRect(0, 0, rectWidth, rectHeight);
			shape.graphics.endFill();
			return shape;
		}
		
		protected function _createCircle():Shape {
			var shape:Shape = new Shape();
			shape.graphics.beginFill(0xFFFFFF, 1);
			shape.graphics.drawCircle(0, 0, circleRadius);
			shape.graphics.endFill();
			return shape;
		}
		
	}

}
 

TileRandVars.as可以生成Tile需要的随机参数

 

package zkl.as3.game.pintu
{
	
	/**
	 * ...
	 * @author ZKL(Pointer) QQ:344209679
	 */
	public class TileRandVars
	{
		/**
		 *
		 * @param	$cols 	行数
		 * @param	$rows	列数
		 */
		public function createVars($cols:uint, $rows:uint):Array
		{
			var arr:Array = new Array();
			var i:int, j:int;
			for (i = 0; i < $cols; i++)
			{
				for (j = 0; j < $rows; j++)
				{
					var vars:Vars = new Vars();
					vars.colId = i + 1;
					vars.rowId = j + 1;
					arr.push(vars);
				}
			}
			
			var len:int = $cols * $rows;
			for (i = 0; i < len; i++)
			{
				var _tempVars:Vars = arr[i];
				_tempVars.leftVars = _tempVars.rowId == 1 ? null : arr[i - 1];
				_tempVars.rightVars = _tempVars.rowId == $rows ? null : arr[i + 1];
				_tempVars.upVars = _tempVars.colId == 1 ? null : arr[i - $rows];
				_tempVars.downVars = _tempVars.colId == $cols ? null : arr[i + $rows];
				if (_tempVars.rightVars != null)
				{
					_tempVars.right = getRandVar();
					_tempVars.rightVars.left = -_tempVars.right;
				}
				if (_tempVars.downVars != null)
				{
					_tempVars.down = getRandVar();
					_tempVars.downVars.up = -_tempVars.down;
				}
				//trace(_tempVars.left + ":" + _tempVars.up + ":" + _tempVars.right + ":" + _tempVars.down);
			}
			return arr;
		}
		
		protected function getRandVar():int
		{
			var rand:int = Math.floor(Math.random() * 3) - 1;
			return rand;
		}
	
	}

}

class Vars
{
	//所在的行ID
	public var colId:uint = 0;
	//所在的列ID
	public var rowId:uint = 0;
	
	public var left:int = 0;
	public var up:int = 0;
	public var right:int = 0;
	public var down:int = 0;
	
	public var leftVars:Vars;
	public var upVars:Vars;
	public var rightVars:Vars;
	public var downVars:Vars;
}
 
分享到:
评论

相关推荐

    拼图游戏 (源码+所有文件)

    萌新做的一个简单的Java拼图游戏 启动类:pers.sept.jigsaw1.swing下的MianFrame 其他有主方法的是测试类。 多线程。 下拉列表选择数字可以切换关卡图片,最后的“+”,可以添自己的图片到关卡中。 设有背景音乐 有...

    基于Java实现的Android拼图游戏设计.zip

    这是一款基于 Java 开发的移动端安卓小游戏——大家来拼图 项目原理 把选定的一张图片切分很多份,先是 33 格式,在一定的时间内点击格子交换使图形拼成一张完整的图片就算闯关成功,这样关卡也很容易设计,33;44;...

    拼图智力游戏V3.0

    游戏规则: 软件将原图平均分割成N块,打乱顺序后置于拼图区的N+1个方块中。N+1个方块中有1个为空格,开始时在右下方。移动方块图片使之合成原图即拼图成功。 二. 操 作: 用鼠标点击空格相邻的方块图片,方块图片...

    Java拼图游戏面向对象课程设计报告.doc

    Java拼图游戏面向对象课程设计报告 ———————————————————————————————— 作者: ———————————————————————————————— 日期: "姓 名 " "学 号 ...

    Sliding-Tile-Puzzle:允许玩“15 拼图”游戏的 Android 应用程序

    它使用二维图形来显示拼图板; 不允许使用按钮来显示拼图块。 它使用模型-视图-控制 (MVC) 比喻。 它是可重新配置的,因此您可以轻松更改拼图的大小。 去做 计时器 记录 与朋友分享您的记录 图片选项

    Scratch关于图片处理的案例

    它由麻省理工学院的媒体实验室开发,旨在帮助初学者通过图形化的拼图方式学习编程概念。 以下是关于 Scratch 的一些详细介绍: 1. **图形化编程**:Scratch 使用图形化编程环境,用户通过将图形化的编程块(积木)...

    无爱疏离简化更新手记

    新增加的功能如下: 1、短信息好友功能 2、自动弹出短信息功能...开灯游戏 棋子反转 翻牌游戏 二十一点 空当接龙 拼图游戏 记忆板 堆方块 管道工 翘翘板 挖地雷 四连子 跳跳棋 拼图 台球 架桥 PANG! 蛇 点白

Global site tag (gtag.js) - Google Analytics