《JAVA课程设计打砖块(共41页).doc》由会员分享,可在线阅读,更多相关《JAVA课程设计打砖块(共41页).doc(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上Java程序课程设计任务书一、主要内容 打砖块游戏是一种动作电子游戏的名称。玩家操作一根萤幕上水平的“棒子”,让一颗不断弹来弹去的“球”在撞击作为过关目标消去的“砖块”的途中不会落到萤幕底下。球碰到砖块、棒子与底下以外的三边会反弹,落到底下会失去一颗球,把砖块全部消去就可以破关。二、具体要求通过图形用户界面(Graphics User Interface,GUI)和线程,使用户和程序之间可以方便地进行交互。运用Swing组件,编写小应用程序游戏,加深对Java语言的理解,深入地了解图形用户界面的设计,更加熟练地运用编程软件。功能要求:(1) 游戏运行需键盘的操作;(2
2、) 游戏可统计分数;(3) 球落到底下会失去一颗,按ENTER可重新开始。开发工具:JCreater软件;开发技术: J2ME。三、进度安排12月28日:课程设计选题,查找参考资料12月29日: 完成打砖块游戏程序设计分析12月30日 1月3日: 完成程序代码的编写1月4日 1月5日:游戏测试与完善1月6日 1月7日:完成课程设计报告,准备答辩四、主要参考文献1 (美) 埃克尔著 陈昊鹏,饶若楠等译. Java编程思想J. 机械工业出版社,20052(美)Gary 著 张珑 刘雅文译. Java编程原理J. 清华大学出版社,20043(美)Michael Morrison著 徐刚,于健,薛雷译
3、. 游戏编程入门J. 人民邮电出版社,4(美)Wendy Stahler著 冯宝坤,曹英译. 游戏编程中的数理应用J. 红旗出版社,20055(美)克罗夫特(David Wallace Croft)著 彭晖译. Java游戏高级编程J. 清华大学出版社,20056 (美)David Brackeen著 邱仲潘译. Java游戏编程J. 科学出版社,20047 聂庆亮编著. Java应用开发指南J. 清华大学出版社,20108 耿祥义,张跃平编著. Java面向对象程序设计J. 清华大学出版社,20109 杨绍方编著. Java编程实用技术与案例J. 清华大学出版社,10 明日科技编著. Jav
4、a编程全能词典J. 电子工业出版社,2010摘要随着Java语言的不断发展和壮大,现在的Java已经广泛的应用于各个领域,包括医药,汽车工业,手机行业,游戏,等等地方。Java游戏的开发为满足人们娱乐所需而设计。本游戏为打砖块游戏,是基于Java的图形用户界面而开发的,可以放松心情的小游戏。游戏从系统操作简便、界面友好、灵活、上手即会的基本要求出发,完成整款游戏的开发。游戏更设置了暂停、计分、音乐、速度,用户信息保存等功能,可以根据自己的爱好,挑战更高难度,为用户带来愉悦的体验。本课程设计报告介绍了游戏的构想,分析,开发,实现的过程。论述了游戏的功能开发,设计构思。给出了游戏的设计步骤,游戏系
5、统关键的设计思想;在游戏系统实现章节给出了部分功能流程和相关代码。关键词:游戏,打砖块 目 录专心-专注-专业第1章 引言 背景游戏是全球最大的娱乐经济项目之一,已经被命名为“第九艺术”。而由“游戏”派生出来的职业,除了软件开发外,游戏包装宣传推广、攻略指导、网络游戏管理员和职业游戏玩家等,已成为了一系列专门的岗位。面对游戏产业如此巨大的市场空间,国内各大城市纷纷加大了这方面的人才培养,中国的游戏人才培训已随着游戏行业的总体发展开始逐步迈入了正轨。虽然说中国的游戏行业开始逐步的迈入了正轨,但是现今,游戏人才出现严重的瓶颈时期,高校的扩招、金融危机的侵袭直接影响着我们最关心的就业问题,但是另一方
6、面游戏人才的缺乏又直接制约着行业的发展,这就更加严格了对社会培训机构的稳定性和正规性的要求。在我国,游戏人才培养体系还未健全,部分开设了相关专业的高校,游由于理论和实践的脱离无法完全满足网游公司对人才的需求。所以,就中国目前的市场分析来看,加强游戏产业必须在多渠道人才培养体系上加快突破,尽快建立起多渠道人才培养体系,来满足社会对游戏人才的需求。 课程设计内容打砖块游戏是一种动作电子游戏的名称。玩家操作一根萤幕上水平的弹板,让一颗不断弹来弹去的“球”在撞击作为过关目标消去的“砖块”的途中不会落到萤幕底下。球碰到砖块、弹板与底下以外的三边会反弹,落到底下会失去一颗球,把砖块全部消去就可以破关。游戏
7、的功能包含以下内容:(1)基本的游戏操作 用户可以通过鼠标或者键盘来操作弹板,尽量让弹球不要掉下底下。开始按钮和暂停按钮可以控制游戏的进行。(2)宝物获得功能 用户在游戏过程中,可能获得相关的宝物,可以使弹板增长一部分。(3)速度设置功能 本游戏有5个速度设置,可以根据用户的需要,调节到用户想要的速度进行游戏。(4)音乐设置功能 用户可以根据自己的喜好,选择自己喜欢的音乐,或者是关掉它。(5)用户注册登录功能每个用户在游戏开始时都要输入用户的信息注册,登录,并记录。当用户退出游戏以后,系统将记录用户的游戏信息。(6)计分,记时功能用户在游戏的过程中,系统将记录游戏的成绩,并保存在文件中,用户退
8、出游戏后也可以查询成绩。 任务分工第二章 弹砖块小游戏应用程序 弹砖块小游戏应用程序概述此程序设计是一个小游戏(弹砖块)的实现,主要运用了用户图形界面,程序接口和基本函数绘制来实现,事件监听(包括鼠标事件,键盘事件,响应时间)也是这个程序的特色。此程序用到了图片的引用,砖块、弹板应用了函数绘制和图片引用,弹球的设计外且安全是应用函数绘制。游戏还利用JAVA Applet实现了播放声音。再加入复选框,按钮,标签等来实现本游戏用户界面布局。总之,本游戏在用户界面的可操作性、游戏的美观度、计分计时存储结果方便都基本完善,有一定的可玩性。 打砖块小游戏系统任务及目的 此小程序是为群众闲暇消遣之用,玩家
9、在进入游戏后输入自己的大名,按游戏规则用弹球打掉弹板上的全部砖块,获得相应的分数,进入下一关,知道全部过关,游戏结束后可记录玩家分数及排行榜名次进入游戏界面,一个文本框可以选择是否记录游戏这名字,接着是“开始”、“暂停”、“重新开始”按钮以及四个复选框分别控制背景音乐、速度、模型和关卡,还有四标签记录时间、生命分数和排行榜数据。 主要特色系统介绍游戏增加了背景音乐以及碰撞音乐的设置,并用图片代替了纯粹用函数构造出的砖块,使玩家在使用此程序时更加能体验到乐趣。自主选关、模式选择和速度选择给了玩家更多的自主机动性,使得玩家可以根据自己的意愿来设定游戏难度,排行榜功能也是特色之一,玩家可以根据排行榜
10、来了解自己玩的如何,可以有个相对的比较。 本章小结虽然游戏在功能和界面上不能算的上很棒,但是麻雀虽小,五脏俱全,游戏具备了弹砖块这个经典游戏锁应该具有的基本雏形。通过这一章,我们对这个游戏应该有了比较宏观的了解,我们将在这一基础上探究游戏更完美的改变。 第3章 打砖块游戏系统的设计这一章是打砖块游戏系统的设计,从系统需求分析开始,介绍开发环境和用到的开发工具,系统主要的功能设计,系统的数据流程图。 系统需求分析打砖块的设计目标为:(1)实现打砖块游戏功能,使用背景音乐,可用键盘或者鼠标控制挡板,并对游戏时间,游戏分数进行记录并保存成绩到文本,列出成绩排行榜。(2)实现游戏难度和游戏模型的选择,
11、通过本关后可以选择进入下一关。(3)得到不同宝物可以实现多种游戏功能,加强游戏可玩性。 系统开发及运行环境硬件平台:q CPU:INTEL-I5。q 内存:1024MB以上。软件平台:q 操作系统:Windows XP。q 数据库:TXT文档。q 开发工具包:JDK 。q 分辨率:最佳效果1024768像素。 系统主要功能要求本系统为了实现游戏打砖块。本系统主要实现如下功能:q 系统界面美观大方舒适。q 实现游戏一些基础信息的保存和读取。q 画面流畅,具有可玩性q 没有较大的游戏BUG。q 显示游戏者的游戏时间和积分。q 存储玩家的积分。q 实现多种难度的选择。q 实现多种砖块的排列模型。q
12、多种宝物可以实现不同的功能q 玩家可以输入名称存入数据库。q 系统最大限度地实现了易维护性和易操作性。 q 系统运行稳定、安全可靠。q 实现用户的注册及注册信息的保存 打砖块系统总体结构打砖块游戏是基于基本的软件和普通硬件基础上的传统优秀游戏,一个游戏应该包括以下几大功能,如图所示打砖块系统数据保存查询统计基础游戏功能用户注册输入姓名姓名得分记录查询游戏分数打砖块游戏难度调整游戏模型调整图 系统功能结构图各功能模块实现的功能为:游戏管理模块:实现基本的打砖块操作并实现游戏模型调整和游戏难度调整。查询统计:让玩家注册用户并保存它的游戏数据。实现游戏分数的查询。游戏管理模块图如图所示。游戏管理模块
13、打砖块功能实现模块游戏模型调整模块游戏难度调整模块图游戏管理功能模块图查询统计模块图如图所示查询统计输入用户名姓名得分记录查询分数模块用户注册信息保存图 查询统计功能模块图 系统数据流图游戏信息的流向,即系统数据流图如图所示。游戏注册和信息保存开始游戏并记录分数显示玩家得分存储玩家得分并判断能否进排行榜更改玩家游戏分数输出玩家分数榜图系统数据流图 本章小结本章是打砖块游戏的具体设计过程,有具体的需求分析、系统功能模块、系统数据流图。这里我们开始接触JAVA程序设计的最初步骤,也是很重要的一步。第4章 系统数据库设计本章是打砖块的数据库设计,有了数据库,就可以对游戏的成绩,玩家姓名进行保存,提高
14、游戏的可玩性、竞争性数据库设计过程数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库应用系统,使之能有效的存储数据,满足各种用户的应用需求。数据库设计方法是研究数据库及其应用系统的技术,是数据库在应用领域中的主要的研究课题。需求分析打砖块的游戏存储需要两部分:一是游戏姓名注册以及存储,二是游戏分数存储功能实现 运用较为简单的java程序代码,先需要注册用户名,效果如图将游戏数据存入一个名为的文本文档。实现效果如下图 图 图 游戏信息的存储 本章小结本章是打砖块游戏系统的数据库开发。采用的是TXT文本 。第5章 系统的具体实现界面是系统和玩家之间最直接的交互界面,界面的友好性
15、体现了程序设计的质量,界面是否便捷易懂也是程序所基本的要求。界面设计 用户登录界面图 游戏主界面 上图就是进入游戏后的界面,接下来用一个框图来表现界面的说明。界面的初始化的关键代码为:public class Game extends JFrame implements Runnable, KeyListener,ActionListener private String s = new String(打砖块游戏);ength; j+) Brick = i * (800 / m);brickij.yBrick = j * (200 / n);if (brickij.alive = 1) (im
16、g2, (int) brickij.xBrick,(int) brickij.yBrick,(int) brickij.width,(int) brickij.heigh, null);live = 1) (int) treasurek.xtreasure,(int) treasurek.ytreasure,(int) treasurek.width, (int) treasurek.height,true);用户注册登录系统下面给出登录功能的主要代码 public void loginDialog() login = new JDialog(); (登录); (new FlowLayout(
17、); (new JLabel(用户名:); (name); (new JLabel(密 码:); (*); (password); JButton confirm = new JButton(登录); (new ActionListener() public void actionPerformed(ActionEvent e) if (compareUserData().trim(), new String() (false); (true); else (login, 用户名或密码错误!, 错误提示, ; ); (confirm); final JDialog regDialog = ne
18、w JDialog(login, 注册, true); registerDialog(regDialog); JButton register = new JButton(注册); (new ActionListener() public void actionPerformed(ActionEvent e) (true); ); (register); (200, 130); (false); (null); (true); 游戏结果的存储此功能将用户游戏后的结果存入TXT文档中关键代码如下public boolean saveUserData(String name, String sex
19、, String password1, String password2) if (!(password2) return false; try RandomAccessFile out = new RandomAccessFile(, rw);();(name);(sex);(password1);(); catch (IOException e) ();return false; return true; Java编程思想J. 机械工业出版社,20052(美)Gary 著 张珑 刘雅文译. Java编程原理J. 清华大学出版社,20043(美)Michael Morrison著 徐刚,于健
20、,薛雷译. 游戏编程入门J. 人民邮电出版社,4(美)Wendy Stahler著 冯宝坤,曹英译. 游戏编程中的数理应用J. 红旗出版社,20055(美)克罗夫特(David Wallace Croft)著 彭晖译. Java游戏高级编程J. 清华大学出版社,20056 (美)David Brackeen著 邱仲潘译. Java游戏编程J. 科学出版社,20047 聂庆亮编著. Java应用开发指南J. 清华大学出版社,20108 耿祥义,张跃平编著. Java面向对象程序设计J. 清华大学出版社,20109 杨绍方编著. Java编程实用技术与案例J. 清华大学出版社,10 明日科技编著.
21、 Java编程全能词典J. 电子工业出版社,2010附录 源代码此游戏包含8个java文件,, , , , , , , 。package s;import .*;import .*;public class NextNew extends JFrame implements ActionListener JPanel jp0; JButton ok;JButton quit;public NextNew()super(打砖块);setSize(300,150);setLocation(300, 300);setBackground;jp0=new JPanel();ok=new JButton
22、(确定);quit=new JButton(退出);(ok);(quit);setLayout(new BorderLayout();add(North,(new JPanel().add(new JLabel( 恭喜你!过关了!);add(Center,(new JPanel().add(new JLabel( 是否继续下一关?);add(South,jp0);setVisible(true);Overridepublic void actionPerformed(ActionEvent e) ;import .*;import .*;import .*;public class SetMu
23、sic extends JFrame implements ActionListener,ItemListenerprivate int choice=0;public static String s1=new String();private boolean firststart=true; JPanel jp1; JPanel jp2; JPanel jp3; JLabel BackMusic; JComboBox SelectMusic;JButton MusicStop;JLabel FireVoice;JButton FVOpen;JButton FVClose;JButton ok
24、;public static SelectMusic music;public SetMusic();import .*;import .*;public class SetSpeed extends JFrame implements ActionListener,ItemListener JPanel jp_1; JPanel jp_2; ButtonGroup group=new ButtonGroup(); public static JRadioButton speed1; JRadioButton speed2; JRadioButton speed3; JRadioButton
25、speed4; JRadioButton speed5; JButton ok; public SetSpeed()setTitle(设置速度);setSize(500,150);setLocation(300, 300);setBackground;jp_1=new JPanel();jp_2=new JPanel();speed1=new JRadioButton(慢速);speed2=new JRadioButton(较慢);speed3=new JRadioButton(中速);speed4=new JRadioButton(较快);speed5=new JRadioButton(快速
26、);ok=new JButton(确定); (speed1);(speed2);(speed3);(speed4);(speed5);(speed1);(speed2);(speed3);(speed4);(speed5);(ok);setLayout(new BorderLayout();add(North,(new JPanel().add(new JLabel(请选择速度等级!);add(Center,jp_1);add(South,jp_2);(this);(this);(this);(this);(this);(this);setVisible(false);Overridepubl
27、ic void actionPerformed(ActionEvent e) ;import .*;import class Game extends JFrame implements Runnable, KeyListener,ActionListener private String s = new String(打砖块游戏);rim(), new String() (false); (true); else (login, 用户名或密码错误!, 错误提示, ; ); (confirm); final JDialog regDialog = new JDialog(login, 注册,
28、true); registerDialog(regDialog); JButton register = new JButton(注册); (new ActionListener() public void actionPerformed(ActionEvent e) (true); ); (register); (200, 130); (false); (null); (true); rim(), sex, new String(), new String()(false);else(regDialog, 输入有误,请检查, 错误提示,;);(new ActionListener() pub
29、lic void actionPerformed(ActionEvent arg0) (false);); /* * 初始化变量 * */public void initvariable() hours = 0;minutes = 0;seconds = 0;speed = (toolgate);life = 3;isstop = true;setpaddle = true;setball = true;model = 0;switch (toolgate) case 0:m = 4;n = 5; = 30; = 150;try img2 = (new File(); catch (IOExc
30、eption e1) ();break;case 1:m = 8;n = 5; = 20; = 120;try img2 = (new File(); catch (IOException e1) ();break;default:m = 16;n = 5; = 10; = 90;try img2 = (new File(); catch (IOException e1) (); = + * ; = - ;brick = new Brickmn;for (int a = 0; a ; a+) treasurea = new Treasure();int k = new int4;for (in
31、t a = 0; a ; a+) ka = (int) () * (m * n);for (int j = 0; j brick0.length; j+) for (int i = 0; i ; i+) brickij = new Brick();brickij.width = 800 / m;brickij.heigh = 200 / n;brickij.alive = 1;for (int a = 0; a ; a+) if (i * j = ka) brickij.istreasure = a + 1;try img1 = (new File(); catch (IOException
32、e) ();/* * 主界面初始化函数 * */public void init() initvariable();GetMusic = new SetMusic();ength; j+) Brick = i * (800 / m);brickij.yBrick = j * (200 / n);if (brickij.alive = 1) (img2, (int) brickij.xBrick,(int) brickij.yBrick,(int) brickij.width,(int) brickij.heigh, null);live = 1) (int) treasurek.xtreasu
33、re,(int) treasurek.ytreasure,(int) treasurek.width, (int) treasurek.height,true);/* * 内部类MouseMove,鼠标控制挡板移动 * */class MouseMove extends MouseAdapter public void mouseMoved(MouseEvent e) if (setpaddle) = ().x - * ;if = getWidth() = getWidth() - ;if (setball) = + * ; = - ;repaint();/* * 键盘事件 * */publi
34、c void keyPressed(KeyEvent e) (false);(false);(false);(false);if (setpaddle) if () = -= 75;if = getWidth() = getWidth() - ;if (setball) = + * ; = - ;repaint();if () = | () = if (isstop) isstop = false;setpaddle = true;setball = false;(false);(true); else isstop = true;setpaddle = false;(true);(false
35、);/* * 响应事件 * */public void actionPerformed(ActionEvent e) Object obj = ();if (obj = gstart) ength; j+) for (int i = 0; i ; i+) if (model = 0) live = 1;if (model = 1) live = 1; elsebrickij.alive = 0;if (model = 2) live = 1; elsebrickij.alive = 0;if (model = 3) live = 1; elsebrickij.alive = 0;if (model = 4) live = 1; elsebrickij.alive = 0;public void iscompete() ength; j+) for (int i = 0; i ; i+) if (brickij.alive = 1) break;count+;if (count * (j + 1) = (brick0.length * ) int h = (null, 你得到+score+分,是否进入下一关?, 过关 ,;if (h = 1) (0); else nex
限制150内