游戏开发论文.doc_第1页
游戏开发论文.doc_第2页
游戏开发论文.doc_第3页
游戏开发论文.doc_第4页
游戏开发论文.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

计算机系毕业论文 疯狂足球手机游戏设计与开发中华女子学院学年设计(论文)疯狂足球手机游戏设计与开发姓 名: 覃海丽院 系: 计算机系专 业: 计算机科学与技术年 级: 2009级学 号: 090501036指导教师: 刘振华,刘冬懿成 绩: 日 期: 2011 年 9 月 15 日 15中文摘要【摘要】市场上形形色色的手机游戏越来越多,现在手机游戏也正向大型游戏靠拢,游戏种类、游戏角色、游戏功能越来越丰富多彩。足球是全世界最受欢迎的球类之一,所以疯狂足球手机游戏的设计开发是我们选择实践的一个较为实用的例子。高效的开发出众多人喜欢的游戏,已经成为手机游戏的关键所在,也逐渐成为市场竞争力的衡量标准。疯狂足球(CrazyFootball)软件是一款供Android手机用户使用的体育类游戏,模拟现实世界的竞技活动,供用户忙碌之余玩耍。本游戏为2D平面单机游戏;整体采用Java3G Android平台进行开发并实现,采用手机键盘进行操作。软件主要是提供给喜欢体育类竞技游戏的爱好者使用。2D的平面视觉效果可以让玩家对足球场上的情景整体把握,综观全局,并根据变化快速做出反应。本游戏需采用手机键盘进行操作,目标平台为Android2.2。【关键字】手机游戏 足球 安卓手机用户 安卓平台Abstract More and more kinds of mobile phones games show on the market, Mobile phone games now are also being closer to the big games, and the game type, game character and the game features are more and more colorful. Football is one of the most popular ball games on world. Therefore, the CrazyFootball mobile game design and development is the item we have chosen and it was a more practical example. Efficient development of game that most people like has become the key to the mobile phone games, and it so has become a measure of market competitiveness. CrazyFootball is a Software that users use sports games on android mobile phone. It simulates the real world of competitive activities and provides the user to play when the busy over. This game is for 2 D plane PC games and the whole game is on Java3G Android platform to develop and implement and of course it operates by mobile phone keyboard. The software is mainly providing to sports games lovers. The 2D graphic visual effect can let players on the football ground scene of overall assurance, taking an overview of the overall situation and responding quickly to change.KEY WORDS: mobile phones games , football , android mobile phone users , android platform 目录1. 软件产品介绍11.1软件类型及操作11.2软件面向用户群体11.3软件产品应当遵循的标准或规范11.4产品中的角色12游戏功能描述12.1菜单界面功能12.2玩家布局页面22.3游戏加载页面32.4游戏页面功能33.游戏程序涉及的类及方法43.1 Activity类43.2 继承SurfaceView类的WelcomeView类的代码解析53.3 Thread方法的代码实现63.4 SQLiteOpenHelper类64游戏程序运行流程75游戏主要流程图8附录 游戏触发控制模块代码实现分析9参考文献15致谢15计算机系学年设计论文 疯狂足球手机游戏设计与开发1.软件产品介绍 1.1软件类型及操作疯狂足球(CrazyFootball)软件是一款供Android手机用户使用的体育类游戏,模拟现实世界的竞技活动,供用户忙碌之余玩耍。本游戏为2D平面单机游戏;整体采用Java3G Android平台进行开发并实现,采用手机键盘进行操作。 1.2软件面向用户群体疯狂足球(CrazyFootball)软件主要是提供给喜欢体育类竞技游戏的爱好者使用。2D的平面视觉效果可以让玩家对足球场上的情景整体把握,综观全局,并根据变化快速做出反应。 1.3软件产品应当遵循的标准或规范本游戏需采用手机键盘进行操作,目标平台为Android2.2. 1.4产品中的角色 角色名称职责描述客户端用户登录软件, 查看游戏相关信息,游戏场景设置,游戏表1.4.12游戏功能描述 2.1菜单界面功能 在菜单功能页面,如图2.1.1,用户可以点击“进入游戏” 按钮,进入疯狂足球游戏“玩家布局界面”如图2.2.1;点击“游戏规则” 按钮,可以进行阅览游戏规则,如图2.1.2;点击“排行榜” 按钮,观看游戏排名情况,如图2.1.3;点击“关于游戏” ,了解游戏的开发人员和指导人员,如图2.1.4;点击“退出游戏” ,退出游戏程序。图2.1.1 图2.1.4图2.1.3图2.1.2 2.2玩家布局页面 在游戏玩家布局界面中,如图2,用户还可以点击俱乐部图片选择喜欢的俱乐部图片标志;可以点击音乐图片按钮选择在比赛过程中是否播放音乐;可以按“+” “”按钮布局前、中、后场球员分布,除守门员外的10个人可以自由分配场地,每行不能为0人,也不能多于5人;可以点击返回图片按钮返回到“菜单功能界面”;可以点击开始图片按钮进入“游戏加载页面”。图2.2.1 2.3游戏加载页面 进入游戏加载页面后,系统加载游戏,游戏加载好后,根据提示点击屏幕可以进行游戏,如图2.3.1。 图2.3.1 2.4游戏页面功能 游戏场景如图2.4.1,比赛过程中按左右键控制球员左右移动,足球碰上运动员或栏杆时,都会在一定的角度范围内随机反弹。每一进球,都有欢呼声。游戏每次晋级后速度加快,比赛过程中会随机出现冰块和扩大球门等奖励。比赛过程中可以随时点击游戏界面暂停游戏,还可以随时点击菜单窗口,选择是否返回游戏布局界面,如图2.4.2。本游戏为3局两胜制,比赛过程中计时,比赛所用时间挑战排行榜成功的可以选择记录该时间,如图2.4.3。比赛结束后你是输或赢或赢的能进入排行榜都弹出一对话框进行提示。输的时候弹出的对话框可以选择结束游戏,可以选择继续游戏;赢的但不能进入排行榜的可以选择结束游戏也可以选择继续挑战排行榜;赢的也能进入排行榜的可以选择记录比赛,也可以选择放弃记录。记录的话,直接进入排行榜可以看到自己的排名。图2.4.3图2.4.1图2.4.2图2.4.13.游戏程序涉及的类及方法开发疯狂足球(CrazyFootball)软件,程序主要涉及的类及方法有:Activity类,SurfaceView类,SQLiteOpenHelper类;onTouchEvent方法,Thread方法,doDraw方法。 3.1 Activity类Activity起到了控制器的作用,除了在不同的界面之间切换视图, Activity还负责处理玩家键盘的点击事件和修改键盘状态等事件。新建一个继承Activity的类:public class NewActivity extends Activity Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); /这里可以使用setContentView()显示某个视图. 本游戏中Activity起到了控制器的作用,除了在不同的界面之间切换视图, Activity还负责处理玩家键盘的点击事件和修改键盘状态等事件.代码实现如下:public boolean onTouchEvent(MotionEvent event) if(event.getAction()= MotionEvent.ACTION_UP)/判断事件类型 if(current = welcome) /当前是欢迎界面 if(rectGallery.contains(x, y) /用户点击的是Gallery welcome.ga.galleryClick(x, y); /交给Gallery来处理点击事件 else if(rectStart.contains(x, y) /点击开始按钮 layoutArray=welcome.layout; if(checkLayout(welcome.layout) pv = new ProgressView(this); /创建读取进度View this.setContentView(pv); /将屏幕设为读取进度的ProgressView This.current = pv; /记录当前View是加载界面 else if(current=pv) /当前是加载界面 if(gress=330) setContentView(gv); /切换到游戏界面 else if(current=gv) if(gv.rectMenu.contains(x,y) /如果点下了菜单按钮 else if(gv.rectYesToDialog.contains(x,y) /如果点下的是对话框中的“是” else if(gv.rectNoToDialog.contains(x,y)/如果点下的是对话框中的“否” elsepmt.flag=!pmt.flag; gv.ball.isPlaying=!gv.ball.isPlaying; /暂停 3.2 继承SurfaceView类的WelcomeView类的代码解析package com.test;import android.content.Context;public class WelcomeView extends SurfaceView implements Callback public WelcomeView(FootballActivity father) /构造函数,初始化成员变量 public void initBitmap(Context context)/初始化图片 public void doDraw(Canvas canvas)/创建画笔,绘图,画背景.public void surfaceCreated(SurfaceHolder holder) if(!wt.isAlive()/启动后台修改数据线程 wt.start(); if(!wdt.isAlive()/启动后台绘制线程 wdt.start();public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) public void surfaceDestroyed(SurfaceHolder holder) if(wt.isAlive()/停止后台修改数据线程 wt.f=false; if(wdt.isAlive()/停止后台绘制线程 wdt.flag=false; 3.3 Thread方法的代码实现public class AIThread extends Thread GameView father; /引用GameView类对象 boolean flag; /循环控制变量 int sleep=30; /睡眠时间public AIThread(GameView father) this.father=father; flag=true; /设置线程标志位public void run() while(flag) int d=father.ball.direction; /获取足球运动方向if(d0 & d8 & d15) /如果足球方向偏右 father.aiDirection=12; /AI运动方向改为向右try Thread.sleep(sleep);/休眠一段时间 catch(Exception e) e.printStackTrace(); /打印并捕获异常 3.4 SQLiteOpenHelper类package com.test;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.database.sqlite.SQLiteDatabase.CursorFactory;public class SQLite extends SQLiteOpenHelper final static int VERSION = 1;public SQLite(Context context, String name, CursorFactory factory,int version) super(context, name, factory, version);public SQLite(Context context, String name) this(context, name, VERSION);public SQLite(Context context, String name, int version) this(context, name, null, version);public void onCreate(SQLiteDatabase db) db.execSQL(create table users(id integer primary key autoincrement, +name varchar(20),score varchar(10);public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 4游戏程序运行流程游戏软件程序各个类相辅相成,密不可分,程序运行流程为:WelcomeThreadFootballActivityProgressDrawThreadGameViewProgressViewBallWelcomeViewWelcomeDrawThreadAIThreadBonusManagerPlayMoveThreadGameDrawThreadFirstActivityTimeThread5游戏主要流程图 发出请求发出请求NYNY发出请求发出请求N进入游戏响应玩家运动员布局界面返回菜单响应菜单选择界面开始游戏游戏加载页面响应响应游戏界面结束错误信息YNY附录 游戏触发控制模块代码实现分析 public boolean onTouchEvent(MotionEvent event) if(event.getAction()= MotionEvent.ACTION_UP)/判断事件类型int x = (int)event.getX();/获得点击处的X坐标int y = (int)event.getY();/获得点击处的Y坐标if(current = welcome)/当前是欢迎界面if(rectGallery.contains(x, y)/用户点击的是Gallerywelcome.ga.galleryClick(x, y);/交给Gallery来处理点击事件else if(rectStart.contains(x, y)/点击开始按钮layoutArray=welcome.layout;if(checkLayout(welcome.layout)pv = new ProgressView(this);/创建读取进度Viewthis.setContentView(pv);/将屏幕设为读取进度的ProgressViewthis.current = pv;/记录当前Viewnew Thread()public void run()Looper.prepare();if(wantSound)initSound();/初始化声音gv=new GameView(FootballActivity.this,imageIDswelcome.ga.index);/创建游戏界面welcome=null; .start();elseAlertDialog.Builder my_ADialog = new AlertDialog.Builder(this);my_ADialog.setTitle(游戏 提示);/设置标题my_ADialog.setPositiveButton(确定, null); /按钮my_ADialog.setMessage(人数不够,不能开始游戏 !).show();/设置显示消息 else if(rectSound.contains(x, y)/点下的是声音选项this.wantSound = !this.wantSound;/更改声音选项return true;else if(rectQuit.contains(x, y)/点击退出按钮Intent intent = new Intent();intent.setClass(FootballActivity.this, FirstActivity.class); startActivity(intent); FootballActivity.this.finish(); else for(int i=0;i3;i+) if(rectPlusi.contains(x, y)/点击加号按钮 if(welcome.layout0+welcome.layout1+welcome.layout22) welcome.layouti-; break; else if(current=pv)/当前是ProgressView界面if(gress=325)/进度条绘制到325后点击屏幕切换到GameView界面setContentView(gv);current=gv;pv=null;if(mpWelcomeMusic.isPlaying()mpWelcomeMusic.stop();else if(current=gv)/当前是GameView界面if(gv.rectMenu.contains(x,y)/如果点下了菜单按钮gv.isShowDialog= true;/设置显示对话框gv.ball.isPlaying = false;/足球停止移动pmt.flag = false;/运动员停止移动else if(gv.rectYesToDialog.contains(x,y)/如果点下的是对话框的“是”按钮if(gv.isShowDialog)/检查对话框是不是正在显示/返回到主界面Intent intent = new Intent();intent.setClass(FootballActivity.this, FirstActivity.class); startActivity(intent); FootballActivity.this.finish(); else if(gv.rectNoToDialog.contains(x,y)/如果点下的是对话框中的“否”按钮if(gv.isShowDialog)/检查对话框是不是正在显示gv.isShowDialog = false;/不显示对话框pmt.flag = true;/设置双方球员可移动gv.ball.isPlaying = true;/设置足球可移动else if(gv.rectYesToWin.contains(x, y)/赢了,再来一局if(gv.isShowWinAgain) welcome = new WelcomeView(this);/新建一个WelcomeView setContentView(welcome);/切换到WelcomeView界面 welcome.status = 3;/直接设为待命状态 current = welcome;/记录当前界面 gv = null; if(wantSound & mpWelcomeMusic!=null)/如需要,播放声音 mpWelcomeMusic.start(); else if(gv.rectNoToWin.contains(x, y)/赢了,不再来一局if(gv.isShowWinAgain)/返回主界面Intent intent = new Intent();intent.setClass(FootballActivity.this,FirstActivity.class);startActivity(intent);FootballActivity.this.finish();else if(gv.rectYesToLose.contains(x, y)/输了,再来一局if(gv.isShowLoseAgain) welcome = new WelcomeView(this);/新建一个WelcomeView setContentView(welcome);/切换到WelcomeView界面 welcome.status = 3;/直接设为待命状态 current = welcome;/记录当前界面 gv = null; if(wantSound & mpWelcomeMusic!=null)/如需要,播放声音 mpWelcomeMusic.start(); else if(gv.rectNoToLose.contains(x, y)/输了,不再来一局if(gv.isShowLoseAgain)Intent intent = new Intent();/返回主界面intent.setClass(FootballActivity.this,FirstActivity.class);startActivity(intent);FootballActivi

温馨提示

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

评论

0/150

提交评论