安卓平台台球游戏系统课程设计_第1页
安卓平台台球游戏系统课程设计_第2页
安卓平台台球游戏系统课程设计_第3页
安卓平台台球游戏系统课程设计_第4页
安卓平台台球游戏系统课程设计_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

计算机学院课程设计

专业:计算机应用技术

课程名称:_______3G开发基础_____________

课题名称:台球游戏系统

教师:_______________________

学号:姓名:

2013年9月20日——2013年12月25日

目录

序言

Android是基于Linux开放性内核iKj操作系统,是Google企业在2007年11

月5日公布的操作系统。初期由原名为“Android”的企业开发,google在2023

年收购“Android.Inc”后,继续进行对Android系统开发运行,它采用了软件堆

层日勺架构,重要分为三部分。底层Linux内核只提供基本功能,其他日勺应用软件

则由各企业自行开发,部分程序以Java编写。

2023年初数据显示,仅正式上市两年日勺操作系统Android已经超越称霸十年

的塞班系统,使之跃居全球最受欢迎H勺智能平台。目前,Android系统不仅应

用于智能,也在平板电脑市场急速扩张。

综合本学期丛J学习,开发一款基于android环境的台球游戏,纯熟掌握android

应用开发。

关欧J设计技巧

1、熟悉android开发环境,熟悉用java语言实现一种安卓程序日勺设计过程,掌

握有关H勺设计技巧

2、通过此课程设计,理解android系统日勺特点,掌握android有关日勺知识点。

3、总结学习android开发环境,熟悉用java语言实现一种安卓程序的设计过程,

掌握有关的设计技巧

总结学习android的J心得和体会,并且android课程提出自己的J意见和提议,从

中得到自己日勺学习心得和体会。

二.设计任务及规定

根据android课程学习,将台球游戏设计的总体设计框架以及详细欧I设计

和实现过程通老师讲解和自己的理解将其所有以课程设计日勺方式书写出来。

三.总体设计框架

-Hh4

/r.l'In_L*l\

四.详细设计和实现过程

4.1配置开发环境

1、安装JDK

首先将下载日勺jdk-6u24-windows-i586安装到C:\下

2、配置环境变量

选择计算机,右键〉属性〉高级设置,环境变量

CLASSPATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HO

ME%\lib\tools.jar;

JAVA_HOME:C:\ProgramFiles(x86)\Java\jdk_24

Path:%JAVA_HOME%\bin;

将以上三个配置到环境变量中

系统雇性

没备管理

计算机名硬件高级系统保护工程

靖i猬

高级案统

U

i/

另请参阅

3、安装eclipse

双击eclipse快捷方式图标,它会在你选择H勺途径下生成一种workspace文献夹,

后来的项目都在这里面。

4、安装ADT

离线安装ADT:

点击eclipse上『、Jhelp进入如图所示,点击add将ADT导入

AvailableSoftware

Selectasiteorenterthelocationofasite.

Workwith:37契orselectaTAdd...

Findmoresoftwarebyworkingwiththe.AvailsblaSoftwareSi』'preference

typefiltertext

NameVersion

口①Thereisnositeselected.

SelectAllDeselectAll

若安装成功则会出现如图所示『、Jnavigate下面图标。

FileEditRefactorNavigateSearchProjectRunWindox

I二▼"Qu■KDKHEMHHH

5、安装SDK

点击window进入preference,然后点击android,在SDKLocation中导入SDK,

安装成功之后如图所示。

typefiltertextAndroidS▼

>General

AndroidPreferences

t>Android

>AntSDKLocation:D:\ProgramFiles(x86)\sdk\android.sdkBr<

t>DataManagementNote:ThelistofSDKTargetsbelowisonlyreloadedonceyouhit'Appt

>Help

t>Install/UpdateTargetNameVendorPlatform

>JavaAndroid1.5AndroidOpenSourceProject1.5

t>JavaEEGoogleAPIsGoogleInc-1.5

»JavaPersistenceAndroid1.6AndroidOpenSourceProject1.6

>JavaScriptGoogleAPIsGoogleInc.1.6

»Mylyn

Android2.1AndroidOpenSourceProject2.1

>Plug-inDevelopment

CoogleAPIsGoogleInc.2.1

»RemoteSystems

Android2.2AndroidOpenSourceProject2.2

t>Run/Debug

GoogleAPIsGoogleInc.2.2

>Server

GALAXYTabAddonSamsungElectronicsCo..Ltd.2.2

>Team

TerminalAndroid2.3.3AndroidOpenSourceProject2.3.3

ValidationGoogleAPIsGoogleInc.2.3.3

)WebEDK1.2SonyEricssonMobileCommun...2.3.3

