贪吃蛇课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《面向对象程序设计》
课程设计报告
题目:贪吃蛇游戏设计与实现
院(系):信息科学与工程学院
专业班级:计科1302班
学生姓名:毛慧剑
学号:20131101057
指导教师:苏莹
2015年8月31日至2015年9月25日华中科技大学武昌分校制
面向对象程序设计课程设计任务书
目录
1需求与总体设计 (1)
1.1总体设计思路 (1)
1.2系统主要功能图 (1)
1.3系统主要类图 (2)
2详细设计............................................... 错误!未定义书签。
2.1 Login类............................................. 错误!未定义书签。
2.2 SnakeFrame类........................................ 错误!未定义书签。
2.3 SnakeModel类........................................ 错误!未定义书签。
2.4SnakePanel类 (3)
2. 5 LocationRO类... ......................................................错误!未定义书签。
2.6 Location类.............................................................错误!未定义书签。
3.编码实现 (4)
3.1 Login类的详细代码 (4)
3.2 SnakeFrame类的详细代码 (7)
3.3 SnakeModel类的详细代码 (12)
3.4 SnakePanel类的详细代码 (17)
3.5 LocationRO类的详细代码 (22)
3.6 Location类的详细代码 (23)
4系统运行与测试 (25)
4.1程序主界面 (25)
4.2游戏开始界面 (25)
4.3游戏操作界面 (25)
4.4游戏难度设置界面 (26)
4.5游戏窗口大小设置 (27)
4.6游戏软件开发人员介绍 (27)
5系统使用步骤 (28)
总结 (29)
1需求与总体设计
1.1总体设计思路
本系统要进行的是贪吃蛇游戏的开发。这个游戏是在窗口的平台上进行相关操作的。为了满足大部分用户的要求,本游戏必须实现的功能有如下要求:(1)贪吃蛇游戏是大家很常见的小游戏,在生活工作之余大家可以玩它,已达到放松各种压力的目的。
(2)游戏可以进行升级,也就是增加吃食物的难度,以便使大家更有挑战性,不觉得太无趣。
(3)游戏界面大小可以任意指定,数据从文件读入。
(4)利用swing实现良好的GUI界面。
(5)基本功能与要求:
给出1条小蛇和随机出一个食物当小蛇吃到食物时就加分.良好的用户界面,有分数显示,并且可调节小蛇运动速度。良好的方块形状设计,绘制小蛇和食物,小蛇有六个方块组成,食物由1个方块组成。小蛇可通过键盘方向键(上、下、左、右键)进行向上、向下、向左、向右移动。当小蛇吃掉一个食物后会变长,并且吃完食物时食物会消失,并立即随即生成一个新的食物
.
1.2系统主要功能图
贪吃蛇实现的基本功能:生成登录窗口界面,登录进入游戏,可以设置游戏的窗口大小和难度等级~ 游戏途中有暂停继续开始等基本功能。同时还设有游戏帮助等具体游戏操作指示、在加入了软件开发人员的相关信息介绍~结束游戏之后得分在窗口下自动统计得出~
图1-1系统功能图1.3系统主要类图
图1-2类图
2详细设计
2.1 Login 类
Login 类,登陆界面要求输入登陆者输入用户名和密码,分别设Go 和Cancel 两个登陆选项。 2.1.1
2.2 SnakeFrame 类
创建游戏窗口主界面。采用图形界面设计,有窗体,菜单栏和游戏操作界面。
2.3 SnakeModel 类
此类为蛇的初始化状态及模型,所有的游戏的开始都通过此类初始化及对蛇的操作。
2.4 SnakePanel类
此类为游戏界面创建蛇的面板和蛇的移动控制实现
2.5 LocationRO类
随机生成的食物位置。用来随机生成食物。引导蛇的移动方向。
2.6 Location类
对蛇的位置的描述类
3编码实现
1.Login类
//登陆界面
public class Login extends JFrame {
private TextField f1;//创建文本框
private TextField f2;
private JButton b1;//创建按钮
private JButton b2;
public Login() {//登陆界面
Container cp=getContentPane();//获取容器
cp.setLayout(new GridLayout(4,1));//设置布局管理为网格四行一列
Label l1=new Label("用户名");//创建标签了l1,l2
Label l2=new Label("密码");
Panel p1=new Panel();//创建面板,p1,p2,p3,p4
Panel p2=new Panel();
Panel p3=new Panel();
MyPanel1 p4=new MyPanel1();//创建插入图片平面p4
f1=new TextField(10);
f2=new TextField(10);
f2.setEchoChar('*');//回显字符为* 用于输入密码,设置为不可见
b1=new JButton("确定");//新建按钮b1,b2
b2=new JButton("取消");
p1.add(l1);//第一行添加label 1
p1.add(f1);
p2.add(l2);
p2.add(f2);
p3.add(b1);
p3.add(b2);
cp.add(p4);//面板p4,p1,p2,p3分别加入容器cp
cp.add(p1);
cp.add(p2);
cp.add(p3);
b1.addActionListener(new Enter());//添加按钮事件响应
b2.addActionListener(new Close());