`

2个连连看

阅读更多
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;
                                                        }
                                                }
                                        
                                        
                                
                        }
                }
        }
        
}

分享到:
评论

相关推荐

    js 版的连连看3个

    "js 版的连连看3个"这个项目涉及到了使用JavaScript实现连连看游戏的代码。连连看,又称为对对碰,是一款流行的休闲益智游戏,玩家需要在限定时间内找出并消除所有可以配对的相同元素。 描述中提到的两个已做好版本...

    连连看_连连看_c++连连看_

    2. **数据结构**:为了存储游戏状态,开发者可能会使用二维数组或者自定义的类来表示游戏面板。每个元素可能包含图案信息、可匹配状态、是否被选择等属性。 3. **算法**:连连看的关键在于找到可以匹配的方块对。这...

    基于cocos2dx写的一个连连看小demo

    【基于cocos2dx写的一个连连看小demo】是一个使用Cocos2d-x游戏引擎开发的简单游戏项目,旨在展示如何运用Cocos2d-x构建一个经典的连连看游戏。Cocos2d-x是一款广泛应用于跨平台2D游戏开发的开源框架,支持多种编程...

    一个连连看小游戏源码

    1. **游戏布局**:连连看游戏通常采用二维数组来表示棋盘,每个元素代表棋盘上的一种图案。在这个源码中,开发者可能使用了自定义的类或结构体来存储棋盘状态。 2. **图片资源**:`Resources`文件夹中包含了连连看...

    连连看 MFC 连连看 mfc 连连看

    这个压缩包文件包含了使用MFC开发的连连看小游戏的源代码,适合对MFC编程感兴趣的开发者进行学习和研究。 在MFC中,连连看游戏的开发会涉及以下几个关键知识点: 1. **MFC框架**:MFC是一个面向对象的类库,它封装...

    cocos2dx 连连看

    本篇将深入探讨如何使用Cocos2d-x构建一个经典的连连看游戏。 1. **游戏设计** 连连看游戏的基本规则是找出并消除两个相同图案的方块,它们之间必须通过不超过两条直线连接。首先,我们需要设计游戏的界面布局,...

    连连看-连连看.rar

    《连连看》是一款深受大众喜爱的经典消除类游戏,它的核心玩法是通过寻找并连接两个相同图案的方块,使得它们在相连的路径上没有其他方块阻隔,从而达到消除的目的。这款游戏简单易上手,但却具有一定的挑战性和趣味...

    coco2dx之连连看

    总之,《cocos2dx之连连看》的开发涵盖了Cocos2d-x的基础知识以及游戏开发的核心技巧,包括图形渲染、用户交互、游戏逻辑和性能优化等方面,是学习Cocos2d-x游戏开发的一个很好的实践项目。通过实际开发,开发者不仅...

    连连看项目_连连看_

    2. **精灵与图集**:连连看的棋子通常由精灵(Sprite)表示,每个棋子对应一个精灵图片。为了优化性能,CocosCreate支持图集(Atlas)技术,将多个小图片打包成一张大图,减少加载时间和内存占用。 3. **物理碰撞...

    WPF开发的一个小型连连看游戏

    在这个连连看游戏中,用户控件可能被用来创建可交互的游戏棋盘,每个棋盘单元可能就是一个自定义的用户控件,包含图像、点击事件处理等。 2. **动画效果**:WPF提供了强大的动画支持,允许开发者创建各种动态效果。...

    连连看vc6.0实现

    2. **路径检查**:对于每一对候选元素,从一个元素出发,沿着四个方向(上、下、左、右)检查是否能到达另一个元素。同时,需要检查路径上的每个位置是否有元素阻隔,以及是否超过预设的最大步数。 3. **消除**:...

    Unity连连看小游戏

    在这个"Unity连连看小游戏"项目中,开发者已经构建了一个经典的游戏体验,包括游戏面板、视觉素材和核心算法。下面我们将深入探讨这个项目的各个方面。 首先,游戏面板是连连看游戏的核心组件,它是由一系列可匹配...

    cocos2d 游戏连连看代码

    Cocos2d是一个开源的2D游戏开发框架,它允许开发者使用Objective-C或Python进行游戏编程。Cocos2d提供了丰富的图形渲染、动画、物理引擎、触摸事件处理等功能,使得开发者能够轻松构建各种复杂的2D游戏。 这个...

    一个连连看游戏的flash源码

    在这个主题中,我们将深入探讨一个基于Flash开发的连连看游戏的源码,分析其中的核心算法和设计思路,帮助开发者更好地理解和制作类似的游戏。 一、Flash基础 Flash是一款强大的矢量动画创作工具,同时也支持...

    canvas小游戏-连连看

    因此,map.js可能存储了不同难度级别的地图布局,每种布局都是一个二维数组,表示图案的位置。 4. **matrix.js**:矩阵模块可能用于处理游戏中的位置计算和操作,例如检查相邻的方块,或者在消除一对图案后更新游戏...

    连连看游戏C语言代码

    - 首先沿着一个方向移动(`dir1`),然后沿着另一个方向(`dir2`),最后再沿着第三个方向(`dir3`)返回。 - 如果路径中没有其他方块阻挡,则返回`true`,表示这两个方块可以被连接起来;反之,则返回`false`。 ...

    H5连连看小游戏示例及源码

    "H5连连看小游戏示例及源码"是一个基于H5技术的简单游戏项目,旨在提供一个快速实现连连看功能的基础框架。下面将详细阐述其开发过程、主要技术和关键代码。 一、游戏概述 连连看是一种经典的益智游戏,玩家需要...

    cocos creator连连看游戏

    2. **精灵和图集**:连连看的图案通常由精灵(Sprite)表示,开发者可能将所有图案打包成一个图集(Atlas),以优化资源加载和内存使用。在Cocos Creator中,可以方便地创建和管理这些精灵,实现动态更换图案和动画...

    一个连连看游戏的算法程序

    连连看是一种广受欢迎的休闲消除类游戏,玩家需要在限定时间内找到并消除两个相同图案的方块。在这个项目中,我们关注的是一个使用C++Builder编程语言实现的连连看游戏的算法程序。C++Builder是一种集成开发环境,它...

    老Java程序员花2天写了个连连看,我竟连不过我女儿,我了个去!

    通常,开发者会使用二维数组来存储游戏板的状态,每个元素代表一个图标,包含其类型和状态(是否被选择)。当玩家点击图标时,事件监听器会触发,检查相邻的图标是否可以消除。这里就需要用到搜索算法,如深度优先...

Global site tag (gtag.js) - Google Analytics