t>WebServicesAndroid3.0AndroidOpenSourceProject3.0

)XMLGoogleAPIsGoogleInc.3.0

Android3.1AndroidOpenSourceProject3.1

GoogleAPIsGoogleInc.3.1

Android3.2AndroidOpenSourceProject3.2

GoogleAPIsGoogleInc-3.2

Android4.0AndroidOpenSourceProject4.0

GoogleAPBGoogleInc.4.0

Android4.0.3AndroidOpenSourceProject4.0.3

GoogleAPIsGoogleInc.4.0.3

4.2功能定义

台球游戏是根据人们平常中打台球的模式进行模拟式的通过点击按钮来调

准角度并出击球杆。

选择【开始游戏】之后可选择【倒计时模式】和【练习模式】进行玩台球游

戏,此外还可以点击【排行榜】查看分数状况,倒计时模式是在一定的时间进行

玩游戏,练习模式是定于初次玩台球游戏时玩家或者不纯熟日勺玩家。

4.3类的设计

4.4类H勺功能

各个类功能清单

文献名重要功能备注

Constant.java定义台球所需工具

GameActivity.java主体类

Main措施

WhatMessage.javaSurface所需时常量类

ImageButton.java球杆变形按钮

ISwitchButton.java

SwitchButton.java角度调整按钮

AboutView,java有关界面

ChoiceVicw.java选项菜单界面

HelpView.java协助界面

SoundControLjavaL日控制界面

BalLjava台球

BallGoThread.java桌球运动

Cue.java球杆

CueAnimateThread.java倒计时间

GameView.java游戏界面

GameViewDrawThread.java桌球运动画面

KcyThrcad.java监听触控按键线程类

StrengthBar.java力度条

Table.java球台

Timcr.java计时器

TimeRunningThread.java倒计时线程类

VirtualButton.java虚拟按钮类

FailVicw.java游戏失败界面

HighScoreView.java分数记录界面

MainMenuView.java主界面

WcllcomeView.java欢迎界面

WinView.java游戏胜利界面

CollisionUtiLjava进行碰撞检测和物理计

算工具类

ColorUtiLjava颜色工具类

DataUtil.java系统目前日期工具类

PicLoadUtil.java图片工具类

ScreenScaleResult.java横竖屏幕工具类

ScreenScaleUtil.java计算缩放状况工具类

4.5类的特点

抽象类WhatMessage欧I描述

