1、 实验目的
通过“数独游戏”Android应用程序的开发,掌握一个实际应用项目的开发流程和知识。
2、 软件开发的步骤
(一)设计用户界面
1、创建启动界面
(1) 使用Eclipse插件创建一个Android应用程序。
(2) 修改res/layout/main.xml文件,使用不同的文本和几个按钮替换原标签。
(3) 在res/values/strings.xml中定义要用到的字符串。
(4) 美化启动界面,将标题文本字体放大且居中,让按钮变小并且使用不同的背景色,在res/values/colors.xml中定义要用到的颜色。
2、模式切换
为使横向模式下人能正常显示,可为横向模式创建一个不同的布局。创建名为 res/layout-land/main.xml文件,该文件采用TableLayout布局方式创建两列按钮。
3、实现About对话框
(1) 为About按钮活动创建一个布局文件res/layout/about.xml。我们只需要布局一个版本即可,以为该布局在纵向和横向模式下都可以正常显示。
(2) 在About.java中定义About活动,重写onCreate()方法和并调用setContentView()方法。
(3) 将About对话框的标题及对话框中包含的文本内容添加到res/values/strings.xml中。
(4) 将该活动与Sudoku类中的About按钮关联起来。
(5) 双击AndroidManifest.xml文件,在第一个活动的结束标签之后添加一个新的
标签。声明这个活动。
4、应用主题
可以在res/values/styles.xml中定义自定义主题,但在此只需利用一个预定义主题,在Android.Manifest.xml中修改About的定义,使其具有主题特性。
5、添加菜单
实现在按下Mune按钮时弹出菜单。
(1) 在res/values/strings.xml中定义要用到的字符串。
(2) 在res/menu/menu.xml中定义菜单。
(3) 将上面定义的菜单加到Sudoku类中,并导入以下包:
import android.view.Menu;
import android.view.MenuInflater;
import android.MenuItem;
(4) 重写Sudoku类中的onCreateOptionsMenu()方法。
6、添加设置
在Sudoku程序中添加两个设置,一个用于播放背景音乐,一个用于显示提示信息。这两个首选项的键值都是以字符串常量的形式存入Android的首选项数据库中。
7、开始新游戏
(1) 在res/values/strings.xml中。
(2) 在res/values/arrays.xml中创建难度选择列表 。
(3) 在Sudoku类中导入以下包:
Import android.app.AlterDialog;
Import android.content.DialogInterface;
Import android.util.Log;
(4) 在onClick()方法的switch语句添加处理New Game按钮单击事件代码。
8、继续游戏
(1)
(2)
(3) 利用getPuzzle()方法,读取已保存的数据并继续前一个游戏。
9、退出游戏
实际上该游戏并不需要一个Exit按钮,用户完全可以通过Back键或Home键来完成其他工作。若想添加该按钮,则只需在onClick()方法的switch部分添加如下代码: case R.id.exit_button: finish();.break;
(二)绘制2D图形
1、在Sudoku游戏中添加图形
(1)开始游戏
(2)定义Game类
(3)定义PuzzleView类
(4)绘制游戏盘面
(5)绘制输入
2、处理输入
(1) 实现一个小光标,以显示玩家当前选定的单元格。
(2) 在onKeyDown()方法中增加对应0到9的case分支,以处理键盘输入数字。
(3) 根据每个单元格可填数字的数目为其绘制不同颜色的背景。
3、创建软键盘
(1) 在res/layout/keypad.xml中创建软键盘用户界面布局。
(2) 定义KeyPad类 4、实现游戏逻辑 在Game.java中实现游戏逻辑。
(三)多媒体多媒体设计设计 为Sudoku游戏配上音乐
(1)为主屏幕配音 重写Sudoku类中的onResume()和onPause()两个方法即可。
(2)游戏过程中配乐 重写Game类中的onResume()和onPause()两个方法即可。
(3)定义Music类 Music类将管理用来播放当前音乐类的MediaPlayer类。类中Play()方法先调用stop()方法,停止一切正在播放的音乐。然后调用MediaPlayer.create()方法创建一个新的MediaPlayer实例,并将context及ID资源传给该实例。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