`
china34420
  • 浏览: 136338 次
  • 性别: 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 其他有主方法的是测试类。 多线程。 下拉列表选择数字可以切换关卡图片,最后的“+”,可以添自己的图片到关卡中。 设有背景音乐 有...

    c# 拼图游戏 c# 拼图游戏 c# 拼图游戏

    在本文中,我们将深入探讨如何使用C#编程语言开发一款拼图游戏。C#是一种广泛应用于游戏开发、桌面应用和Web应用的面向对象的语言,它提供了丰富的类库和工具,使得开发过程更为高效。 首先,我们需要理解拼图游戏...

    java拼图游戏源码.zip

    Java拼图游戏是一款基于Java Swing库开发的桌面应用程序,展示了丰富的编程技术和概念。在这个游戏中,开发者运用了Swing来构建用户界面,同时结合了多线程技术以实现平滑的游戏动画,增强了玩家的体验。 首先,...

    Python Tkinter——数字拼图游戏配套图片

    在这个特定的场景中,"Python Tkinter——数字拼图游戏配套图片"指的是使用Tkinter库来开发的一个数字拼图游戏,游戏中的图像资源可能包含在提供的压缩包文件中。 数字拼图游戏通常是一个益智游戏,玩家需要将打乱...

    PYTHON 游戏:滑动拼图游戏(基于tkinter实现,图片华容道)

    本项目是一个基于Python的滑动拼图游戏,利用Tkinter库实现,模仿了传统的华容道游戏,让玩家在16个格子上移动图片块以还原完整的图像。 Tkinter是Python的标准GUI(图形用户界面)库,它提供了丰富的控件和布局...

    swing拼图游戏.

    1. 图像加载:使用BufferedImage类加载游戏图片。 2. 图片分割:将图像切割成多个小块,通常为方形。这可以通过定义切片的行数和列数来实现。 3. 随机化拼图:通过随机交换拼图块的位置,增加游戏难度和挑战性。 4. ...

    拼图游戏_拼图游戏_VC++

    1. **面向对象编程**:C++是面向对象的语言,游戏开发通常会涉及类的设计,如创建`Game`、`Puzzle`、`Tile`等类来分别表示游戏、拼图和拼图块。 2. **图形用户界面(GUI)**:VC++提供MFC(Microsoft Foundation ...

    html5网格图片鼠标拖动拼图游戏代码

    在这个"html5网格图片鼠标拖动拼图游戏代码"中,我们主要探讨的是如何利用HTML5的Canvas元素、事件监听以及JavaScript编程来实现一个有趣的拼图游戏。 首先,Canvas是HTML5的一个核心特性,它提供了一个二维绘图...

    拼图游戏Java程序所写

    本程序作为一个拼图游戏,可能包括了图片加载、分割、随机打乱、用户交互(拖放操作)以及解决验证等功能。开发者可能已经实现了这些核心逻辑,并且声明该程序仅供参考,意味着它可能不是最终产品,可能不包含完整的...

    MFC拼图游戏程序完整版

    **MFC拼图游戏程序详解...总之,MFC拼图游戏是一个结合了MFC编程基础、图形界面设计、用户交互逻辑以及游戏算法实现的综合性项目。通过分析和学习这个程序,开发者不仅可以深入了解MFC的使用,还能提升游戏开发的能力。

    拼图游戏.rar 可以将任意图片进行拼图 益智游戏

    当用户尝试运行这个拼图游戏时,如果缺少必要的图片资源,程序会弹出错误提示。用户应忽略这个错误,点击“cancel”按钮继续程序的运行。这暗示了游戏的核心功能是处理和显示图像,尤其是.jpg格式的图片,这是一种...

    java拼图游戏可自定义图片及块数

    Java拼图游戏是一款基于Java编程语言开发的娱乐应用,它允许用户自定义拼图的图片来源和分割块的数量,从而提供了高度的个性化体验。这款游戏中,用户可以选择任何想要的图片,将其转化为拼图,然后尝试将这些散乱的...

    c#拼图游戏源码可以自定义图片和块数

    C#拼图游戏是一款基于C#编程语言开发的益智类游戏,允许用户自定义拼图所用的图片和块的数量。在这款游戏中,玩家需要将一个被分割成多个小块的图片重新拼凑完整,这既锻炼了逻辑思维能力,也提升了空间想象能力。...

    Qt拼图游戏源码

    Qt拼图游戏源码是一个基于Qt图形视图框架开发的示例项目,它展示了如何利用QGraphicsView和QGraphicsScene类来实现一个交互式的拼图游戏。Qt是一个跨平台的C++应用程序开发框架,尤其适合于创建图形用户界面。在这个...

    flash 3.0拼图游戏.zip_as3 拼图游戏_as3.0拼图制作_flash_flash 3.0游戏_flash游戏3.

    2. **拼图块创建**:切割后的图片块将被转化为独立的MovieClip对象,每个MovieClip代表一个拼图块。这些MovieClip将被赋予独特的ID,便于后续的识别和操作。 3. **打乱顺序**:在用户开始游戏时,我们需要一个算法...

    我的拼图游戏(WIN32编程)

    这款拼图游戏展示了如何使用C++语言和WIN32 API来创建图形用户界面,处理用户输入,以及实现基本的游戏逻辑。 在WIN32编程中,开发者首先需要理解窗口过程(Window Procedure),这是系统用于接收和处理窗口消息的...

    易语言拼图游戏源码,易语言拼图游戏1

    首先,"拼图游戏"是基于图像处理的一种智力挑战游戏,玩家需要将打乱的图片重新组合成完整的图像。在易语言中实现这样的游戏,我们需要涉及以下几个关键知识点: 1. **子画板初始**:子画板是易语言中用于图形绘制...

    基于MATLAB的拼图游戏设计

    在这样的游戏中,玩家需要根据预设的图像目标,将打乱的图片块重新组合。这不仅考验玩家的空间想象和逻辑思维能力,还展示了MATLAB在图形处理和交互式应用方面的潜力。 【文件名称】jigsaw puzzle 这个名字可能...

    拼图游戏 java 实例

    在拼图游戏中,我们需要用到Graphics类来绘制背景、分割的图片块以及完成后的完整图片。我们通常会在Component或JComponent的paintComponent方法中使用Graphics对象进行绘制,确保每次窗口重绘时都能正确显示当前...

    VC++6.0 游戏 拼图游戏

    3. **游戏逻辑**:拼图游戏的逻辑包括图片块的随机排列、用户操作的合法性检查(如是否可以移动、旋转某块图片)、以及完成拼图的判断。这部分代码通常会封装在单独的类中,以保持代码的清晰和可维护性。 4. **事件...

Global site tag (gtag.js) - Google Analytics