publicclassWhatMessage{

publicstaticfinalintGOTO_WELLCOME_VIEW=();〃欢迎界面

publicstaticfinalintGOTO_MAIN_MENU_VIEW=1;〃主菜单界面

publicstaticfinalintG0T0_GAME_VIEW=2;〃游戏界面

publicstaticfinalintG0T0_S0UND_C0NT0RL_VIEW=3;〃声

音控制界面

publicstaticfinalintGOTO_WIN_VIEW=4;〃胜利界面

publicstaticfinalintGOTO_FAIL_VIEW=5;〃失败界面

publicstaticfinalintG0T0_HIGH_SC0RE_VIEW=6;〃排行榜界面

publicstaticfinalintGOTO_HELP_VIEW=7;〃协助界面

publicstaticfinalintGOTO_ABOUT_VIEW=8;〃有关界面

publicstaticfinalintG0T0_CH0ICE_VIEW=9;〃选择界面

publicstaticfinalintOVER_GAME=10;〃游戏结束

这个类重要是标识所有SurfaceView的常量,这些界面的常量用数字0至10

表达的好处是:在背面的编程过程中更快捷,并且简朴明了。

界面设置

publicclassAboutViewextendsViewGroup{

Paintpaint;〃画笔引用

BitmapbgBitmap;〃背景图片

Bitmapbmp;〃文字/、J图片

floatbmpx;〃文字位置

publicAboutView(GameActivityactivity){

super(activity);

setWillNotDraw(false);

paint=newPaint();〃创立画笔

paint.setAntiAlias(true);//打开抗锯齿

inilBitmapO;〃初始化位图资源

//确定View%'J大小

@Ovcrridc

protectedvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec){

this.sctMcasurcdDimcnsion(bgBitmap.getWidth(),bgBitmap.getHcight());

〃确定各子控件的位置与大小,调用子控件的layout函数进行

@Override

protectedvoidonLayout(booleanchanged,int1,intt,intr,intb){

〃显示函数

©Override

publicvoidonDraw(Canvascanvas){

canvas.drawBitmap(bgBitmap,0,0,paint);

canvas.drawBitmap(bmp,bmpx+Constant.X_OFFSET,

Constant.BMP_Y+Constant.Y_OFFSET,paint);

}

〃加载图片的措施

publicvoidinitBitmap(){

bgBitmap=BitmapFactory.decodeResource(this.getResources(),

R.drawahle.help);

bmp=BitmapFactory.decodeResource(this.getResources(),R.drawable.bmpO);

bgBitmap=PicLoadUtil.scaleToFitFullScreen(bgBitmap,Constanl.wRalio,

Constant.hRalio);

bmp=PicLoadLtiLscaleToFit(bmp,Constanl.ssr.ratio);

〃初始化图片的位置

bmpx=(Constant.SCREEN_WIDTH-bmp.getWidth())/2;

1

界面设置的类继承ViewGroup,使用onMeasure确定view大小、onLayo确定各

个子控件的位置与大小,onDraw措施显示函数,initBitmao措施加载图片。

监听器

publicclassKcyThrcadextendsThread(

privatebooleanflag=true;

GameViewgameView;

privateints!eepSpan=40;

privatefloatchangeSpeedTime=XOf;〃变化速度H勺时间点

publicKeyThread(GameViewgameView)

(

this.gameView=gameView;

}

©Override

publicvoidrun()

(

while(flag)

if(!((gameView.keyState&0x20)==0))〃第6位是1,可以变化按下按钮

时间

gameView.btnPressTime+=3.5f;

)

if(!((gameView.keySlale&OxD==O»^n00001按位或,判断第1位与

否为1,标志向左移

(

if(gameView.btnPressTime〈changeSpeedTime)〃假如按键时间局

限性

(

gameView.cue.rotateLeftSlowly。;//将球杆慢速左转

)

else//假如按键超过规定期间

(

gameView.cue.rolateLeftFast。;〃将大炮迅速左转

)

)

elseif(!((gameView.keyState&0x2)==。))//和00010按位或,判断第2

位与否为1,标志向右移

if(gameView.btnPressTimeVchangeSpeedTime)〃假如按键时间局

限性

gameView.cue.rotateRightSlowly();〃将球杆慢速右转

}

else//假如按键超过规定期间

(

gameView.cue.rotateRightFast();〃将大炮迅速右转

}

)

try(

Thread.sleep(sleepSpan);//睡眠指定毫秒数

I

catch(Exceptione){

e.printStackTrace。;//打印堆栈信息

}

)

)

publicvoidsetFlag(booleanflag){

this.flag=flag;

)

这监听器是起监听作用日勺线程类,这段代码是监听触控按键日勺线程类,这个线程

是对球杆角度偏移进行控制。

线程间通信

HandlermyHandlcr=newHandler。{〃处理各个SurfaceVievv发送口勺消息

publicvoidhandleMessage(Messagemsg){

switchimsg.what)

(

caseWhatMessage.GOTO_MAIN_MENU_VIEW:

gotoMainMenuView();

break;

caseWhatMessage.GOTO_GAME_VIEW:

gotoGameView();

break;

caseWhatMcssage.GOTO_SOUND_CONTORL_V!EW:

gotoSoundControlViewO;

break;

caseWhatMessage.GOTO_WIN_VIEW:

gotoWinView();

break;

caseWhatMessage.GOTO_FAIL_VIEW:

gotoFailView();

break;

caseWhatMessage.GOTO_HIGH_SCORE_VIEW:

gotoHighScoreView();

break;

caseWhalMessage.GOTO_WELLCOME_VIEW:

gotoWellcomeView();

break;

caseWhatMcssage.GOTO_HELP_VIEW:

gotoHclpView();

break;

caseWhatMessage.GOTOABOUTVIEW:

gotoAboutView();

break;

caseWhatMessage.GOTOCHOICEVIEW:

goloChoiceView();

break;

caseWhatMcssagc.OVER_GAME:

goToOverView();

break;

)

}

);

线程间日勺通信需要用到Handler来发送消息。线程之间的通信日勺原理是,线

程通过Handler将消息发送出去,发出去的消息就会到进入到MessageQueue中,

然后再通过Looper将消息循环口勺发送出去。msg.what是Messge对象的属性,起

到标示作用。

自定义按钮

publicclassImageButtonExextendsButton{

protectedBitmapbtBitmap;

protectedbooleanbButlonPressed=false;

publicImageButtonEx(Contextcontext))

supcr(contcxt);

1

publicImageButtonEx(Contextcontext,BitmapbtBitmap){

super(context);

this.btBitmap=btBitmap;

setBackgroundDrawable(null);

)

自定义按钮的好处是,可以根据自己的爱慕和需要来绘制按钮,可以使

你日勺游戏界面做得更漂亮,吸引大众的眼球。在这个游戏中的自定义按钮需要用

到图形图像处理中『、J画布(Canvas)、画笔(Paint)和位图(Bitm叩)。

定期器

〃绘制时间的措施

publicvoiddrawSelf(Canvascanvas,Paintpaint){

intsecond=this.IcftSecond%60;

intminute=this.leftSecond/60;

〃绘制秒钟

drawNumberBitmap(second,numberBitmaps,endX+Constant.X_OFFSET,e

ndY+Constant.Y_OFFSET,canvas,paint);

〃绘制分隔符

intsecondLengih=(second+"").length()<=1?(second+",,).length()+l:

(second+"").length();

floatbreakMarkX=endX-secondLength*numberWidth-breakMarkWidth:

floatbreakMarkY=endY;

canvas.drawBitmap(breakMarkBitmap,breakMarkX+Conslanl.X_OFFSET,

breakMarkY+Constant.Y_OFFSET,paint);//绘制时间分隔符图片

〃绘制分钟

floatminiteEndX=breakMarkX;

floatminiteEndY=endY;

drawNumberBitmap(minute,numberBitmaps,miniteEndX+Constant.X_OFF

SET,miniteEndY-Constant.Y_OFFSET,canvas,paint);

1

数据存储

//打开或创立数据库的措施

publicvoidopenOrCreateDatabase()

sld=SQLitcDatabasc.opcnDatabasc

"/data/data/com.bn.d2.bill/mydb",〃数据库所在途径

null,//CursorFactory

SQLiteDatabase.OPEN_READWRITE|SQLiteDatabase.CREATE_IF_NECESS

ARY〃读写、若不存在则创立

);

Stringsql="createtableifnotexistshighScore"+

"(n+

"scoreinteger,"+

"datevarchar(20)"+

”);”;

sld.execSQL(sql);

1

catch(Exceptioi)e)

(

Toast.makeText(this,”数据库错误:"+e.toString(),

Toast.LENGTH_SHORT).show();

)

)

//关闭数据库的措施

publicvoidcloscDatabasc()

try

sld.close();

)

catch(Exceptione)

(

Toast.makcTcxt(this,“数据库错误:n+c.toString(),

Toast.LENGTH_SHORT).show();;

〃插入记录的措施

publicvoidinsert(intscore,Stringdate)

Stringsql="insertintohighScorevalues("+score+","'+date+"');";

sld.execSQL(sql);

sld.closc();

1

catch(Exceptione)

Toast.makeText(this,”数据库错误:"+e.toString(),

Toast.LENGTH_SHORT).show();;

)

)

