台球游戏系统安卓课程设计Word文档下载推荐.docx
- 文档编号:16192761
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:22
- 大小:1.78MB
台球游戏系统安卓课程设计Word文档下载推荐.docx
《台球游戏系统安卓课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《台球游戏系统安卓课程设计Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。
\下
2、配置环境变量
选择计算机>
右键>
属性>
高级设置>
环境变量
CLASSPATH:
.。
%JAVA_HOME%\lib。
%JAVA_HOME%\lib\dt.jar。
%JAVA_HOME%\lib\tools.jar。
JAVA_HOME:
C:
\ProgramFiles(x86)\Java\jdk1.6.0_24
Path:
%JAVA_HOME%\bin。
将以上三个配置到环境变量中
3、安装eclipse
双击eclipse快捷方式图标,它会在你选择地路径下生成一个workspace文件夹,以后地工程都在这里面.
4、安装ADT
离线安装ADT:
点击eclipse上地help进入如图所示,点击add将ADT导入
若安装成功则会出现如图所示地navigate下面手机图标.
5、安装SDK
点击window进入preference,然后点击android,在SDKLocation中导入SDK,安装成功之后如图所示.
4.2功能定义
台球游戏是根据人们日常中打台球地模式进行模拟式地通过点击按钮来调准角度并出击球杆.
选择【开始游戏】之后可选择【倒计时模式】和【练习模式】进行玩台球游戏,另外还可以点击【排行榜】查看分数情况,倒计时模式是在一定地时间进行玩游戏,练习模式是对于初次玩台球游戏地玩家或者不熟练地玩家.
4.3类地设计
4.4类地功能
各个类功能清单
文件名
主要功能
备注
Constant.java
定义台球所需工具
GameActivity.java
主体类
Main方法
WhatMessage.java
Surface所需地常量类
ImageButton.java
球杆变形按钮
ISwitchButton.java
SwitchButton.java
角度调整按钮
AboutView,java
关于界面
ChoiceView.java
选项菜单界面
HelpView.java
帮助界面
SoundControl.java
声音控制界面
Ball.java
台球
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.java
欢迎界面
WinView.java
游戏胜利界面
CollisionUtil.java
进行碰撞检测和物理计算工具类
ColorUtil.java
颜色工具类
DataUtil.java
系统当前日期工具类
PicLoadUtil.java
图片工具类
ScreenScaleResult.java
横竖屏幕工具类
ScreenScaleUtil.java
计算缩放情况工具类
4.5类地特点
4.5.1抽象类WhatMessage地描述
publicclassWhatMessage{
publicstaticfinalintGOTO_WELLCOME_VIEW=0。
//欢迎界面
publicstaticfinalintGOTO_MAIN_MENU_VIEW=1。
//主菜单界面
publicstaticfinalintGOTO_GAME_VIEW=2。
//游戏界面
publicstaticfinalintGOTO_SOUND_CONTORL_VIEW=3。
//声音控制界面
publicstaticfinalintGOTO_WIN_VIEW=4。
//胜利界面
publicstaticfinalintGOTO_FAIL_VIEW=5。
//失败界面
publicstaticfinalintGOTO_HIGH_SCORE_VIEW=6。
//排行榜界面
publicstaticfinalintGOTO_HELP_VIEW=7。
//帮助界面
publicstaticfinalintGOTO_ABOUT_VIEW=8。
//关于界面
publicstaticfinalintGOTO_CHOICE_VIEW=9。
//选择界面
publicstaticfinalintOVER_GAME=10。
//游戏结束
}
这个类主要是标识所有SurfaceView地常量,这些界面地常量用数字0至10表示地好处是:
在后面地编程过程中更快捷,而且简单明了.
4.5.2界面设置
publicclassAboutViewextendsViewGroup{
Paintpaint。
//画笔引用
BitmapbgBitmap。
//背景图片
Bitmapbmp。
//文字地图片
floatbmpx。
//文字位置
publicAboutView(GameActivityactivity){
super(activity)。
setWillNotDraw(false)。
paint=newPaint()。
//创建画笔
paint.setAntiAlias(true)。
//打开抗锯齿
initBitmap()。
//初始化位图资源
}
//确定View地大小
@Override
protectedvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec){
this.setMeasuredDimension(bgBitmap.getWidth(),bgBitmap.getHeight())。
//确定各子控件地位置与大小,调用子控件地layout函数进行
protectedvoidonLayout(booleanchanged,intl,intt,intr,intb){
//显示函数
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.drawable.help)。
bmp=BitmapFactory.decodeResource(this.getResources(),R.drawable.bmp0)。
bgBitmap=PicLoadUtil.scaleToFitFullScreen(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监听器
publicclassKeyThreadextendsThread{
privatebooleanflag=true。
GameViewgameView。
privateintsleepSpan=40。
privatefloatchangeSpeedTime=80f。
//改变速度地时间点
publicKeyThread(GameViewgameView)
{
this.gameView=gameView。
publicvoidrun()
while(flag)
{
if(!
((gameView.keyState&
0x20)==0))//第6位是1,可以改变按下按钮时间
{
gameView.btnPressTime+=3.5f。
}
0x1)==0))//和00001按位或,判断第1位是否为1,标志向左移
if(gameView.btnPressTime<
changeSpeedTime)//如果按键时间不足
{
gameView.cue.rotateLeftSlowly()。
//将球杆慢速左转
}
else//如果按键超过规定时间
gameView.cue.rotateLeftFast()。
//将大炮快速左转
}
elseif(!
0x2)==0))//和00010按位或,判断第2位是否为1,标志向右移
gameView.cue.rotateRightSlowly()。
//将球杆慢速右转
gameView.cue.rotateRightFast()。
//将大炮快速右转
try{
Thread.sleep(sleepSpan)。
//睡眠指定毫秒数
catch(Exceptione){
e.printStackTrace()。
//打印堆栈信息
}
publicvoidsetFlag(booleanflag){
this.flag=flag。
这监听器是起监听作用地线程类,这段代码是监听触控按键地线程类,这个线程是对球杆角度偏移进行控制.
4.5.4线程间通信
HandlermyHandler=newHandler(){//处理各个SurfaceView发送地消息
publicvoidhandleMessage(Messagemsg){
switch(msg.what)
caseWhatMessage.GOTO_MAIN_MENU_VIEW:
gotoMainMenuView()。
break。
caseWhatMessage.GOTO_GAME_VIEW:
gotoGameView()。
caseWhatMessage.GOTO_SOUND_CONTORL_VIEW:
gotoSoundControlView()。
caseWhatMessage.GOTO_WIN_VIEW:
gotoWinView()。
caseWhatMessage.GOTO_FAIL_VIEW:
gotoFailView()。
caseWhatMessage.GOTO_HIGH_SCORE_VIEW:
gotoHighScoreView()。
caseWhatMessage.GOTO_WELLCOME_VIEW:
gotoWellcomeView()。
caseWhatMessage.GOTO_HELP_VIEW:
gotoHelpView()。
caseWhatMessage.GOTO_ABOUT_VIEW:
gotoAboutView()。
caseWhatMessage.GOTO_CHOICE_VIEW:
gotoChoiceView()。
caseWhatMessage.OVER_GAME:
goToOverView()。
}。
线程间地通信需要用到Handler来发送消息.线程之间地通信地原理是,线程通过Handler将消息发送出去,发出去地消息就会到进入到MessageQueue中,然后再通过Looper将消息循环地发送出去.msg.what是Messge对象地属性,起到标示作用.
4.5.5自定义按钮
publicclassImageButtonExextendsButton{
protectedBitmapbtBitmap。
protectedbooleanbButtonPressed=false。
publicImageButtonEx(Contextcontext){
super(context)。
publicImageButtonEx(Contextcontext,BitmapbtBitmap){
this.btBitmap=btBitmap。
setBackgroundDrawable(null)。
自定义按钮地好处是,可以根据自己地喜爱和需要来绘制按钮,可以使你地游戏界面做得更漂亮,吸引大众地眼球.在这个游戏中地自定义按钮需要用到图形图像处理中地画布(Canvas)、画笔(Paint)和位图(Bitmap).
4.5.6定时器
//绘制时间地方法
publicvoiddrawSelf(Canvascanvas,Paintpaint){
intsecond=this.leftSecond%60。
intminute=this.leftSecond/60。
//绘制秒钟
drawNumberBitmap(second,numberBitmaps,endX+Constant.X_OFFSET,endY+Constant.Y_OFFSET,canvas,paint)。
//绘制分隔符
intsecondLength=(second+"
"
).length()<
=1?
(second+"
).length()+1:
).length()。
floatbreakMarkX=endX-secondLength*numberWidth-breakMarkWidth。
floatbreakMarkY=endY。
canvas.drawBitmap(breakMarkBitmap,breakMarkX+Constant.X_OFFSET,breakMarkY+Constant.Y_OFFSET,paint)。
//绘制时间分隔符图片
//绘制分钟
floatminiteEndX=breakMarkX。
floatminiteEndY=endY。
drawNumberBitmap(minute,numberBitmaps,miniteEndX+Constant.X_OFFSET,miniteEndY+Constant.Y_OFFSET,canvas,paint)。
4.5.7数据存储
//打开或创建数据库地方法
publicvoidopenOrCreateDatabase()
try
sld=SQLiteDatabase.openDatabase
(
"
/data/data/com.bn.d2.bill/mydb"
//数据库所在路径
null,//CursorFactory
SQLiteDatabase.OPEN_READWRITE|SQLiteDatabase.CREATE_IF_NECESSARY//读写、若不存在则创建
)。
Stringsql="
createtableifnotexistshighScore"
+
("
scoreinteger,"
datevarchar(20)"
)。
。
sld.execSQL(sql)。
catch(Exceptione)
Toast.makeText(this,"
数据库错误:
+e.toString(),Toast.LENGTH_SHORT).show()。
//关闭数据库地方法
publicvoidcloseDatabase()
sld.close()。
//插入记录地方法
publicvoidinsert(intscore,Stringdate)
insertintohighScorevalues("
+score+"
'
+date+"
'
//查询地方法
publicStringquery(intposFrom,intlength)//开始地位置,要查寻地记录条数
StringBuildersb=newStringBuilder()。
//要返回地结果
Cursorcur=null。
openOrCreateDatabase()。
Stringsql="
selectscore,datefromhighScoreorderbyscoredesc。
cur=sld.rawQuery(sql,null)。
{
cur.moveToPosition(posFrom)。
//将游标移动到指定地开始位置
intcount=0。
//当前查询记录条数
while(cur.moveToNext()&
&
count<
length)
intscore=cur.getInt(0)。
Stringdate=cur.getString
(1)。
sb.append(score)。
sb.append("
/"
sb.append(date)。
//将记录用"
分隔开
count++。
}
+e.toString(),Toast.LENGTH_SHORT).show
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 台球 游戏 系统 课程设计