二个连连看
2个连连看
http://bbs.9ria.com/viewthread.php?tid=84342&extra=page%3D1%26amp%3Borderby%3Ddateline%26amp%3Bfilter%3D2592000
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; } } } } } }