好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

连连看分步实现ppt课件.ppt

31页
  • 卖家[上传人]:壹****1
  • 文档编号:589799446
  • 上传时间:2024-09-11
  • 文档格式:PPT
  • 文档大小:330.50KB
  • / 31 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 连连看实现指点 简介•连连看游戏是一种很流行的小游戏,本次设计实现一个具备较完好功能的连连看游戏,到达如下设计目的:•初步掌握面向对象技术在WinForm运用程序中的运用,掌握简单控件的运用•初步了解事件驱动原理,并将其运用于游戏开发•较好地了解绘图原理,实现图片的加载,连线的绘制等等•综合运用面向对象变成思想,实现界面与逻辑的分别,提高程序的可重用性、可扩展性和可维护性 主要类阐明•Block:一个图块•BlockMap:图块的位置分布•Player:当前游戏者•MainForm:用户交户的主要窗口 Block图片资源的宽度和高度该块在地图中的坐标这里图块并没有管理图片信息,而仅仅是一个位置的管理,详细的图片分布信息存储在BlockMap类中 BlockMap•管理一切跟图块集合操作相关的操作:•图块地图的初始化:生成、打乱•图块对的消除•两个图块匹配的寻路•自动寻觅图块对〔实现提示〕•图块的位置变换等 技巧:在一切图片的外层添加一层全部为0的块,在寻路和绘制途径时比较方便 界面设计 图片的管理和显示•在本例中,图片并没有存储到各块中,而是预先加载到一个图片集合中,然后在需求时,根据BlockMap中某〔x,y〕位置上图片编号来索引并加载 运用资源文件来管理一切资源•1.新增资源项.resx文件,在其中导入一切需求的图片•2.根据需求为资源更改称号,以方便调用 加载资源Assembly assembly;ResourceManager rm;assembly = Assembly.GetExecutingAssembly(); rmManager = new ResourceManager("LLK.Images", assembly);string  s=(string)rm.GetObject("step1"); Image image = (Bitmap)rm.GetObject("_1_L2〞);从当前程序集中加载特定的资源集合,必需运用完好途径从资源集合中获取特定资源对象,必需作显式转换 Step1:地图显示和打乱•在程序初始化时,先将要加载的图片在棋盘上按序绘制出来,留意每一种图标我们绘制的时候需求一次性绘制两次,这样,才干珍重绘制出来的每种图标的个数都是偶数个。

      如以下图所示:•                                                    留意和技巧•棋盘在最外面一层中是不添加图标的,为的是我们连线时候可以运用最外层画线,而不会出现穿过图标画线的情况,如以下图: Step1:地图显示和打乱•窗体加载时初始化资源和pictureBox大小Assembly assembly;ResourceManager rm; Step1:地图显示和打乱•窗体加载时初始化资源和pictureBox大小 Step1:地图显示和打乱•加载图片数据并支持刷新 绘图初步•Windows中绘图类似于投影,只需光继续打在屏幕上时才有图像,否那么就只能显示“背景〞•所以需求不停地“重绘〞,也就是在每次窗体刷新时将需求的东西重新“画上去〞•常用的重绘战略就是在paint事件中调用绘制代码 Graphics类•封装 GDI+ 绘图面,无法被承继(Sealed) •提供将对象绘制到显示设备的方法Graphics 对象与特定的设备上下文关联 •Grahpics提供的方法分类•绘制根本外形•填充根本外形•绘制图像•绘制文本•其他 •Graphics对象绘图方法•– DrawArc:绘制圆弧•– DrawBezier:绘制贝塞尔曲线•– DrawBeziers:绘制贝塞尔曲线组•– DrawClosedCurve:绘制封锁曲线•– DrawCurve:绘制曲线•– DrawEllipse:绘制椭圆•– DrawIcon:绘制图标•– DrawIconUnstretched:无缩放绘制图标•– DrawImage:绘制图像•– DrawImageUnscaled:无缩放绘制图像•– DrawLine:绘制直线•– DrawLines:绘制直线组•– DrawPath:绘制GraphicsPath对象•– DrawPie:绘制圆饼•– DrawPolygon:绘制多边形•– DrawRectangle:绘制矩形•– DrawRectangles:绘制矩形组•– DrawString:绘制文本 •Graphics对象绘制实心图形方法•– FillClosedCurve:绘制实心封锁曲线•– FillEllipe:封锁实心椭圆•– FillPath:GraphicsPath对象•– FillPie:绘制实心圆饼•– FillPolygon:绘制实心多边形•– FillRectangle:绘制实心矩形•– FillRectangles:绘制实心矩形组•– FillRegion:绘制实心Region对象 Graphics对象的获得•非Paint事件代码:•      控件.CreateGraphics(); • Paint事件代码中用e.Graphics; 打乱顺序•调用BlockMap.DeorderMap即可 step2-实现衔接的判别和消除•新增以下几个方法:•1.private bool CanLinkDirectly(int x1, int y1, int x2, int y2):判别两个图块能否直线相连•2.public bool LinkMatch(int x1, int y1, int x2, int y2,out List cps):判别两个图块能否相连,假设可以,前往他们相连的折点集合•3.public void Link(int x1,int y1,int x2,int y2,Graphics g, Pen p):对两个可以相连的图块绘制他们之间的连线,并消除图块•3调用2,2调用1,代码应尽能够功能明确,减少冗余 衔接算法的原理及接算法的原理及实现〔〔1〕〕•两个图标可以衔接的充分条件是:•〔1〕两个图标是一样的;•〔2〕两个图标之间有一条路相连,其中这条“路上〞没有其他的图标“妨碍〞;•〔3〕这一条路不能有两个以上的拐角;•    满足这三个条件即可以为两个图标是相连通的; 衔接算法的原理及接算法的原理及实现〔〔2〕〕•直线型:这就是横向或者是纵向方向判别即可,这种情况最容易判别,只需两者之间没有其他图标即可 •〔2〕一折型:其真实两个选中图标确定的两个对角顶点画一个矩形,假设是其他两个顶点中有可以满足与两个选中图标都可以“直线型〞相连的,即可以为此两个选中图标可以相连,实例如下,判别两个红色的图标相连的情况:•                                                衔接算法的原理及接算法的原理及实现〔〔3〕〕 •〔3〕二折型:对于二折型的判别是重点。

      判别二折型主要是做两个方向的扫描,即横向扫描与纵向扫描:•横向扫描表示图:•                                         衔接算法的原理及接算法的原理及实现〔〔4〕〕 •纵向扫描表示图: 界面实现(1)•添加类实例变量声明:• Block first=null; //第一个被点击的图形坐标• Block second=null;//第二个被点击的图形•PaintMap()中对选中的图块进展额外的显示•  界面实现(2)•当点击图片框时,对选中图块进展配对处置•  •思索:•如何判别游戏终了或过关?•如何给出提示? 更进一步•奖励•计时•图块运动规那么:向下,左右分别…•背景音乐•用户自定义设置•分层连连看/镂空地图 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.