收藏 分销(赏)

基于Flash益智类连连看游戏的设计与实现.doc

上传人:仙人****88 文档编号:9467049 上传时间:2025-03-27 格式:DOC 页数:38 大小:779KB 下载积分:10 金币
下载 相关 举报
基于Flash益智类连连看游戏的设计与实现.doc_第1页
第1页 / 共38页
基于Flash益智类连连看游戏的设计与实现.doc_第2页
第2页 / 共38页


点击查看更多>>
资源描述
摘要 连连看游戏顾名思义就是找出相关联的东西,游戏规则就是只要用三条以内的直线将两个相关联的东西连接。连连看游戏是源自台湾的桌面小游戏,自引入大陆以来,也吸引了众多程序开发人员利用其它的平台开发次游戏,同时也让连连看游戏更加的多元化,有了更好的发展。其中,由于Flash连连看游戏在交互性上有更好的体现,所以得到许多玩家的喜爱。在这次连连看游戏的制作上,本课题也采用了Flash这款软件来实现,版本是Flash CS3.0,利用Actionscript 3.0代码来实现游戏的功能。在连连看游戏的实现过程中,关键问题主要是游戏制作之前二维数组的设计和图标连线时寻路算法的应用。 关键词:连连看 Flash 寻路算法 ABSTRACT Picture Matching game associated the name suggests is to find something that is as long as the rules of the game with three straight lines within the two things associated connection. Picture matching game belong the desktop games from Taiwan, since came into the chinesemainland, it has also attracted a large number of application developers take advantage of the Game with other platforms, while giving a more diversified picture matching game, it had a better development. As the picture matching game which developed by Flash has better interaction, so loved by many players.On this picture matching game program, I also used Flash software to develop it, also the Flash version is Flash CS3.0, using Actionscript 3.0 to achieve the functions of the game.During the process of picture matching game development, the main problem is to design two-dimensional array before the game design and the connection icon in the application of Algorithm for the Route. Keywords:Picture Matching Game, Flash, Algorithm for the Route 目录 摘要 I ABSTRACT II 目录 III 第1章 引言 1 1.1 背景 1 1.2 研究内容及拟解决问题 1 第2章 工具软件与技术基础 3 2.1编程开发环境和相关工具 3 2.2编程环境 3 2.2.1 Flash CS3.0 3 2.3相关工具 4 2.3.1 Photoshop CS4 4 2.3.2 千千静听 4 2.3.3 Adobe Flash Player 5 第3章 游戏总体设计 7 3.1游戏需求分析 7 3.2游戏功能 7 3.3 游戏的Bug分析和可玩性 8 3.3.1 游戏的Bug分析 8 3.3.2游戏的可玩性 8 第4章 游戏界面设计 10 4.1 游戏界面设计 10 第5章 游戏的实现 12 5.1 游戏地图的设计 12 5.2 游戏图标的载入 14 5.3 游戏图标点击效果与事件传递 15 5.4 游戏的显示 17 5.5 寻路算法的设计 19 5.6 游戏效果功能的实现 24 5.7 游戏声音的添加 29 5.10 游戏调试 30 第6章 结束语 32 致谢 33 参考文献 34 IV 第1章 引言 1.1 背景 连连看游戏当初是数学家们在茶余饭后的游戏,他们只要有笔和纸就可以开始进行游戏了。那时的连连看游戏的规则也是类似于现在连连看游戏的规则,主要是在点的连线上有一定的要求。而如今随着计算机技术的发展,程序开发人员已经把连连看游戏独立的开发成一个桌面的小游戏,同时,连连看游戏也变得更加的多元化,也被许多的小游戏爱好者有熟知。连连看游戏现在儿童教育上有所被应用,主要是可以提高儿童的反应能力和灵活性。 2008年,随着社交网络的普及和开放平台的兴起。连连看被引入了社交网络。连连看与个人空间相结合,被快速的传播,成为一款热门的社交游戏,其中以开发者Jonevey在Manyou开放平台上推出的宠物连连看最为流行。 现在随着连连看游戏的流行和计算机技术的发展,用来开发连连看游戏的计算机语言也越来越丰富了,现在网络有用Java开发的,也有用C++开发的。不过,现在随着Flash软件版本的更新和它的脚本语言的功能的完善,现在也出现了许多用Flash脚本编写的连连看游戏。 Flash脚本语言也算是一个面向对象的语言,它也有自身所携带的类和用户自己也同时可以构造一个自己的类。用户可以通过继承和调用类的方法来实现自己设想的功能。 1.2 研究内容及拟解决问题 这次课题设计的连连看游戏主要是运用Actionscript 3.0来编写和实现,由于Actionscript 3.0本身也是面向对象的语言,所以需要基本掌握抽象、封装、继承和多态等面向对象的基本概念。具体的主要有Sprite类、Loader类、Button类和一些基本的类。 具体内容主要有:通过帧方法来实现Flash文件的帧的播放,以达到游戏的开始试玩和再次试玩;当用户点击图标是声音文件的播放,对于游戏时间的控制,游戏初始化时图标的载入和随机排列和玩家找到两个同样的图标时图标的连线和消失。运用寻路算法如何找到两个相同图标的可连接路径,及其对寻路算法合理应用。还有的就是一些Flash自带的组件的应用,增强游戏的效果功能。 拟解决的主要问题有:对于相对应的图标点击操作和消失声音的添加;如何载入图标并随机排列;如何判断用户点击的图标是否相同,如果相同的话,两个图标之间是否有线可连,否则不能相连;如果玩家找不到可以相连的图标,通过按钮的点击来帮助玩家找到两个可连的图标。 第2章 工具软件与技术基础 2.1编程开发环境和相关工具 2.2编程环境 2.2.1 Flash CS3.0 Flash CS3.0是Adobe公司收购Macromedia公司后,在2007年首次推出的版本,最新的Actionscript3.0编程语言替换原来的Actionscript2.0编程语言,全新的Actionscript3.0也完全支持了XML。当然Flash软件也已经更新到了Flash CS5了。不过对于本课题来说,Flash CS3.0的版本已经完全够完成连连看游戏的功能了。 这次游戏的制作主要侧重于代码上的编写,在Flash中的代码编写的环境其实就是其的动作面板,如图2-1。动作面板基本提供了一个程序开发人员的所需要的编程环境,不过也不是十分的完善,尤其在调试方面。 图2-1 动作面板界面 Actionscript是一种基于EMCAScript的编程语言,主要是用来编写Adobe Flash影片和应用程序。而对于如今的Actionscript3.0则是一种更强大的面向对象的编程语言了,功能也比以前的版本强大了许多,比如类、包和命名空间等。同时Actionscript3.0的引擎也有了很大的提高,其代码的运行速度几乎比以前快了将近10倍。 2.3相关工具 2.3.1 Photoshop CS4 Photoshop CS4 是当前最流行的图片处理软件,也是Adobe公司推出的。Photoshop涉及的应用领域非常的广,在图像、图形、文字和出版都有所被应用,软件界面如图2-1。这次游戏中,我主要是用Photoshop来制作一个有20个图标的Png文件。 图2-1 Photoshop CS4界面 CS4版本于2008年9月23日推出, Adobe CS4套装拥有一百多项创新,并特别注重简化工作流程、提高设计效率。Photoshop CS4支持基于内容的智能缩放,支持64位操作系统、更大容量内存,基于OpenGL的GPGPU通用计算加速。 2.3.2 千千静听 千千静听是由百度开发的一款支持多种音频格式的纯音频媒体播放软件,其小巧精致,功能强大的特点,深得用户的喜爱,并迅速成为目前国内最受欢迎的音乐播放软件,软件界面如图2-2。 图2-2 千千静听界面 在这次的游戏制作中,由于本课题需要与游戏相关的音频文件,而Flash CS3.0支持的音频格式有限,所以必须要转换音频格式来适应于游戏当中。而千千静听也提供了音频格式的转换,本课题最后运用的音频格式是Mp3格式。 2.3.3 Adobe Flash Player播放器 Adobe Flash Player是一种广泛使用的、专有的多媒体程序播放器,如图2-3。Adobe Flash Player 最初设计目的为播放2维向量动量,但至此之后成为适合开发创造丰富型互联网应用程序、流视频音频的工具。Flash Player使用向量图形的技术来最小化文件的大小以及创造节省网络带宽和下载时间的文件。因此Flash 成为嵌入网页中的小游戏、动画以及图形用户界面常用的格式。 图2-3 Adobe Flash Player播放器 而现在Adobe Flash Player的版本已经更新到10.0了。这个播放器非常小,只需花一点点时间下载,对于在体验网页上的多媒体效果是个很好的开始。Flash也支持也支持高品质的MP3音频流、文字输入字段、交互式接口等等很多东西。这个最新版本可以观看所有的Flash格式。若你要观看网页上的多媒体内容,Flash Player几乎是网络上的标准。 第3章 游戏总体设计 3.1游戏需求分析 这次的课题是连连看游戏的设计与实现,先试玩了一下网络上的连连看游戏,所以对连连看游戏做了大致的分析和规划,这样可以避免在接下来的制作过程中毫无头绪。 对于连连看游戏来说,游戏的主要功能有在游戏载入时,图标能随机的成对的生成;对于相同的两个图标之间是否有少于或等于两个拐点的连线;在声音文件的处理上,能有合适的音频文件适合游戏本身;增加一些游戏道具,游戏时间也要有一个合理的设置,增加游戏的可玩性。 3.2游戏功能 根据游戏需求设计,这次的连连看游戏可以具体分为如下模块,分别是: 1, 游戏开始。 2, 图标和游戏时间控制条的载入。 3, 游戏运行。 4, 游戏结束。 对于Flash来说,本身就是被用来制作一个影片,所以本课题可以根据时间轴上的帧来描述游戏模块的先后顺序。其中,当游戏结束时,本课题利用Flash帧播放的灵活性,再次开始游戏。游戏运行模块的先后顺序如图3-1。 游戏开始 图标和游戏时间控制条的载入 游戏运行 游戏结束 图3-1 游戏运行模块图 3.3 游戏的Bug分析和可玩性 3.3.1 游戏的Bug分析 对于每个游戏来说都会存在或多或少的Bug,这时候有可能导致该游戏无法继续进行,从而导致进入游戏报错,甚至有些时候导致电脑死机。一般来说,在一个游戏基本开发完成时,游戏公司都会邀请一些职业玩家来试玩该游戏,主要目的也是让玩家可以发现游戏的Bug,让游戏开发人员再次完善游戏,从而可以让此游戏完整地进入市场。 对于连连看游戏来说,最常见的Bug就是玩家会发现最后所有的图标都会没有合适的路径从而导致无法连接,游戏也无法再继续进行。在这一点上,由于这次设计的连连看游戏在列数和行数够多并且不等,试玩下来基本都能顺利的完成游戏。其次,由于Flash软件的性能问题,如果Flash文件过大的话或者电脑配置达不到要求的话,游戏在开始运行的时候,可能会卡住,导致无法正常运行。这次的连连看游戏并没有太多的元件,而且在代码的组织上也比较有条理,所以运行起来也没有卡住不能运行的状况。 3.3.2游戏的可玩性 对于一个游戏来说,它的成功关键在于可玩性上的体现。可玩性一般体现在游戏的剧情、画面、物理碰撞效果、真实性和人物的设计等等,一般剧情会占有比较大的比例。 对于连连看游戏来说,要在可玩性上有很好的体现确实也比较困难。从连连看游戏发展到现在,许多游戏爱好者也经历了一个又一个连连看游戏版本,也没让某一个连连看游戏的版本被大家所熟知。在网络上,一般可玩性比较高的连连看游戏都是画面比较美观,在游戏道具的也有了十分人性化的添加,或是有了关卡的设置,可以让玩家有一种挑战的心理。不过,现在的连连看游戏可以在平台上与其它玩家一起玩,比如QQ游戏平台就提供了一个连连看游戏,玩家可以邀请自己的好友一起玩,确实也可以增加一些连连看游戏的人气。 在这次自己的连连看游戏的可玩性上,本课题也试着让它可以变得稍微吸引人一点。在图标的选择上,本课题选择了西班牙甲级联赛的队标,这对一个铁杆球迷来说,可能就会比较感兴趣了。在游戏背景颜色的处理上,本课题利用了Flash自带的一个组件Colorpicker,可以让玩家选择自己所喜欢的颜色。当玩家试玩游戏时,由于这次的图标比较多,可能会显得比较的乱,所以本课题添加了一个可以帮助玩家查找可连接的图标的按钮,以避免游戏过程中寻找的时间多长而产生的视觉疲劳感。还有就是在游戏时间的设定上,通过对游戏无数次的试玩下来,最终决定把游戏时间设定为150秒。如果玩家不能在规定时间内完成游戏,就表示游戏失败。在150秒内要完成这个游戏,对于第一玩连连看游戏的人来说,可能是会比较有挑战性的。这一点上,通过其他人员试玩也证明了这一点。 第4章 游戏界面设计 4.1 游戏界面设计 一个好游戏一般来说都会有一个很好的游戏画面,因为这也是可以吸引玩家的一部分。对于Flash游戏来说,一般游戏画面色彩会比较的绚丽。不过,由于连连看游戏本身的表现形式比较单一,自己在美观上面的设计也不是很在行,不需要运用到很多的色彩,所以这次游戏画面就比较的单一。 这次游戏的进入界面比较简单,主要就是添加了一个text和一个按钮,如图4-1: 图4-1 游戏进入界面 游戏的运行画面主要是由代码实现,在制作过程中,我添加了一个游戏时间控制条,并把它放在了画面的顶端,如图4-2: 图4-2 游戏运行画面 游戏的结束画面也比较简单,主要是表达了游戏结束的信息并添加了一个PlayAgain的按钮,如图4-3: 图4-3 游戏结束画面 第5章 游戏的实现 5.1 游戏地图的设计 所谓的游戏地图,其实就只是一个二维数组,主要是用来保存各个图标的信息。不过由于在图标之间的连线效果,所以这个二维数组的特点是数组的第一列和最后一列,第一行和最后一行都是0,其实就是数组的最外面的一圈都是零,就是如果你建立的是一个10*14的数组,其实它只有8*12的具有实质意义的数值。其中,可以通过randomSort函数给数组进行随机排序,当然,不包括最外圈的零。在检测游戏是否结束时,也可以通过判断数组是否还成对存在大于零的数值。具体代码如下: public class Map { public static const COL:uint = 14; public static const ROW:uint = 10; private var picCounts:uint = 20; public var MapArray:Array; 上述代码主要定义了一个Map类,定义了静态变量COL和ROW,变量PicCounts表示载入的图标数。 public function Map() { MapArray = new Array(); var tempArray:Array = new Array(); for (var i:uint=0; i<(Map.COL-2)*(Map.ROW-2)/2; i++) { var t:uint = Math.random()*picCounts+1; tempArray.push(t,t); } tempArray.sort(Map.randomSort); 上述代码功能是实例化了MapArray数组,并定义了tempArray并实例化,并随机生成48个从1到20的整型数,将他们成对存入tempArray数组,所以tempArray数组有48对的整型数。最后通过randomSort方法随机排列。 var c:Array = new Array(); for (i=0; i<Map.COL;i++) { c.push(0); } MapArray.push(c); for (i=0; i<Map.ROW-2; i++) { var r:Array = new Array(); r.push(0); for (var j:uint=0; j<Map.COL-2; j++) { r.push(tempArray[i*(Map.COL-2)+j]); } r.push(0); MapArray.push(r); } MapArray.push(c); } 上述代码的主要功能就是对于MapArray数组的设计,已达到一个最外围的行和列都是零的效果。主要是实现顺序是产生和第一列数等同的零,并存入c数组。在处理第二列的时候先在次列的第一位置存入一个零,然后在存入少于列数两个的先前产生的大于零的整型数,再在次列的最后一个位置存入零。以此类推,当处理到最后一列的时候,在对MapArray存入整列的零,就产生了我们想到的数组了。 Public static function randomSort(elementA:Object,elementB:Object):Number { return Math.pow(-1,Math.floor(Math.random() * 2)); } 上述代码就是数组的随机排列函数。 public function gameFinished():Boolean { for (var i:uint=0; i<Map.ROW; i++) { for (var j:uint=0; j<Map.COL; j++) { if (MapArray[i][j]>0) { return false; } } } return true; } 上述代码主要功能就是判断游戏是否结束,主要通过一个循环来读取数值相应位置数组值,并判断其值是否大于零。如果大于零的话,就表示游戏还没结束,而如果数组中已不存在大于零的数了,则返回游戏已经结束的命令。 5.2 游戏图标的载入 这次游戏在图标载入主要是调用了Flash的loader类,并通过其BitmapData类的调用来实现位图信息的存储,并把位图的信息都输入到PicArray数组中。具体代码如下: public class picloading extends Sprite { public static var PicArray:Array = new Array(); //定义一个PicArray数组并实例化。 private var picload:Loader;//定义一个picload private var picUrl:String;//定义一个数组 public function picloading(){ picUrl = "images/adobe.png"; loadingPic(); } }//在主函数中给picUrl赋值一个图片地址,并构造了一个loadingPic函数。 public function loadingPic():void{ picload = new Loader(); picload.load(new URLRequest(picUrl)); picload.contentLoaderInfo.addEventListener (Event.COMPLETE,loadComplete) }//此函数中根据picUrl所提供的地址加载图片,并添加了一个监听;loadComplete事件。 private function loadComplete(e:Event):void{ var Picdata:BitmapData = Bitmap(picload.content).bitmapData;//通过指定目录将Picdata的位图数据加载 for(var j:uint=0;j<2;j++){ for(var i:uint=0;i<10;i++){ var tempPic:BitmapData= new BitmapData(32,32,true,0x00000000); tempPic.copyPixels(Picdata,new Rectangle(i*32,j*32,32,32),new Point()); picloading.PicArray.push(tempPic); } } 上述代码主要功能是通过循环将2*10的图片分长和宽都为32的模块复制其位图信息,赋值给tempPic,并将其输入PicArray数组。 Picdata.dispose(); dispatchEvent(new Event("allpicsaved")); 上面两行代码主要是将Picdata的存储空间释放并传递了一个新的事件,事件名为allpicsaved。 5.3 游戏图标点击效果与事件传递 在完成图标载入后并保存在一个数组后,我们就需要图标的点击效果和传递一个事件了。这次我主要编写了一个blockshow类,该类主要有四个参数,其实每个图标也就相当于一个Button,并监听了一个MouseEventClick事件,事件名为onClick,具体代码如下: public class Blockshow extends Sprite { public var hittype:uint; public var hitrow:uint; public var hitcol:uint; private var hitbutton:SimpleButton; private var firstClick:Array; public static const BLOCKWIDTH:uint = 32; public function Blockshow(_firstClick:Array,_hittype:uint=0, _hitrow:uint=0,_hitcol:uint=0){ hittype=_hittype; hitrow=_hitrow; hitcol=_hitcol; firstClick = _firstClick; hitbutton= new SimpleButton(); hitbutton.x=hitbutton.y=0; hitbutton.addEventListener(MouseEvent.CLICK,onClick); setState(0); addChild(hitbutton); }上述函数主要功能是监听了一个鼠标事件,函数名为onClick,还调用了setState函数。其它主要是给各个变量的赋值。 public function setState(state:uint):void { var pic:Bitmap = new Bitmap(picloading.PngArray[hittype -1]); if(state>0){ pic.filters=[new ColorMatrixFilter([-1,0,0,0,177,0,-1,0,0,177,0,0,-1,0,177,0,0,0,1,0])]; } hitbutton.upState = hitbutton.overState = hitbutton.downState = hitbutton.hitTestState = pic; } } } 上述函数主要给每个图标的点击效果添加了填充色,具体颜色是暗蓝色。 private function onClick(e:MouseEvent):void{ setState(1); firstClick[0] = hitrow; firstClick[1] = hitcol; dispatchEvent(new Event("Clicked")); } 上述函数主要将图标的行数和列数赋值给了firstClick数组,并传递了一个ClickMe事件。 5.4 游戏的显示 在游戏的显示上,本课题先建立一个空白的影片剪辑Gamedesign,并把它放置于第二帧,然后在给这个影片剪辑链接一个自己编写的Gamedesign类。链接类的设置方法就是用户要选择为ActionScript导出和在第一帧导出,同时你可以点击右侧的打钩的图标,来验证一个链接类是否有效存在,如图5-1。 图5-1 Gamedesign类的链接 Gamedesign类的具体代码如下: public class Gamedesign extends Sprite { private var oklinepoint:Array = [-10,-10,-10,-10,-10,-10,-10,-10]; private var lineMap:BitmapData; private var roadline:Bitmap; private var remandlineArray:Array = [-10,-10,-10,-10]; private var FirClick:Array = new Array(); private var SecClick:Array = new Array(); private var mapArray:Array; private var showLayer:Sprite; private var map:Map; var theFirstCardSound:FirstCardSound = new FirstCardSound(); var theMatchSound:MatchSound = new MatchSound(); 上述代码是我整个游戏运行所需要的变量和两个声音文件的实例化。 public function Gamedesign() { var picsource:picloading = new picloading(); picsource.addEventListener("allpicsaved",GameStart); } 上述函数主要功能是当所有资源载入完毕后,进入主函数GameStart。 private function GameStart(e:Event):void{ map = new Map(); FirClick = [-1,-1]; SecClick = [-1,-1]; mapArray = map.MapArray; drawMap(); } 上述函数是主要功能是对于map的实例化和数组的赋值,并调用了drawMap函数。 private function drawMap():void{ if(getChildByName("showLayer")!=null) removeChild(getChildByName("showLayer")); showLayer = new Sprite(); showLayer.name = "showLayer";;//定义一个新的Sprite类,名为showLayer,如果不加一个showLayer的话,图标就会无法消失。 addChild(showLayer); for(var i:uint=0;i<mapArray.length;i++){ for(var j:uint=0;j<mapArray[i].length;j++){ var H:Blockshow = new Blockshow(FirClick,mapArray[i][j],i,j); H.x = j*32; H.y = i*32; H.name = "b_" + i + "_" + j; H.addEventListener("Clicked",onClick); showLayer.addChild(H); } } 上述drawMap函数就是通过循环将Map类的mapArray的各个相对应得数值添加到各自的图标上,为每个图标也添加了一个Clicked事件,事件名为onClick。 5.5 寻路算法的设计 在完成成了游戏图标的显示之后,游戏就要开始有实质性的功能的实现了。连连看游戏在找到两个相同图标的时,就需要对他们进行检测了。一般有3种连接情况: 1,直线相连。 2,经过一个拐点相连。 3,经过两个拐点相连。 不过在找路径的时候,我们先需要判断两个图标是否在同一条直线或者是不在同一条直线上。 判断两个图标是否在同一条直线的具体代码如下: private function forline(cow1:uint,row1:uint,cow2:uint,row2:uint):Boolean{ if(cow1==cow2 && row1==row2)return true;//同一点 else if(cow1==cow2){//两点处于同一列 if(row1>row2){ var t:uint = row1; row1=row2; row2=t; }//两点位置互换不影响比较结果 if(row1+1==row2)return true;//两点相邻 for(var i:uint=row1+1;i<row2;i++){ if(mapArray[i][cow1]>0)return false; } return true; } else if(row1==row2){//两点处于同一行 if(cow1>cow2){//确保cow1<cow2 var a:uint=cow1; cow1=cow2; cow2=a; } if(cow1+1==cow2)return true;//两点相邻 for(var s:uint=cow1+1;s<cow2;s++){ if(mapArray[row1][s]>0)return false; } return true; } return false; //两点不在同一直线 } 通过forline函数判断两个图标是否在同一条直线后,我们就可以寻找连接路径了。如果两个图标在同一条直线的话,情况就比较简单。如果两个图标不在同一条直线的话,可以先检测其中一个图标的水平线,再检测垂线来找到相对的路线。其中并把检测成功的路径点赋值给oklinepoint数组,在检测的时候主要是通过result来返回Boolean值,具体代码如下: private function pictoline(cow1:uint,row1:uint,cow2:uint,row2:uint):Boolean{ if(mapArray[row1][cow1]!= mapArray[row2][cow2])return false; if(cow1==cow2 && row1==row2)return false; var i:uint=0; var result:Boolean=false; if(cow1==cow2){ if(forline(cow1,row1,cow2,row2)){ savelinePoint(cow1,row1,cow1,row1,cow1,row1,cow2,row2); return true; } for(i=0;i<mapArray[0].length;i++){ if(mapArray[row1][i]==0 && mapArray[row2][i]==0){ if(forline(cow1,row1,i,row1) && forline(i,row1,i,row2) && forline(i,row2,cow2,row2)){ result = true; savelinePoint(cow1,row1,i,row1,i,row2,cow2,row2); } } } } else if(row1==row2){ if(forline(cow1,row1,cow2,row2)){ savelinePoint(cow1,row1,cow1,row1,cow2,row2,cow2,row2); return true; } for(i=0;i<mapArray.length;i++){ if(mapArray[i][cow1]==0 && mapArray[i][cow2]==0){ if(forline(cow1,row1,cow1,i) && forline(cow1,i,cow2,i) && forline(cow2,i,cow2,row2)){ result = true; savelinePoint(cow1,row1,cow1,i,cow2,i,cow2,row2); } } } } else{ for(i=0;i<mapArray[0].length;i++){ if(i==cow1 && mapArray[row2][i]==0)
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服