基于android系统的扫雷游戏程序的开发内容摘要:
_cells[m][n] = 9。 updatasurround( m1 , n1)。 //左上 updatasurround( m1 , n)。 //上 updatasurround( m1 , n+1)。 //右上 updatasurround( m, n1)。 //左 updatasurround( m, n+1)。 //右 毕业设计说明书 (论文 ) 第 9 页 共 34 页 updatasurround( m+1 , n1)。 //左下 updatasurround( m+1 , n )。 //下 updatasurround( m+1 , n+1 )。 //右下 i++。 } if(i m_mines){ (布雷错误 )。 break。 } }} 上面就是整个布雷函数的代码了,最先声明一个变量然后再利用随机函数去填充变量, 下面再声明 一个计数变量和 一个二维数组,接下来是一个循环,当雷还没有生 成结束 就不断循环,利用前面的随机函数产生的变量去获得二维数组的行列值,这样就能确定出一个二维数组中的其中一个变量,然后就是确定变量在数组中的位置,在确认好位置后, 就判断该点是不是已经有雷了,即是不是数字 9,如果不是 就将改点 设置为雷,同时计数变量加 1,然后周围一圈的点都更新一下,非雷的数值都加 1,雷点数值不变。 具体流程如图 31 所示。 最后为了防止出错,再补充一段错误处理代码。 随 即 函 数 产 生 x, y值本 格 值 为 1, 周 围非 1的 格 子 都 加 1是 否 全 部 雷 都布 完布 雷 结 束程 序 开 始 图 31 布雷流程 最后当计数 变量 等于设置的雷数时则布雷结束,成功生 成 雷区。 然后将布好的雷区与图形界面的一个个方格相对应就完成游戏的初始化,如图 32。 毕业设计说明书 (论文 ) 第 10 页 共 34 页 图 32 布雷结束的界面 屏幕参数的获得 为了 界面的美观考虑游戏 界面 要 可以按照不同手机 屏幕 要求布局 , 所以屏幕参数就是必须的 ,并且屏幕参数的获取对于后面的扫雷模块的编写也是有帮助的,这里主要获取屏幕参数用到了 GetX 和 GetY 两个函数,这两个函数可以直接获取到屏幕的长和宽,再用获取雷区的长和宽 Playfield pf = ().get_m_playfield()。 m_width = ()。 m_height = ()。 m_mines = ()。 从创建好的 雷区获得雷区的长宽,再调用系统的 函数 getWidth 和 getHeight 函数获得屏幕的长和宽,进行除运算从而计算出每一格 长和宽各是多少,这样按照换算出的长和宽 , 再进行画图就可以了。 不同设备都可以按照屏幕大小绘制画面了。 随机 数的 实现 随机函数基本都是 伪随机数,并不是真正意义上的随机函数,大部分利用了形同时间或者数学公式来作为产生随机数的方法。 而 Android 是基于 Java 的所以随机函数则是线性同余法。 线性同余法产生的伪随机数具有随机性好、周期长 ,易于计算机实现和速度快等特点而被广泛采用。 但用线性同余法产生的随机数因受到数学规律的影 响而具有周期性和相关性。 Java 语言通过 类产生一个随机数发生器。 它有两种形式的构造函毕业设计说明书 (论文 ) 第 11 页 共 34 页 数,分别是 Random()和 Random(long seed)。 随机数发生器即 Random 对象产生以后,可以通过对象调用不同的函数: nextInt()、 nextLong()、 nextFloat()、 nextDouble()等来获得不同类型的随机数。 Java 方法产生的是伪随机数。 因为 2 个 Random对象如使用相同的种子(比如都是100),并且以相同的顺序调用相同的函数,那么它们的返回值完全相 同。 运行后总是产生下面同样的随机数序列结果。 因此,在实际应用中我们要用 Random()来产生随机数发生器, Random()使用当前时间即 ()作为发生器的种子,由于每次调用时的时间不同,所以产生的随机数序列也不同。 可总结的一条经验是:调试时是用 Random(long seed),可以预测和控制程序结果,一旦调试完成,再换为 Random()。 图形界面的 绘制 图形界面的绘制,这个要 覆写系统的函数, 已达到所画的图是自己要用的图 的目的,将用到的图片改 好名称格式,复制到工程目录下的素材文件夹中,在雷区文件里面创建变量,将你的图片赋值给变量,就可以调用相应的图片绘制图形界面了,绘制界面 代码如下 : protected void onDraw(Canvas canvas){ display_width = getWidth()/m_width。 display_height = getHeight()/m_height。 for(int i = 0。 i m_height。 i++) for(int j = 0。 j m_width。 j++){ ( m_imgCell[i][j].m_picture, null, new RectF(j*display_width, i*display_height, (j+1)*display_width, (i+1)*display_height), null)。 }} 毕业设计说明书 (论文 ) 第 12 页 共 34 页 获取屏幕的长和宽,与雷区的长和宽进行除法运算换算出绘制图片的长和宽。 按照计算好的长和 宽一张一张的在界面上绘制好图片 ,将默认图片替换为设置的图片变量,按照一行一行的顺序将界面画完 ,这里用到 2 个 for 循环,需要注意的是不要把长和宽弄反, 也就是哪个是里层循环,哪个是外层循环,不然 程序会出 现越界的 错 误。 难度 选择模块的设计 主要的 框架的设计完成了,但是为了使 游戏的内容继续丰富起来,这个时候就 可以考虑给游戏加入不同的难度, 如图 34所示。 主要的思想就是增加雷区 长和宽和雷的个数,这个就需要修改最先在 生 成 雷区的 文件内把设置好的 常数值 改为可以修改的变量,然后 添加相应 函数,只要调用到相应的函数, 函数就会做赋值操作给产生雷区的几个变量从新赋值,再调用 restart_game 函数 将雷区重新布局,并且重新绘制图形界面 ,流程如图 33所示。 修改变量的 函数 的 代码: public void gaoji(){ m_width = 20。 m_height = 24。 m_mines = 99。 } 设置宽度为 20,高度为 24,雷的数量为 99 个。 将这些值赋值给最初生成雷区的函数,在将雷区函数运行一遍,这样新的雷区就生成了,在将界面用心的雷区参数生成,就完成了,游戏难度的改变。 注意的一点是,由于屏幕 很小,所以建议值的设置不要太大,以免产生错误。 毕业设计说明书 (论文 ) 第 13 页 共 34 页 选 择 等 级替 换 变 量 值重 新 布 置 雷 区绘 制 雷 区 图 33 改变难度 可以看出其实难度设置还是比较简单的,这里 只需要对函数里的几个变量进行重新赋值就可以解决问题接下来就是画面的重新的绘制 ().()。 ().()。 View view = new MyView()。 (view)。 先用 getinstance 获得新的雷区,再利用 setcontentview 函数重新绘制 view 上的界面,这里生成的 view 替换了旧的 view。 图 34 等级界面 首先是重新获得雷区,接下来再对来去重新布雷,产生新的 view,最后把新 界面绘制 到 Activity 上就可以了。 毕业设计说明书 (论文 ) 第 14 页 共 34 页 这边 有 一个难点就是函数的调用,因为 Android 是以 java 为基础的所以涉及到了函数能否被其他函数调用 ,因为 java 的类是有权限设置的,根 据设置的设置就能决定其他类能不能调用。 public 其他包 都可用, protected 子类 可用, packageprivate 和 private 当前包 可用。 自定义模块 的 设计 自定义游戏是用户交互功能之一,可以让用户自由设置喜欢的难度来进行游戏,从而提高用户体验,是游戏更加有亲和力。 这一环节的雷区的重置可以延续上面提到 ,这边唯一的不同是修改的变量值是要从用户那边收集的,而不是游戏中自己设置好了,写在程序内部 的数值。 基本的思想就是弹出一个界面让用户输入数据,系统接收其中的数据并赋值给生成雷区的变量。 数据的接 收 系统生成一个界面,界面上有几个输入框来接收用户输入的关于雷区的数据,包含长和宽,还有雷的个数。 ed_w = (EditText) findViewById()。 ed_h = (EditText) findViewById()。 ed_m = (EditText) findViewById()。 声明 3 个变量,将界面上的输入框赋值给变量,方便调用。 ((width))。 ((height))。 ((mines))。 将输入框的 输入的字符串变量 强制转换成雷区变量类型相同的变量 保存下来。 具体界面如图 35 所示。 首先是页面的按钮设置,设置按钮的名字方便系统能够找到相应的输入文本框, 然后是给文本框输入的 字符串变量 强制转换保存,这样在文本框输入了内容就被保存成了雷区 int 变量。 这个就是数据的接收了,主要就是给变 量 强制 转换 和文本框的重新命名,因为文本框输入的变量类型是和我们需要的类型不同的。 毕业设计说明书 (论文 ) 第 15 页 共 34 页 图 35 自定义游戏界面 数据的传输 雷区的长和宽还有雷的个数接收到了之后要赋值给生成雷区的函数,这里就是数据的传输了。 接收 到变量要进行使用这个时候只要直接去调用接收 到的 数据就好了,然后将变量的值在传递给布雷函数,新的雷区就可以生成了。 if (() == ){ try{ width = new Integer(().toString())。 height = new Integer(().toString())。 mines = new Integer(().toString())。 }catch(Exception e){} 将从屏幕接收到的值赋值给前面设置的雷区的几个变量,已达到数据的传输和接收。 (width, height,mines)。 ().()。 View view = new MyView()。 (view)。 毕业设计说明书 (论文 ) 第 16 页 共 34 页 用新的变量值调用生成雷区的函数 ,为了传输数据的方便直接重新编写了一个生成雷区的函数 ,生成新的雷区,根据雷区绘制界面,最后替换旧的 view。 输 入 数 值替 换 变 量 值重 新 布 置 雷 区绘 制 雷 区 图 36 自定义游戏 用传输过来的数值产生新的雷区,以达到产生自定义游戏 ,重复上面的操作,将雷区刷新。 具体流程如图 36 所示。 给函数增加参数是解决数据传输的一种便捷的方法,Android 系统还有其他的方法传输数据。 1. 实体类 (1) Intent, 他就像一个快递员,而且是个无所不能的快递员,什么都能送,只要你能把信息加到他上面去。 (2) Context, 他就是获取当前的环境状态, 比如说想知道现在用户使用的什么语言,处于什么状态,航班、静音。 用户有没有接打电话等等,就像获取系统时间一样。 (3) BroadcastReceiver, 是专门用来接收广播的类。 2. 方法类 (1) PendingIntent, 这个方法就是直接传递 Intent。 (2) ,还是广播。 扫雷 模块的设计 扫雷操作主要涉及到一个递归调用函数的编写和屏幕响应,如何编写一个精简的递归函数才是这一章的关键。 递归算法是把问题转化为规模缩小了的同类问题的子问题。 然后递归调用函数 (或毕业设计说明书 (论文 ) 第 17 页 共 34 页 过程 )来表示问题的解。 递归算法是 在函数或子过程的内部,直接或者间接地调用自己的算法。 递归调用的原理 递归算法是一种直接或者间接地调用自身的算法。 在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。 : (1) 递。基于android系统的扫雷游戏程序的开发
相关推荐
工作的,能显示工作运行主流程 error exit fatal show it 2:更进一显示信息 3:完全跟踪。 Makefile 文件 Makefile 文件为整个工程的管理文件 ,作用是连接各个头文件、 c 文件,最终编译成可执行文件。 由于使用 qt 开发环境,程序可以在 x86 平台上与 arm平台上分别运行。 只需要修改 Makefile 文件中的编译期即可。 地图文件( 文件)
硬件主要由 GPRS 无线通讯模块、 GPS 全球卫星定位系统模块、 ARM 控制器、按键组成。 (2) 软 件模块:软件模块包括 主程序; GPS 模块,实现定位; GPRS 模块,实现通信;主模块,实现串口初始化等。 可行性分析 经济可行性 实验中选用的 ARM9 芯片为三星公司的 S3C2410X 芯片,这是三星公司推出的一款基于ARM920T 内核的 RISC 处理器
于 PC 上调试区别很大,必须及时测试。 才能及时发现错误。 2.由于经常使用 C 高级语言,随时定义变量,从而导致了很多错误,带来了不少麻烦。 3.在嵌入式平台上开发,需经常考虑到嵌入式平台的性能。 尽量少用 for循环等复杂度较高的结构。 4. 开发嵌入式软件有基本固定的流程,并需要软硬件平台的相互配合。 设计过程中出现的问题有可能是硬件设置的不合理引起的,也有可能是软件代码设计的不合理
VA_HOME%\lib\。 %JAVA_HOME%\lib\。 %JAVA_HOME%\bin。 Path:追加 写入 %JAVA_HOME%\bin。 B. 检查 JDK 是否 安装成功: ( cmd 下运行 java version) 图 验证 JDK是否 安装成功 2) 下载 Eclipse 3) Android SDK 安装 A. 在 Android Developer下载
出行的应用程序 也 将不再是一个难题。 本课题在 未来 的 制作 过程中 好好处理 界面的设计,保证 操作 简单 和使用 方便。 并且还要熟练的掌握百度地图 SDK, 而百度 SDK 中包含着大量洛阳理工学院毕业设计(论文) 5 的类,要想详细的了解这些类并做到熟练的利用这将会是一个难题。 我们也必须在将来的开发过程中认真阅读百度地图开发文档,对其中不理解的地方做上标记,向别人虚心请教。 6 第
1 2 农 有 播 細 到 单 阏 本 的 单 阚 3 、丨 ...,丨 • . ! 卜。 柄的 o r a d t 數 1 阼中 SW 到的单 W 图 其中各个部分的详细功能描述如下表所示 农 用例名称 添加到单词本 参与者 用户 目标 将资洵到的肀词添加到艰词本 前 S 条件 单词已经成功裔询到 鉴本事件流 点击添加按钮添加 农 显小添加到单本的中词 此软件主要分为两部分来实现 ,