Java课程设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机科学与技术学院

课程设计

题目:Java程序设计

学生姓名:司潜学号:124221013

专业:网络工程

2014 年 06 月 19 日

--目录—

一、项目介绍 (3)

二、概要设计 (3)

2.1 资源需求 (3)

2.2 游戏运行方式 (3)

2.3 游戏运行流程 (3)

三、详细设计 (4)

3.1 游戏模块划分 (4)

3.2 组件需求 (4)

3.4 视图切换 (4)

四、编码分析 (4)

4.1 数据类 (4)

4.2 辅助类 (6)

4.3 视图类 (7)

4.4 线程类 (11)

4.5 对象类 (11)

五、数据库 (12)

六、总结 (14)

一、项目介绍

针对java课程设计,我做了一个小型安卓游戏《贪吃蛇》结课,游戏代码中包含到本学习所有知识点的应用,以及安卓的系统框架。

游戏已经成功的运行,玩法很简单,打开游戏后进入菜单,点开始键进入游戏。蛇的初始长度是4节,游戏运行时屏幕会自动产生食物(苹果),滑动屏幕控制蛇的方向,碰到墙后会从另一侧出来,吃到身体游戏失败,吃满50个食物游戏成功。50个食物个数是自己设定的。

二、概要设计

2.1 资源需求

本游戏设计做结课使用,没有用到声音资源,只需要图片资源。

图片资源:菜单背景、菜单按钮*2(开始、退出)、贪吃蛇头部、贪吃蛇身体、食物(苹果)、失败界面、胜利界面、结束后返回按钮、游戏图标

2.2 游戏运行方式

安卓游戏的运行方式大概分为两种,一种是Activity的切换,一种是View的切换,小游戏用View的切换更为方便。本游戏就是采用的View切换的方式进行。

本游戏一共有三个View,分别是菜单的静态ViewGroup、游戏的动态SurfaceView和结束游戏界面的静态View。由Activity消息机制控制View的切换。

2.3 游戏运行流程

进入游戏后,有两个按钮,一个是退出按钮,一个是开始按钮

点击开始,开始后进入动态游戏界面,蛇是不停向前运动的,滑动屏幕控制蛇的移动方向。

吃到身体,游戏失败,弹出失败界面,点击右上角返回键返回菜单。

吃满50个食物,游戏胜利,弹出胜利界面,点击右上角返回键返回菜单。

三、详细设计

3.1 游戏模块划分

游戏划分为5个模块,分放在5个包里。

1.数据类

用来管理游戏中的静态数据,有3个文件,分别是游戏静态数据管理类、Activity、消息类

2.辅助类

这个类中存放自定义的辅助类,有4个文件,分别是自定义按键类、图片处理类、屏幕管理的两个类

3.视图类

存放3个View类

4.线程类

存放两个线程类

5.对象类

存放蛇对象类

3.2 组件需求

需要的组件有3个View、1个Activity、两个线程。

3.4 视图切换

用消息机制进行View切换,在Activity中接收消息,各个View在适当的时候发送消息,Activity接收到消息之后控制View的切换。

四、编码分析

4.1 数据类

1.静态数据类Content.Java

这个类中存放游戏中的静态数据,包括各个按钮、背景的大小和位置,以及与蛇相关的静态数据。

2.消息类WhatMessage.java

public class WhatMessage {

public static final int GO_TO_GAME=0;

public static final int EXIT=1;

public static final int OVER_GAME = 2;

public static final int MENU = 3;

}

消息实际上就是int型的整数,消息必须是static final int型。

消息=0------开始游戏

消息=1------退出游戏

消息=2------游戏结束

消息=3------跳转菜单

3.游戏核心组件SnakeActivity.java

Activity主要用来切换View

代码如下:

public void sendMessage(int what)

{

Message msg1 = myHandler.obtainMessage(what);

myHandler.sendMessage(msg1);

}

Handler myHandler = new Handler(){ //处理各个SurfaceView发送的消息public void handleMessage(Message msg) {

switch(msg.what)

{

case WhatMessage.GO_TO_GAME:

gotoSnakeView();

break;

case WhatMessage.OVER_GAME:

gotoGameOverView();

break;

case WhatMessage.MENU:

gotoMenu();

break;

}

}

};

主要用到这两个函数:

第一个函数用来发送消息,在各个View中需要做跳转的时候,便调用Activity的这个函数,传入相应的参数,发送消息个Activity。

第二个函数用来接收消息,根据接收到的消息做相应的反应

各个响应函数代码如下:

public void gotoGameOverView(){

GameOverView = new GameOverView(this);

setContentView(GameOverView);

}

相关文档
最新文档