- 浏览: 1084826 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (695)
- 心情日记 (14)
- AS开发工具 (12)
- 文章转载 (99)
- AIR (5)
- 问题总结 (46)
- SWF格式 (7)
- 测试总结 (10)
- 外文资料 (9)
- 算法技术 (33)
- AS3常用开源库 (43)
- 源码范例 (102)
- FLEX (72)
- FLASH 优化 (33)
- 游戏开发 (49)
- 开发技术 (11)
- 工作应用 (34)
- AS3收集 (140)
- WebBase (0)
- 开发构想 (4)
- 设计模式 (2)
- 框架和框架范例 (19)
- RED5 (3)
- java开发 (3)
- JAVA (1)
- FLASH-3D (23)
- 3D (6)
- 书籍 (10)
- 业界信息资料 (3)
- C# (1)
- JavaScript (12)
- HTML5 (6)
- Flixel (1)
- D5Power RPG网页游戏引擎 (0)
- ColorMatrixFilter - 获得相应颜色的色调 函数 (0)
- Starling (0)
最新评论
-
老顽童203:
字体
水果忍者鼠标跟随特效制作[转载] -
hairball00:
[转] 放出超多的Flash组件源代码 -
he74552775:
flash AS3 RegExp简单功能用法(转) -
hanshuai1232000:
第四点,有利也有弊,等你做了大型的aprg,你就知道了
[转]位图数据内存优化 -
yangfantao:
太感谢
[转] 放出超多的Flash组件源代码
http://bbs.9ria.com/viewthread.php?tid=84342&extra=page%3D1%26amp%3Borderby%3Ddateline%26amp%3Bfilter%3D2592000
package { import flash.display.Sprite; /** * ... * @author zlt */ public class Mains extends Sprite { private var arrM:Array; private var Frist:Pic; private var Second:Pic; private var spr:Sprite private var isOk:Boolean; public function Mains() { arrM = new Array(); spr = new Sprite(); this.addEventListener(ClickEvent.ENTER, getLine); init(); } private function init():void { for (var i:int = 0; i < 10; i++ ) { var arrs:Array = new Array(); for (var s:int = 0; s < 20; s++ ) { var pic:Pic = new Pic(this); pic.x = s * 20; pic.y = i * 20; pic.Xs = i; pic.Ys = s; pic.number = Math.round(Math.random() * 100 / 20).toString(); pic.txt.text = pic.number; this.addChild(pic); arrs.push(pic); } arrM.push(arrs); } this.addChild(spr); } private function getLine(e:ClickEvent):void { if (Frist == null) { Frist = e._obj as Pic; return; } else if (Second == null ) { Second = e._obj as Pic; isOk = false; if (Frist.number == Second.number && Frist.number != "" && Second.number != "") { drawLine(Frist, Second); } else { isOk = false; } if (isOk) { isOk = false; spr.graphics.clear(); spr.graphics.lineStyle(1, 0XFF0000); spr.graphics.moveTo(Frist.x + 10, Frist.y + 10); spr.graphics.lineTo(arrM[tempX1][tempY1].x+10,arrM[tempX1][tempY1].y+10); spr.graphics.lineTo(arrM[tempX2][tempY2].x+10,arrM[tempX2][tempY2].y+10); spr.graphics.lineTo(Second.x + 10, Second.y + 10); spr.graphics.endFill(); trace("1:", Frist.Xs, Frist.Ys, "2:", tempX1, tempY1, "3:", tempX2, tempY2, "4:", Second.Xs, Second.Ys); } Frist = Second = null; } Frist = Second = null; } private var tempX1:int; private var tempX2:int; private var tempY1:int; private var tempY2:int; private function drawLine(a:Pic, b:Pic):void { if (a == null || b == null) { Frist = null; Second = null; return; } //涓よ€呭湪涓€鏉℃í杞翠笂鐨勬儏鍐? if (a.Xs == b.Xs && a.Ys != b.Ys) { var onVol:Boolean = true; if (Math.abs(a.Ys - b.Ys) == 1) { a.number = a.txt.text = ""; b.number = b.txt.text = ""; tempX1 = a.Xs; tempY1 = a.Ys; tempX2 = b.Xs; tempY2 = b.Ys; isOk = true; return; } else { //鍒ゆ柇鍚屼竴鏉$嚎鐨勮矾寰? for (var i:int = Math.min(a.Ys, b.Ys) + 1; i < Math.max(a.Ys, b.Ys); i++ ) { if (arrM[a.Xs][i].number != "") { onVol = false; } } //鍒ゆ柇涓や釜鎶樼偣 if (!onVol) { trace(a.Xs, a.Ys, b.Xs, b.Ys); var temp1:Boolean=true; var temp2:Boolean=true; var temp3:Boolean=true; for (i = 0; i < arrM.length; i++ ) { trace(arrM[i][a.Ys].number,arrM[i][b.Ys].number) if (arrM[i][a.Ys].number == ""&&arrM[i][b.Ys].number =="") { trace("空余的点",i,a.Ys,i,b.Ys); for (var s:int = Math.min(a.Xs, i) + 1; s < Math.max(a.Xs, i); s++ ) { if (arrM[s][a.Ys].number != "") { temp1 = false; } } for (s = Math.min(a.Xs, i) + 1; s < Math.max(a.Xs, i); s++ ) { if (arrM[s][b.Ys].number != "") { temp2 = false; } } for (s = Math.min(a.Ys, b.Ys) + 1; s < Math.max(a.Ys, b.Ys); s++ ) { if (arrM[i][s].number != "") { temp3 = false; } } } else { continue; } if (temp1 && temp2 && temp3) { tempX1 = i; tempY1 = a.Ys; tempX2 = i; tempY2 = b.Ys; a.number = a.txt.text = ""; b.number = b.txt.text = ""; isOk = true; return; } else { temp1 = temp2 = temp3 = true; continue; } } } else { tempX1 = a.Xs; tempY1 = a.Ys; tempX2 = b.Xs; tempY2 = b.Ys; a.number = a.txt.text = ""; b.number = b.txt.text = ""; isOk = true; return; } } } //涓よ€呭湪涓€鏉$珫杞翠笂鐨勬儏鍐? if (a.Xs != b.Xs && a.Ys == b.Ys) { onVol = true; if (Math.abs(a.Xs- b.Xs) == 1) { a.number = a.txt.text = ""; b.number = b.txt.text = ""; tempX1 = a.Xs; tempY1 = a.Ys; tempX2 = b.Xs; tempY2 = b.Ys; isOk = true; return; } else { //鍒ゆ柇鍚屼竴鏉$嚎鐨勮矾寰? for (i = Math.min(a.Xs, b.Xs) + 1; i < Math.max(a.Xs, b.Xs); i++ ) { if (arrM[i][a.Ys].number != "") { onVol = false; } } //鍒ゆ柇涓や釜鎶樼偣 if (!onVol) { temp1=true; temp2=true; temp3=true; for (i = 0; i < arrM[1].length; i++ ) { if (arrM[a.Xs][i].number=="" && arrM[b.Xs][i].number == "") { for (s = Math.min(i, a.Ys) + 1; s < Math.max(i, a.Ys); s++ ) { if (arrM[a.Xs][s].number != "") { temp1 = false; } } for (s = Math.min(i, a.Ys) + 1; s < Math.max(i, a.Ys); s++ ) { if (arrM[b.Xs][s].number != "") { temp2 = false; } } for (s = Math.min(a.Xs, b.Xs) + 1; s < Math.max(a.Xs, b.Xs); s++ ) { if (arrM[s][i].number != "") { temp3 = false; } } } else { continue; } if (temp1 && temp2 && temp3) { tempX1 = a.Xs; tempY1 = i; tempX2 = b.Xs; tempY2 = i; a.number = a.txt.text = ""; b.number = b.txt.text = ""; isOk = true; return; } else { temp1 = temp2 = temp3 = true; continue; } } } else { tempX1 = a.Xs; tempY1 = a.Ys; tempX2 = b.Xs; tempY2 = b.Ys; a.number = a.txt.text = ""; b.number = b.txt.text = ""; isOk = true; return; } } } //涓よ€呴兘涓嶇浉浜ょ殑鎯呭喌 if (a.Xs != b.Xs && a.Ys != b.Ys) { var tempPoint1:Boolean = true; var tempPoint2:Boolean = true; if (arrM[a.Xs][b.Ys].number == "") { trace("first") for (i = Math.min(a.Xs, b.Xs) + 1; i < Math.max(a.Xs, b.Xs); i++ ) { if (arrM[i][b.Ys].number != "") { tempPoint1 = false; } } for (i = Math.min(a.Ys, b.Ys) + 1; i < Math.max(a.Ys, b.Ys); i++ ) { if (arrM[a.Xs][i].number != "") { tempPoint1 = false; } } } else { tempPoint1 = false; } if (tempPoint1) { trace("first success") tempX1 = a.Xs; tempY1 = b.Ys; tempX2 = a.Xs; tempY2 = b.Ys; a.number = a.txt.text = ""; b.number = b.txt.text = ""; isOk = true; return; } else { if (arrM[b.Xs][a.Ys].number == "") { trace("second") for (i = Math.min(a.Xs, b.Xs) + 1; i < Math.max(a.Xs, b.Xs); i++ ) { if (arrM[i][a.Ys].number != "") { tempPoint2 = false; } } for (i = Math.min(a.Ys, b.Ys) + 1; i < Math.max(a.Ys, b.Ys); i++ ) { if (arrM[b.Xs][i].number != "") { tempPoint2 = false; } } } else { tempPoint2 = false; } } if (tempPoint2) { trace("second success") tempX1 = b.Xs; tempY1 = a.Ys; tempX2 = b.Xs; tempY2 = a.Ys; a.number = a.txt.text = ""; b.number = b.txt.text = ""; isOk = true; return; } //横向平行线 temp1=true; temp2=true; temp3=true; for (i = 0; i < arrM[1].length; i++ ) { if (arrM[a.Xs][i].number=="" && arrM[b.Xs][i].number == "") { for (s = Math.min(i, a.Ys) + 1; s < Math.max(i, a.Ys); s++ ) { if (arrM[a.Xs][s].number != "") { temp1 = false; } } for (s = Math.min(i, b.Ys) + 1; s < Math.max(i, b.Ys); s++ ) { if (arrM[b.Xs][s].number != "") { temp2 = false; } } for (s = Math.min(a.Xs, b.Xs) + 1; s < Math.max(a.Xs, b.Xs); s++ ) { if (arrM[s][i].number != "") { temp3 = false; } } } else { continue; } if (temp1 && temp2 && temp3) { tempX1 = a.Xs; tempY1 = i; tempX2 = b.Xs; tempY2 = i; a.number = a.txt.text = ""; b.number = b.txt.text = ""; isOk = true; return; } else { temp1 = temp2 = temp3 = true; continue; } } //纵向平行线 temp1=true; temp2=true; temp3=true; for (i = 0; i < arrM.length; i++ ) { trace(arrM[i][a.Ys].number,arrM[i][b.Ys].number) if (arrM[i][a.Ys].number == ""&&arrM[i][b.Ys].number =="") { trace("空余的点",i,a.Ys,i,b.Ys); for (s = Math.min(a.Xs, i) + 1; s < Math.max(a.Xs, i); s++ ) { if (arrM[s][a.Ys].number != "") { temp1 = false; } } for (s = Math.min(b.Xs, i) + 1; s < Math.max(b.Xs, i); s++ ) { if (arrM[s][b.Ys].number != "") { temp2 = false; } } for (s = Math.min(a.Ys, b.Ys) + 1; s < Math.max(a.Ys, b.Ys); s++ ) { if (arrM[i][s].number != "") { temp3 = false; } } } else { continue; } if (temp1 && temp2 && temp3) { tempX1 = i; tempY1 = a.Ys; tempX2 = i; tempY2 = b.Ys; a.number = a.txt.text = ""; b.number = b.txt.text = ""; isOk = true; return; } else { temp1 = temp2 = temp3 = true; continue; } } } } } }
发表评论
-
HttpStatusConfig --一个HTTP 协议返回的 解析说明类
2012-04-18 16:40 0package guwanyuan.qicool.game ... -
水果忍者鼠标跟随特效制作[转载]
2012-03-01 16:06 2449实现这效果其实比较简单,主要是思路~! package ... -
江湖情缘游戏里的跳的类
2012-02-08 23:55 0package com.app.role.montions ... -
ColorMatrixFilter - 获得相应颜色的色调 函数
2012-02-08 23:03 0/**获得相应颜色的色调的滤镜**/ public sta ... -
ARPG游戏引擎设计思路
2011-12-31 00:48 00.整体结构 下载 (32.92 KB ... -
五子棋算法详解
2011-10-31 04:14 0五子棋算法详解五子棋算法详解五子棋算法详解 -
[原创]围绕任意一个中心点旋转
2011-10-23 13:46 0package guwanyuan.qicool.game.c ... -
珍宝探索 AS3-过关类小游戏
2011-10-13 02:15 0珍宝探索 AS3-过关类小游戏 -
(RepeaterOverTimeLine能将一个for循环执行的工作类似异步地平摊到多个帧上)RepeaterOverTimeLine
2011-09-30 02:26 0(RepeaterOverTimeLine能将一个for循环执 ... -
box2dttest(台球demo,使用了box2d)
2011-09-21 01:49 0box2dttest(台球demo,使用了box2d) -
贪吃蛇游戏
2011-09-16 02:40 0package com { /** ... -
打豆豆
2011-09-08 00:34 0打豆豆打豆豆 -
经典代码-空战.zip (513.2 KB)
2011-09-02 02:24 0经典代码-空战.zip (513.2 KB) -
基于TextField的图文混编的组件
2011-09-01 23:04 0基于TextField的图文混编的组件 -
泡泡龙
2011-08-29 22:36 0泡泡龙泡泡龙泡泡龙 -
井字棋算法
2011-08-18 15:04 0井字棋算法井字棋算法 -
_超级玛丽游戏_flash_game_demo
2011-08-18 00:01 0_超级玛丽游戏_flash_game_demo.zip -
吴万江-TD_demo
2011-08-15 15:35 0吴万江-TD_demo -
S_eVent系列教程
2011-08-13 05:01 0S_eVent系列教程S_eVent系列教程 -
[转][翻译]LoaderMax使用指导(一)
2011-08-10 19:51 1900http://hi.baidu.com/mr_ziqiang/ ...
相关推荐
"js 版的连连看3个"这个项目涉及到了使用JavaScript实现连连看游戏的代码。连连看,又称为对对碰,是一款流行的休闲益智游戏,玩家需要在限定时间内找出并消除所有可以配对的相同元素。 描述中提到的两个已做好版本...
2. **数据结构**:为了存储游戏状态,开发者可能会使用二维数组或者自定义的类来表示游戏面板。每个元素可能包含图案信息、可匹配状态、是否被选择等属性。 3. **算法**:连连看的关键在于找到可以匹配的方块对。这...
【基于cocos2dx写的一个连连看小demo】是一个使用Cocos2d-x游戏引擎开发的简单游戏项目,旨在展示如何运用Cocos2d-x构建一个经典的连连看游戏。Cocos2d-x是一款广泛应用于跨平台2D游戏开发的开源框架,支持多种编程...
1. **游戏布局**:连连看游戏通常采用二维数组来表示棋盘,每个元素代表棋盘上的一种图案。在这个源码中,开发者可能使用了自定义的类或结构体来存储棋盘状态。 2. **图片资源**:`Resources`文件夹中包含了连连看...
这个压缩包文件包含了使用MFC开发的连连看小游戏的源代码,适合对MFC编程感兴趣的开发者进行学习和研究。 在MFC中,连连看游戏的开发会涉及以下几个关键知识点: 1. **MFC框架**:MFC是一个面向对象的类库,它封装...
本篇将深入探讨如何使用Cocos2d-x构建一个经典的连连看游戏。 1. **游戏设计** 连连看游戏的基本规则是找出并消除两个相同图案的方块,它们之间必须通过不超过两条直线连接。首先,我们需要设计游戏的界面布局,...
《连连看》是一款深受大众喜爱的经典消除类游戏,它的核心玩法是通过寻找并连接两个相同图案的方块,使得它们在相连的路径上没有其他方块阻隔,从而达到消除的目的。这款游戏简单易上手,但却具有一定的挑战性和趣味...
总之,《cocos2dx之连连看》的开发涵盖了Cocos2d-x的基础知识以及游戏开发的核心技巧,包括图形渲染、用户交互、游戏逻辑和性能优化等方面,是学习Cocos2d-x游戏开发的一个很好的实践项目。通过实际开发,开发者不仅...
2. **精灵与图集**:连连看的棋子通常由精灵(Sprite)表示,每个棋子对应一个精灵图片。为了优化性能,CocosCreate支持图集(Atlas)技术,将多个小图片打包成一张大图,减少加载时间和内存占用。 3. **物理碰撞...
在这个连连看游戏中,用户控件可能被用来创建可交互的游戏棋盘,每个棋盘单元可能就是一个自定义的用户控件,包含图像、点击事件处理等。 2. **动画效果**:WPF提供了强大的动画支持,允许开发者创建各种动态效果。...
2. **路径检查**:对于每一对候选元素,从一个元素出发,沿着四个方向(上、下、左、右)检查是否能到达另一个元素。同时,需要检查路径上的每个位置是否有元素阻隔,以及是否超过预设的最大步数。 3. **消除**:...
在这个"Unity连连看小游戏"项目中,开发者已经构建了一个经典的游戏体验,包括游戏面板、视觉素材和核心算法。下面我们将深入探讨这个项目的各个方面。 首先,游戏面板是连连看游戏的核心组件,它是由一系列可匹配...
Cocos2d是一个开源的2D游戏开发框架,它允许开发者使用Objective-C或Python进行游戏编程。Cocos2d提供了丰富的图形渲染、动画、物理引擎、触摸事件处理等功能,使得开发者能够轻松构建各种复杂的2D游戏。 这个...
在这个主题中,我们将深入探讨一个基于Flash开发的连连看游戏的源码,分析其中的核心算法和设计思路,帮助开发者更好地理解和制作类似的游戏。 一、Flash基础 Flash是一款强大的矢量动画创作工具,同时也支持...
因此,map.js可能存储了不同难度级别的地图布局,每种布局都是一个二维数组,表示图案的位置。 4. **matrix.js**:矩阵模块可能用于处理游戏中的位置计算和操作,例如检查相邻的方块,或者在消除一对图案后更新游戏...
- 首先沿着一个方向移动(`dir1`),然后沿着另一个方向(`dir2`),最后再沿着第三个方向(`dir3`)返回。 - 如果路径中没有其他方块阻挡,则返回`true`,表示这两个方块可以被连接起来;反之,则返回`false`。 ...
"H5连连看小游戏示例及源码"是一个基于H5技术的简单游戏项目,旨在提供一个快速实现连连看功能的基础框架。下面将详细阐述其开发过程、主要技术和关键代码。 一、游戏概述 连连看是一种经典的益智游戏,玩家需要...
2. **精灵和图集**:连连看的图案通常由精灵(Sprite)表示,开发者可能将所有图案打包成一个图集(Atlas),以优化资源加载和内存使用。在Cocos Creator中,可以方便地创建和管理这些精灵,实现动态更换图案和动画...
连连看是一种广受欢迎的休闲消除类游戏,玩家需要在限定时间内找到并消除两个相同图案的方块。在这个项目中,我们关注的是一个使用C++Builder编程语言实现的连连看游戏的算法程序。C++Builder是一种集成开发环境,它...
通常,开发者会使用二维数组来存储游戏板的状态,每个元素代表一个图标,包含其类型和状态(是否被选择)。当玩家点击图标时,事件监听器会触发,检查相邻的图标是否可以消除。这里就需要用到搜索算法,如深度优先...