安卓应用-实现简易打地鼠游戏_第1页
安卓应用-实现简易打地鼠游戏_第2页
安卓应用-实现简易打地鼠游戏_第3页
安卓应用-实现简易打地鼠游戏_第4页
安卓应用-实现简易打地鼠游戏_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实 习 笔 记学 院 计算机科学与工程学院 班 级 专 业 计算机科学与技术 姓 名 于志 学 号 指导教师 唐培丽 实习时间 2016.06.202016.06.24 实习地点 学院综合实验中心 一内容提要本程序实现了一个安卓APP的简易打地鼠游戏,地鼠会在屏幕上随机显示,触摸地鼠后,该地鼠将不显示,同时在屏幕上通过消息提示框显示达到了几只地鼠,地鼠出现的时间也是随机产生的。运行环境采用eclipse,java JDK,Android SDK,ATD插件来完成对本次实验的运行。目录题目-4时间-4功能设计-4数据结构的设计-5算法的设计-7关键代码-8参考资料-13教学实习总结报告-13 一题目本程序实现了一个安卓APP的简易打地鼠游戏。二时间2016.06.202016.06.24三功能设计本实验应用了线程的相关知识来实现打地鼠的相关功能,首先从网络上下载相关图片来实现页面的布局,然后绑定主Activity,声明相关变量,创建线程,再利用java所提供的Random()方法获取随机位置与随机时间,传递此消息,再利用消息处理类handler中的handleMessage()方法接收消息,并在屏幕上显示。再为地鼠图片设置监视事件监听器来使其打到地鼠有反应并用消息提示框显示打中地鼠个数。1.设置地鼠出现位置和出现时间的相关功能点:创建并开启一个新线程,在重写的run()方法中,创建一个记录地鼠位置的索引值的变量,并实现一个循环,在该循环中,首先生成一个随机数,来表示地鼠出现的位置,并获取一个Message对象,然后将生成的随机数作为地鼠的位置的索引值保存到Message对象中,再为该Message设置一个消息标识并发送消息,最后让线程休眠一段时间(该时间随机产生作为地鼠出现的时间)。2.设置地鼠出现的相关功能点:创建一个Handler对象,在重写的handleMessage()方法中,首先定义一个记录地鼠位置索引值的变量,然后使用if语句根据消息标识判断是否为指定的消息,如果是,则获取消息中保存的地鼠位置索引值,并设置地鼠在指定位置显示。3.来统计打中地鼠个数的相关功能点:获取布局管理器中添加的ImageView组件,并为该组件添加触摸监听器,在重写的onTouch()方法中,首先设置地鼠不显示,然后成功打中地鼠后,将i的值加1,再通过消息提示框提示打中了几个地鼠。四数据结构的设计1.创建并开启一个新线程,在重写的run()方法中,利用了一个while循环,当线程没有被终止时执行循环,首先定义index并初始化赋值为0,然后利用Random()方法产生0数组长度之间的随机数,并赋值给index,然后把这个消息发送给handler对象,利用handler中的handlemessage()方法接受消息,最后用trycatch()语句捕获异常,并把线程的休眠时间利用Random()方法设置为随机时间,用于地鼠随机出现的时间。代码如下:Thread t = new Thread(new Runnable() Overridepublic void run() int index = 0;while (!Thread.currentThread().isInterrupted() index = new Random().nextInt(position.length-1)+0;Message m = handler.obtainMessage();m.what = 0x101;m.arg1 = index; handler.sendMessage(m); try Thread.sleep(new Random().nextInt(500) + 500); catch (InterruptedException e) e.printStackTrace(); );t.start();2.获取布局管理器中添加的ImageView组件,并为该组件添加触摸监听器,在重写的onTouch()方法中,首先设置地鼠不显示,然后利用i+语句实现对打中的地鼠数加一,并显示消息提示框,提示打中多少只地鼠。代码如下: mouse = (ImageView) findViewById(R.id.imageView1); / 获取ImageView对象mouse.setOnTouchListener(new OnTouchListener() Overridepublic boolean onTouch(View v, MotionEvent event) v.setVisibility(View.GONE); / 设置地鼠不显示i+;Toast.makeText(MainActivity.this, 打到 + i + 只地鼠!,Toast.LENGTH_SHORT).show(); / 显示消息提示框return false;);五算法的设计(一).首先在MainActivity中,声明程序中所需要的成员变量,具体算法如下:1定义private变量I,mouse,handler;2定义存储地鼠位置的二维数组position并为其初始化;(二)创建并开启一个新线程,让时间随机产生,用于地鼠随机出现,具体算法如下:1 创建一个新线程,重写run()方法,定义index为0;2 写while()循环,条件是当线程没终止时执行循环;3 获取随机位置坐标并传递这个坐标;4 设置时间是随机的,并用trycatch语句捕获异常;(三).创建一个handler()对象,设置地鼠在指定位置显示,具体算法如下:1创建handleMessage()方法接收消息;2当消息标示与上述传递的消息标识一致时接收消息;3获取消息的索引值并设置地鼠出现的随机位置,让其显示。(四).首先重写onCreat(),显示消息提示框提示打中地鼠的个数。算法如下:1 获取布局中的图像视图组件;2 为图像视图添加事件监听器,设置点到地鼠,地鼠消失;3 当打中地鼠时i加1,显示消息提示框,提示打中地鼠的个数。六关键代码1.页面布局所用代码:2.实现打地鼠主要功能模块代码:public class MainActivity extends Activity private int i = 0; / 记录其打到了几只地鼠private ImageView mouse; / 声明一个ImageView对象private Handler handler; / 声明一个Handler对象public int position = new int 603,532,535,624, 231, 325 , 424, 349 , 521, 256 , 543, 296 , 719, 245 , 832, 292 , 772, 358 ; / 创建一个表示地鼠位置的数组Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.main);mouse = (ImageView) findViewById(R.id.imageView1); / 获取ImageView对象mouse.setOnTouchListener(new OnTouchListener() Overridepublic boolean onTouch(View v, MotionEvent event) v.setVisibility(View.GONE); / 设置地鼠不显示i+;Toast.makeText(MainActivity.this, 打到 + i + 只地鼠!,Toast.LENGTH_SHORT).show(); / 显示消息提示框return false;);handler = new Handler() Overridepublic void handleMessage(Message msg) int index = 0;if (msg.what = 0x101) index = msg.arg1; / 获取位置索引值mouse.setX(positionindex0); / 设置X轴位置mouse.setY(positionindex1); / 设置Y轴位置Log.i(222:, positionindex0+ +positionindex1);mouse.setVisibility(View.VISIBLE); / 设置地鼠显示super.handleMessage(msg);Thread t = new Thread(new Runnable() Overridepublic void run() int index = 0; / 创建一个记录地鼠位置的索引值while (!Thread.currentThread().isInterrupted() index = new Random().nextInt(position.length-1)+0; / 产生一个随机数Log.i(:, index+);Message m = handler.obtainMessage(); / 获取一个Messagem.what = 0x101; / 设置消息标识m.arg1 = index; / 保存地鼠标位置的索引值handler.sendMessage(m); / 发送消息try Thread.sleep(new Random().nextInt(500) + 500); / 休眠一段时间 catch (InterruptedException e) e.printStackTrace(););t.start(); / 开启线程相关截图如下:七参考资料明日科技编著.Android从入门到精通(第一版).清华大学出版社,2012年9月明日科技编著. JAVA从入门到精通(第一版).清华大学出版社,2012年9月CSDN论坛:/八教学实习总结报告通过本次的实习,让我学会了如何利用安卓线程的知识来控制相关耗时操作,让我更加了解了如何创建新线程,开启线程,线程的休眠,线程的中断,利用handler类和Message类的相关方法来控制对线程的操作,进而控制相关UI界面的操作。在编写该程序的过程中,出现了许多小的逻辑错误,例如地鼠出现的时间过长,地鼠不显示等问题,都是由于自己对知识的理解不到位和自己的大意疏忽导致的,使我认识到自己编程技术还有些欠缺,对知识的理解还不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论