//查询的措施

publicStringquery(intposFrom,intlength)〃开始的I位置,要查寻的I记

录条数

(

StringBuildersb=newStringBuilder();〃要返回欧I成果

Cursorcur=null;

openOrCreateDatabase();

Stringsql="selectscore,datefromhighScoreorderbyscoredesc;n;

cur=sld.rawQuery(sql,null);

try

cur.moveToPosition(posFrom);//将游标移动到指定的开始

位置

intcount=0;〃目前查询记录条数

while(cur.moveToNext()&&count<Iength)

(

intscore=cur.getlnt(0);

Stringdate=cur.getString(1);

sb.append(score);

sb.叩pend("/");

sb.appcnd(datc);

sb.appendCr);〃将记录取"/“分隔开

count++;

1

)

catch(Exceptione)

{

Toast.makeText(this,”数据库错误:"+e.toString(),

Toast.LENGTH_SHORT).show();

)

finally

cur.closeO;

closeDatabase();

)

〃转换成字符,并返回

returnsb.toStringO;

)

//得到数据库中记录条数的措施

publicintgetRowCount()

(

intresult=0;

Cursorcur=null;

openOrCreateDatabase();

try

(

Stringsql="selectcount(score)fromhighScore;";

cur=sld.rawQuery(sql,null);

if(cur.moveToNext())

result=cur.getInt(O);

}

)

catch(Exceptione)

(

Toast.makeText(this,”数据库错误:"+e.toString(),

Toast.LENGTH_SHORT).show();

}

finally

(

cur.close();

closeDatabase();

)

returnresult;

}

这个游戏中口勺数据存储用到H勺是SQLite数据库。SQLite是一种开源的嵌入

式关系数据库,它可以减少应用程序管理数据的开销,可移植性好,很轻易使用,

它自身很小,但却高效并且可靠。嵌入式数据库的一大好处是在程序内部不需要

网络配置,也不需要管理。使用SQLite数据存储需要熟悉SQL语句时使用。使

用SQLite数据库首先需要创

温馨提示

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

评论

0/150

提交评论