logo资料库

移动互联网-课程设计报告(连珠五子棋系统).doc

第1页 / 共24页
第2页 / 共24页
第3页 / 共24页
第4页 / 共24页
第5页 / 共24页
第6页 / 共24页
第7页 / 共24页
第8页 / 共24页
资料共24页,剩余部分请下载后查看
目 录 (示例)
一、设计题目
二、设计目的
三、设计原理及方案
1使用的软件工具和环境
2需求分析与概要设计
3数据库设计
4详细设计和关键问题
四、实现效果
五、设计体会
参 考 文 献
移动互联网开发 课程设计报告 学生姓名: 袁壮苗 学 号: 031740315 专 业: 计算机科学与技术 班 级: 0317403 设计题目:连珠五子棋游戏系统 学年学期: 2019 年 秋 季学期 指导教师: 张华
目 录 (示例) 一、 设计题目................................................................................................................................... 1 二、 设计目的................................................................................................................................... 1 三、 设计原理及方案....................................................................................................................... 1 1 使用的软件工具和环境........................................................................................................... 1 2 需求分析与概要设计............................................................................................................... 1 3 数据库设计(若有)............................................................................................................... 3 4 详细设计和关键问题............................................................................................................... 3 四、 实现效果................................................................................................................................. 17 五、 设计体会................................................................................................................................. 20 参 考 文 献............................................................................................................................................................... 22
一、 设计题目 连珠五子棋游戏系统 二、 设计目的 用面向对象语言 JAVA 和移动开发平台 Android Studio 及 Android 语言开发一款基于安卓环境的游戏, 在开发过程中熟练使用 Java 和安卓语法,熟练调用 API 函数,熟练使用 Android Studio 开发环境,以此加深 对移动互联网这门课程的学习和实践。通过本课程设计,巩固软件工程的基本概念、原理,熟悉安卓应用开发环境和技 术,学会完成一个移动终端应用软件的分析、设计、编码测试和安装,将理论与实际相结合,强化学生的项目开发和团队意识, 提高分析能力和创新能力 三、 设计原理及方案 1 使用的软件工具和环境 安卓应用程序开发环境如下: 1 JDK 5 or JDK 6 (JRE alone is not sufficient) 2 Eclipse 3.3 (Europa), 3.4 (Ganymede) 3 Android SDK 4 ④ADT 0.8.0 5 ⑤Eclipse 安装 ADT 插件 2 需求分析与概要设计 五子棋作为一款休闲益智游戏,它最大的优点在于游戏规则家喻户晓,简单,上手快,趣 味性强,所以受广大用户青睐,在各大提供棋牌类游戏的平台都可以看到玩五子棋游戏的人很 多。休闲益智游戏中等级并不是最重要的追求目标,通过对游戏规则的熟悉,能很快上手掌握 其操作方式,也更适合男女老幼全家共同娱乐,花费时间简短,速战速决,在短时间内感受到 游戏的乐趣,完全享受气氛轻松活跃的游戏过程。此种娱乐方式既不耽误时间也能轻松调剂娱 乐,充分适合现代人们的娱乐需求。更主要的是开发了人的智力,成为年轻一代最流行的游戏, 据统计,五子棋游戏的玩家中,学生占了接近三分之一的比例,对学生的智力健康成长起一定 作用,正所谓休闲娱乐两不误。 需求分析: 1. 棋盘和棋子绘制。 2. 按照五子棋的规则制定游戏胜负规则。 3. 触摸响应,在对战中需要通过手指触摸点击下棋进行游戏的基本操作。 1
4. 游戏模式为双人对战,两人交替落子,双方孰先孰后随机决定。 5. 棋子的形式和作用:棋子分为黑白两种棋子, 双方各持一种棋子, 通过黑先白后的方式来 进行对局。 6. 通过棋子完成五连珠结束游戏。 五子棋的规则如下: (1)棋盘:采用 10×10 的棋盘。 (2)下法玩家一执黑先手,玩家二执白后手,轮流在棋盘上选择一个无子的交叉点落子。 无子的交叉点又被称为空点。 (3)输赢判断:黑、白双方有一方的 5 颗棋子在横、竖或斜方向上连接成一线即为该方赢。 (4)对于五子棋可分为禁手和无禁手两类,本游戏采用三三禁手。可用 15×15 的二维数 表示棋盘内各点状态 (空、白子、黑子) ; 五子棋游戏规则简单,在每次玩家或电脑落棋 后,都要去判断是否游戏是否分出胜负,如没有,另一方才能继续下棋。一局游戏结束后,可 以选择再来一盘,这时将棋盘数据清空,又开始新的棋局。 游戏过程示意图如图 1 所示 2
图 1 游戏过程示意图 3 数据库设计 没使用数据库 4 详细设计和关键问题 (分功能模块描述设计细节,例如详细功能图、类图和关键流程图等。遇到的关键 Android 3
问题是如何解决的) 遇到的问题: 1. WebView 中图片等资源加载失败 有些情况下 WebView 中加载一些资源会失败,其中一个原因就是在 Android 5.0 开始 WebView 默认不允许加载 http 与 https 混合页面,即不支持同时加载 Https 和 Http 请求,比 如 https 页面加载 http 图片或者 http 页面加载 https 图片,那图片就显示不出来;这时可以 通过如下方法进行设置 该方法设置 WebView 的加载模式,参数有三种选择: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); } MIXED_CONTENT_NEVER_ALLOW:Webview 不允许一个安全的站点(https)去加载非安全的 站点内容(http),比如 https 网页内容中的图片是 http 链接 MIXED_CONTENT_ALWAYS_ALLOW:WebView 是可以在一个安全的站点(Https)里加载非安全 的站点内容(Http), 这是 WebView 最不安全的操作模式,但是一般是一了百了的写法 MIXED_CONTENT_COMPATIBILITY_MODE:当涉及到混合内容时,WebView 会尝试去兼容最新 Web 浏览器的风格。一些不安全的内容(Http)能被加载到一个安全的站点上(Https),而其 他类型的内容将会被阻塞。这些内容的类型是被允许加载还是被阻塞,可能会随着版本的不同 而改变,官网并没有给出明确的定义。这种模式主要用于在 App 里面不能控制内容的渲染,但 是又希望在一个安全的环境下运行 2. PhotoView+ViewPager 发生 java.lang.IllegalArgumentException: pointerIndex out of range 异常 描述: 当 PhotoView 和 ViewPager 组合时 ,用双指进行放大时 是没有问题的,但是用 双指进行缩小的时候,程序就会崩掉 原因: 多次触发触摸屏事件,导致对同一个事件处理的消息过多,当第一个消息已处理完 事件并销毁事件时, 由于该事件已销毁但还没来得及通知销毁第二个同样的消息,当主线程执行第二个消息时, 由于获取不了该事件, 所以抛出异常。简单理解就是 2 个控件对同一个 MotionEvent 出现了冲突. 解决:自定义一个类去继承 ViewPager ,然后重写 Viewpager 的 onInterceptTouchEvent() 的方法,捕捉该异常。 3. viewpageradapter 调用 notifyDataSetChanged()时不刷新页面. 原因: 在 getItemPosition()方法的源码中如果 item 的位置如果没有发生变化,则返回 POSITION_UNCHANGED。 如果返回了 POSITION_NONE,表示该位置的 item 已经不存在了。默认的实现是假设 item 的位置永远不会发生变化, 而返回 POSITION_UNCHANGED。 4
解决: 修改适配器的写法,覆盖 getItemPosition()方法,当调用 notifyDataS etChanged 时, 让 getItemPosition 方法人为的返回 POSITION_NONE,从而达到强迫 viewpager 重绘所有 item 的目的。 4. didn’t find class on path dexpathlist 保证工程和引用库文件用同一个支持包,删除 build 目录,clean 工程 eq:第一个 activity 引用 android.app.activity 包,第二个 activity 引用 v7 包的 AppcompantActivity,这样可能就会报找不到第一个 activity 5. AndroidStudio 打包时报错 The same input jar is specified twice 原因 是 build.gradle 文件配置了 dependencies { compile fileTree(include: '.jar’, dir: ‘libs’) } 这里面已经添加过 jar 包,但是又在混淆文件 proguard.cfg 里面又加了句-libraryjars libs/**.jar, 将-libraryjars libs/***.jar 前面用#号注释或者直接删掉即可。 注意:sdk 通过 proguard 混淆代码时默认已经将 lib 目录中的 jar 都已经添加到打包 脚本中,所以不需要再次手动添加。 6.Activity 当中的 EditText 的软键盘弹出问题 这个在 mainfest.xml 中 activity 下面有一个属性为 windowSoftInputMode,它共有 10 个 值可以配置,每个配置都对页面输入法弹出框影响不同 stateUnspecified :即未指定状态,当没有设置 android:windowSoftInputMode 属性的时 候,默认是这样的交互方式,系统会依据界面採取对应的软键盘的显示模式。比如当界面上 仅仅有文本和 button 的时候,软键盘就不会自己主动弹出。由于没有输入的必要 stateUnchanged:即状态不改变。就是当前界面的软键盘状态,取决于上一个界面的软键盘 状态。比如当前界面键盘是隐藏的,那么跳转之后的界面,软键盘也是隐藏的;当前界面是 显示的,那么跳转之后的界面,软键盘也是显示状态 stateHidden:假设我们设置了这个属性,那么键盘状态一定是隐藏的,无论上个界面什么 状态。也无论当前界面有没有输入的需求,反正就是不显示。因此,我们能够设置这个属性, 来控制软键盘不自己主动的弹出 stateAlwaysHidden:这个属性也能够让软键盘隐藏。 stateVisible:能够将软键盘自动弹出来,即使在界面上没有输入框的情况下也能够强制弹 出来 stateAlwaysVisible:也是可以主动将软键盘弹出来,可是与 stateVisible 属性有小小的 5
不同之处。举个样例,当我们给 A 界面设置为 stateVisible 属性,假设当前的界面键盘是 显示的,当我们跳转到下个界面再回到当前界面的时候,键盘这个时候是隐藏的;可是假设 我们设置为 stateAlwaysVisible,我们跳转到下个界面再次回来的时候。软键盘是会显示 出来的 adjustUnspecified:设置软键盘与软件的显示内容之间的显示关系。当没有设置这个值的 时候,这个选项也是默认的设置模式,第一:页面没有滚动控件的时候,当输入框会被弹出 软键盘挡住的情况下,将输入框上移,以保证输入框处于用户视野范围,其它视图不变,如 果不会被挡住,页面视图位置不会变动;第二:页面有滚动控件的时候,将页面整体视图上 移,保证处于软键盘上方 adjustResize:同上,但是有两点不同,第一:这个属性是将 Activity 整个界面往上移动, 保证处于软键盘的上方,全部 View 可见;第二:会自动将软键盘弹出 adjustPan:与 adjustUnspecified 属性类似,但是有一点不同,就是页面有滚动控件的时 候,只会保证输入控件不被软键盘挡住,其它视图不保证 adjustNothing:这个属性没有实际意义,软键盘弹出的时候,页面所有 View 不会变动 代码设计: 1. 重写创造按钮的方法: package com.imooc.wuziqi; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; public class MainActivity extends AppCompatActivity { private WuziqiPanel wuziqiPanel;//////////创建对象 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); wuziqiPanel = (WuziqiPanel)findViewById(R.id.WuziqiPanel);////调用文件 } ///////////重写创造按钮的方法/////////// 6
分享到:
收藏