基于Android平台的数独游戏(6)

2019-04-22 13:45

湖南科技大学本科生毕业设计(论文)

图4.4 游戏主界面

其中isNewGame变量用于控制是否显示继续游戏按钮,因为当游戏第一次运行时,显示继续游戏按钮不符合逻辑,设置一个boolean量isNewGame用于控制主界面显示的XML,关键代码如下: if(isNewGame){ } else{ } 当开始新游戏时,置isNewGame变量为false,当游戏完成时,置isNewGame变量为true。

setContentView(R.layout.main); setContentView(R.layout.startmain); 4.4游戏关卡选择模块

(1)游戏难度选择

游戏关卡选择模块主要包括游戏难度等级选择,游戏关卡的选择等。游戏难度等级选择如图4.5所示,游戏关卡选择界面如图4.6所示。

-17-

湖南科技大学本科生毕业设计(论文)

图4.5游戏难度选择界面 图4.6游戏关卡选择界面

游戏难度选择通过实例化一个AlertDialog来实现,传入定义好的难度数组XML,监听选择的项,将索引值传递给关卡选择类LevelActivity.java。XML文件及关键代码如下:

@string/medium_label @string/hard_label

private void openNewGameDialog(Context context) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setItems(R.array.difficulty, -18-

湖南科技大学本科生毕业设计(论文)

new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialoginterface, int i) { ... //打开关卡选择界面 ... }); } builder.show(); 游戏关卡的实现,主要使用Gallery视图。

Gallery介绍:Gallery(俗称画廊视图)是一个锁定中心条目并且拥有水平滚动列表

(2)游戏关卡实现

的视图,一般用来浏览图片,并且可以响应事件显示信息。Gallery还可以和ImageSwitcher组件结合使用来实现一个通过缩略图来浏览图片的效果。

实现步骤:

1.系统定义的Gallery滑动速度很快,重新定义一个继承自Gallery的类CustomGallery,重写onFling()方法,将返回值改为false。

2.以重写过的类CustomGallery作为布局元素,定义布局文件level.xml,关键代码如下:

paramsbtnParamsbtnParamshLayoutbtnParamsbgLayoutGallery以每行三个BtnParams,每页五个params为单位布局

-19-

湖南科技大学本科生毕业设计(论文)

图4.7关卡选择界面布局层次结构图

4.定义完游戏关卡选择模块界面布局后,我们给这个界面定义一个onTouch()方法,监听两类动作完成关卡选择和关卡滑动的命令。图4.8为关卡选择时的效果,图4.9为关卡选择界面滑动时的效果。关键代码如下:

private OnTouchListener mTouch = new OnTouchListener(){ }}; float fX = 0; float fY = 0; public boolean onTouch(View view, MotionEvent event) { int iTag = (Integer)view.getTag(); if( event.getAction() == MotionEvent.ACTION_DOWN ){ //如果触摸动作是按下 view.setBackgroundResource(R.drawable.passing); //设置按下的图片 fX = event.getX(); //记录点击位置的坐标 fY = event.getY(); bClick = true; //是否点击布尔值设为true return true; if( Math.abs(fX-event.getX()) < 2*density } bClick = true; //如果触摸动作的坐标差小于两个单位,布尔值不变 } else bClick = false; return true; //否则判定为移动动作 }else if( event.getAction() == MotionEvent.ACTION_MOVE ){ //如果触摸动作是移动 || Math.abs(fY-event.getY()) < 2*density) { else if( event.getAction() == MotionEvent.ACTION_UP ){ view.setBackgroundResource(R.drawable.passed); if( bClick ){ ……. //如果判定为按下动作,则启动GameActivity,同时将关卡值传过去 }return true; }return false; -20-

湖南科技大学本科生毕业设计(论文)

图4.8 关卡选择时的效果图 图4.9 关卡选择界面滑动时的效果图

5.定义游戏关卡选择类LevelActivity.java,设定level.xml为布局文件,定义一个gallery,绑定GalleryAdapter监听器,获取Sudoku.java主界面传过来的关卡数TOTAL_LEVEL,关键代码如下: //获得当前难度等级的总关卡数量 TOTAL_LEVEL = getIntent().getIntExtra(KEY_TOTAL_LEVEL, 0); //定义LevelItem结构的线性表,这里抽象为Gallery显示的所有页面 ArrayList> pages = new ArrayList>(); boolean breakFlag = false;//是否超出关卡数的布尔变量 for( int i=0; i items = new ArrayList(); for( int j=0; j TOTAL_LEVEL){ breakFlag = true; break; //检测是否超出总关卡数 //定义一页LevelItem结构的线性表 -21-


基于Android平台的数独游戏(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中级经济法口诀及注解

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: