ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:1.77MB ,
资源ID:8702885      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8702885.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(安卓课程设计台球游戏.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

安卓课程设计台球游戏.docx

1、安卓课程设计台球游戏 计算机学院课程设计专 业: 计算机应用技术 课程名称: 3G开发基础 课题名称: 台球游戏系统 教 师: 学 号: 姓 名: 2013 年 9月 20 日 2013 年 12 月 25 日前言Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。早期由原名为“Android”的公司开发,谷歌在2005年收购“Android.Inc”后,继续进行对Android系统开发运营,它采用了软件堆层的架构,主要分为三部分。底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。 2011年

2、初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。现在,Android系统不但应用于智能手机,也在平板电脑市场急速扩张。综合本学期的学习,开发一款基于android环境的台球游戏,熟练掌握android应用开发。一课程设计目的1.1关于java1、熟悉Java开发环境,熟悉用Java完成一个应用程序的设计过程,掌握有关编 辑、调试和整合程序的方法和技巧。2、通过此设计,了解Java语言的特点;熟悉Java程序的编写;体会Java语言在问题求解中的特点。3、总结学习Java语言的心得和体会,并对Java课程设置提出自己的意见和建议。

3、1.2关于android熟悉android开发环境,熟悉用java语言实现一个安卓程序的设计过程,掌握有关的设计技巧1、熟悉android开发环境,熟悉用java语言实现一个安卓程序的设计过程,掌握有关的设计技巧2、通过此课程设计,了解android系统的特点,掌握android相关的知识点。3、总结学习android开发环境,熟悉用java语言实现一个安卓程序的设计过程,掌握有关的设计技巧总结学习android的心得和体会,并且android课程提出自己的意见和建议,从中得到自己的学习心得和体会。二设计任务及要求根据android课程学习,将手机台球游戏设计的总体设计框架以及详细的设计和实现

4、过程通老师讲解和自己的理解将其全部以课程设计的方式书写出来。三总体设计框架 四详细设计和实现过程4.1配置开发环境1、 安装JDK首先将下载的jdk-6u24-windows-i586安装到C:下 2、配置环境变量选择计算机右键属性高级设置环境变量CLASSPATH : .;%JAVA_HOME%lib;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;JAVA_HOME : C:Program Files(x86)Javajdk1.6.0_24Path : %JAVA_HOME%bin;将以上三个配置到环境变量中3、安装eclipse双击eclipse

5、快捷方式图标,它会在你选择的路径下生成一个workspace文件夹,以后的项目都在这里面。4、安装ADT 离线安装ADT: 点击eclipse上的help进入如图所示,点击add将ADT导入若安装成功则会出现如图所示的navigate下面手机图标。5、安装SDK点击window进入preference,然后点击android,在SDK Location中导入SDK,安装成功之后如图所示。4.2功能定义 台球游戏是根据人们日常中打台球的模式进行模拟式的通过点击按钮来调准角度并出击球杆。选择【开始游戏】之后可选择【倒计时模式】和【练习模式】进行玩台球游戏,另外还可以点击【排行榜】查看分数情况,倒计

6、时模式是在一定的时间进行玩游戏,练习模式是对于初次玩台球游戏的玩家或者不熟练的玩家。4.3类的设计4.4类的功能 各个类功能清单文件名主要功能备注Constant.java定义台球所需工具GameActivity.java主体类Main方法WhatMessage.javaSurface所需的常量类ImageButton.java球杆变形按钮ISwitchButton.javaSwitchButton.java角度调整按钮AboutView,java关于界面ChoiceView.java选项菜单界面HelpView.java帮助界面SoundControl.java声音控制界面Ball.java

7、台球BallGoThread.java桌球运动Cue.java球杆CueAnimateThread.java倒计时间GameView.java游戏界面GameViewDrawThread.java桌球运动画面KeyThread.java监听触控按键线程类StrengthBar.java力度条Table.java球台Timer.java计时器TimeRunningThread.java倒计时线程类VirtualButton.java虚拟按钮类FailView.java游戏失败界面HighScoreView.java分数记录界面MainMenuView.java主界面WellcomeView.ja

8、va欢迎界面WinView.java游戏胜利界面CollisionUtil.java进行碰撞检测和物理计算工具类ColorUtil.java颜色工具类DataUtil.java系统当前日期工具类PicLoadUtil.java图片工具类ScreenScaleResult.java横竖屏幕工具类ScreenScaleUtil.java计算缩放情况工具类 4.5类的特点4.5.1抽象类WhatMessage的描述public class WhatMessage public static final int GOTO_WELLCOME_VIEW=0; /欢迎界面 public static fin

9、al int GOTO_MAIN_MENU_VIEW=1 ; /主菜单界面 public static final int GOTO_GAME_VIEW=2; /游戏界面 public static final int GOTO_SOUND_CONTORL_VIEW=3; /声音控制界面 public static final int GOTO_WIN_VIEW =4; /胜利界面 public static final int GOTO_FAIL_VIEW =5; /失败界面 public static final int GOTO_HIGH_SCORE_VIEW=6; /排行榜界面 pub

10、lic static final int GOTO_HELP_VIEW =7; /帮助界面 public static final int GOTO_ABOUT_VIEW=8; /关于界面 public static final int GOTO_CHOICE_VIEW=9; /选择界面 public static final int OVER_GAME =10; /游戏结束 这个类主要是标识所有SurfaceView的常量,这些界面的常量用数字0至10表示的好处是:在后面的编程过程中更快捷,而且简单明了。4.5.2界面设置public class AboutView extends View

11、Group Paint paint; /画笔引用 Bitmap bgBitmap; /背景图片 Bitmap bmp; /文字的图片 float bmpx; /文字位置 public AboutView(GameActivity activity) super(activity); setWillNotDraw(false); paint=new Paint(); /创建画笔 paint.setAntiAlias(true); /打开抗锯齿 initBitmap(); /初始化位图资源 /确定View的大小 Override protected void onMeasure(int width

12、MeasureSpec, int heightMeasureSpec) this.setMeasuredDimension(bgBitmap.getWidth(), bgBitmap.getHeight(); /确定各子控件的位置与大小,调用子控件的layout函数进行 Override protected void onLayout(boolean changed, int l, int t, int r, int b) /显示函数 Override public void onDraw(Canvas canvas) canvas.drawBitmap(bgBitmap, 0, 0, pai

13、nt); canvas.drawBitmap(bmp, bmpx+Constant.X_OFFSET, Constant.BMP_Y+Constant.Y_OFFSET, paint); /加载图片的方法 public void initBitmap() bgBitmap=BitmapFactory.decodeResource(this.getResources(), R.drawable.help); bmp=BitmapFactory.decodeResource(this.getResources(), R.drawable.bmp0); bgBitmap=PicLoadUtil.sc

14、aleToFitFullScreen(bgBitmap, Constant.wRatio, Constant.hRatio); bmp=PicLoadUtil.scaleToFit(bmp, Constant.ssr.ratio); /初始化图片的位置 bmpx=(Constant.SCREEN_WIDTH-bmp.getWidth()/2; 界面设置的类继承ViewGroup,使用onMeasure确定view大小、onLayo确定各个子控件的位置与大小,onDraw方法显示函数,initBitmao方法加载图片。4.5.3监听器public class KeyThread extends

15、Thread private boolean flag=true; GameView gameView; private int sleepSpan=40; private float changeSpeedTime=80f;/改变速度的时间点 public KeyThread(GameView gameView) this.gameView=gameView; Override public void run() while(flag) if(!(gameView.keyState&0x20)=0)/第6位是1,可以改变按下按钮时间 gameView.btnPressTime+=3.5f;

16、if(!(gameView.keyState&0x1)=0)/和00001按位或,判断第1位是否为1,标志向左移 if(gameView.btnPressTimechangeSpeedTime)/如果按键时间不足 gameView.cue.rotateLeftSlowly();/将球杆慢速左转 else/如果按键超过规定时间 gameView.cue.rotateLeftFast();/将大炮快速左转 else if(!(gameView.keyState&0x2)=0)/和00010按位或,判断第2位是否为1,标志向右移 if(gameView.btnPressTimechangeSpeed

17、Time)/如果按键时间不足 gameView.cue.rotateRightSlowly();/将球杆慢速右转 else/如果按键超过规定时间 gameView.cue.rotateRightFast();/将大炮快速右转 try Thread.sleep(sleepSpan);/睡眠指定毫秒数 catch(Exception e) e.printStackTrace();/打印堆栈信息 public void setFlag(boolean flag) this.flag = flag; 这监听器是起监听作用的线程类,这段代码是监听触控按键的线程类,这个线程是对球杆角度偏移进行控制。4.5

18、.4线程间通信Handler myHandler = new Handler()/处理各个SurfaceView发送的消息 public void handleMessage(Message msg) switch(msg.what) case WhatMessage.GOTO_MAIN_MENU_VIEW: gotoMainMenuView(); break; case WhatMessage.GOTO_GAME_VIEW: gotoGameView(); break; case WhatMessage.GOTO_SOUND_CONTORL_VIEW: gotoSoundControlVie

19、w(); break; case WhatMessage.GOTO_WIN_VIEW: gotoWinView(); break; case WhatMessage.GOTO_FAIL_VIEW: gotoFailView(); break; case WhatMessage.GOTO_HIGH_SCORE_VIEW: gotoHighScoreView(); break; case WhatMessage.GOTO_WELLCOME_VIEW: gotoWellcomeView(); break; case WhatMessage.GOTO_HELP_VIEW: gotoHelpView()

20、; break; case WhatMessage.GOTO_ABOUT_VIEW: gotoAboutView(); break; case WhatMessage.GOTO_CHOICE_VIEW: gotoChoiceView(); break; case WhatMessage.OVER_GAME: goToOverView(); break; ;线程间的通信需要用到Handler来发送消息。线程之间的通信的原理是,线程通过Handler将消息发送出去,发出去的消息就会到进入到MessageQueue中,然后再通过Looper将消息循环的发送出去。msg.what是Messge对象的属

21、性,起到标示作用。4.5.5自定义按钮public class ImageButtonEx extends Button protected Bitmap btBitmap; protected boolean bButtonPressed=false; public ImageButtonEx(Context context) super(context); public ImageButtonEx(Context context,Bitmap btBitmap) super(context); this.btBitmap=btBitmap; setBackgroundDrawable(nu

22、ll); 自定义按钮的好处是,可以根据自己的喜爱和需要来绘制按钮,可以使你的游戏界面做得更漂亮,吸引大众的眼球。在这个游戏中的自定义按钮需要用到图形图像处理中的画布(Canvas)、画笔(Paint)和位图(Bitmap)。4.5.6定时器/绘制时间的方法 public void drawSelf(Canvas canvas,Paint paint) int second=this.leftSecond%60; int minute=this.leftSecond/60; /绘制秒钟drawNumberBitmap(second,numberBitmaps,endX+Constant.X_OF

23、FSET,endY+Constant.Y_OFFSET,canvas, paint); /绘制分隔符 int secondLength=(second+).length()=1 ? (second+).length()+1 : (second+).length(); float breakMarkX=endX-secondLength*numberWidth-breakMarkWidth; float breakMarkY=endY; canvas.drawBitmap(breakMarkBitmap, breakMarkX+Constant.X_OFFSET, breakMarkY+Cons

24、tant.Y_OFFSET,paint);/绘制时间分隔符图片 /绘制分钟 float miniteEndX=breakMarkX; float miniteEndY=endY;drawNumberBitmap(minute,numberBitmaps,miniteEndX+Constant.X_OFFSET,miniteEndY+Constant.Y_OFFSET,canvas, paint); 4.5.7 数据存储/打开或创建数据库的方法 public void openOrCreateDatabase() try sld=SQLiteDatabase.openDatabase ( /da

25、ta/data/com.bn.d2.bill/mydb, /数据库所在路径 null, /CursorFactory SQLiteDatabase.OPEN_READWRITE|SQLiteDatabase.CREATE_IF_NECESSARY /读写、若不存在则创建 ); String sql=create table if not exists highScore + ( + score integer, + date varchar(20) + ); sld.execSQL(sql); catch(Exception e) Toast.makeText(this, 数据库错误:+e.t

26、oString(), Toast.LENGTH_SHORT).show(); /关闭数据库的方法 public void closeDatabase() try sld.close(); catch(Exception e) Toast.makeText(this, 数据库错误:+e.toString(), Toast.LENGTH_SHORT).show(); /插入记录的方法 public void insert(int score,String date) try String sql=insert into highScore values(+score+,+date+); sld.e

27、xecSQL(sql); sld.close(); catch(Exception e) Toast.makeText(this, 数据库错误:+e.toString(), Toast.LENGTH_SHORT).show(); /查询的方法 public String query(int posFrom,int length) /开始的位置,要查寻的记录条数 StringBuilder sb=new StringBuilder(); /要返回的结果 Cursor cur=null; openOrCreateDatabase(); String sql=select score,date fr

28、om highScore order by score desc; cur=sld.rawQuery(sql, null); try cur.moveToPosition(posFrom); /将游标移动到指定的开始位置 int count=0; /当前查询记录条数 while(cur.moveToNext()&countlength) int score=cur.getInt(0); String date=cur.getString(1); sb.append(score); sb.append(/); sb.append(date); sb.append(/); /将记录用/分隔开 count+; catch(Exception e) Toast.makeText(this

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1