打砖块JAVA课程设计报告

上传人:时间****91 文档编号:154073112 上传时间:2022-09-20 格式:DOCX 页数:16 大小:18.55KB
收藏 版权申诉 举报 下载
打砖块JAVA课程设计报告_第1页
第1页 / 共16页
打砖块JAVA课程设计报告_第2页
第2页 / 共16页
打砖块JAVA课程设计报告_第3页
第3页 / 共16页
资源描述:

《打砖块JAVA课程设计报告》由会员分享,可在线阅读,更多相关《打砖块JAVA课程设计报告(16页珍藏版)》请在装配图网上搜索。

1、Java课程设计报告 XX / XX 学年 第 X 学期项目名称: 打砖块游戏 项目负责人: XXX 学号: XXXXX 同 组 者: XXX 学号: XXXXX 同 组 者: XX 学号: XXXXX 指导教师: XXX 班级: XXXXXXX 课程设计时间:XXXXXXXXXXXXXXXXXXXX课程设计地点: XXXXXXXXX 课程设计目的与要求 JAVA程序设计是计算机相关专业的必修专业基础课程,起实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完JAVA程序设计课程后,进行的一次全面的综合训练,JAVA程序设计的实际目的是加

2、深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合应用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。能够针对具体的有一定代表性的综合应用类课题设计、分析,全面掌握面向对象的思想、JAVA语言的应用技巧、方法,通过该课程设计使学生进一步理解和掌握利用JAVA开发综合系统的过程,学会用Eclispe、Jbuilder等开发工具。同时培养学生的合作意识和团队精神。培养学生对实际系统的采用面向对象的方法进行分析与设计能力,从而是学生提高JAVA语言运用与开发的综合力。课程设计题目软件系统名称:JAVA打砖块人员安排:

3、学号姓名职责XXXXX界面设计、代码编写 XXXXX代码编写、流程图XX XXX程序测试、BUG修复、写报告任务目的:1 实现游戏的正常运行;2. 培养JAVA程序开发与设计的兴趣;3 培养团队合作意识;程序中使用的数据结构和符号说明HitBrick类GreenBallThread 控制小球路线xUp,yUp,bouncing 定义变量存储16位数值形式x,y 小球坐标xDx,yDy 坐标增量MAX_X,MAX_Y 坐标最大值renew 初始化label 标签Rx,Ry 横板坐标Brick 砖块ball 小球HitBrick() 定义小球横板及砖块位置坐标keyPressd(keyEent)

4、定义小球启动键(按空格键启动)keyReleased(keyEvent) 接收键盘事件侦听器接口)keyTyped(keyEvent) 键入空格键时调用keyEventpaint(Graphics) 对砖块填充颜色move 定义小球的运动轨迹和砖块的消失main 主函数BallThread类通过继承Thread类使Ball类线程化,并把小球的弹跳动作放进Run()中执行Brick类定义砖块坐标位置和砖块按钮Ball类定义小球坐标位置程序设计流程程序中使用的部分方法解释开始命令:空格键private JLabel label;定义一个标签,label=new JLabel(按空格键开始);内容为

5、空格键开始,addKeyListener(this);定义一个键盘监听器,if (e.getKeyCode() =e.VK_SPACE) if(renew) greenBallThread=new BallThread(this); bouncing = true; greenBallThread.start(); label.setVisible(false); renew=false; 重置并开始游戏移动命令:方向键左键和右键if(e.getKeyCode()=e.VK_LEFT) Rx=Rx-20; if(bouncing) if(Rx0) Rx=0; else if(Rx300) Rx

6、=220; else if(Rx+80300) Rx=220; else x=x+20; ball.ball_x=x; repaint(); 向右移动同向左移动原理,因为定义界面横坐标最大值为300,横板长度80,故Rx=220时碰最右侧砖块设定:brick0=new Brick(0,60,50,20); brick1=new Brick(50,60,50,20); brick2=new Brick(100,60,50,20);brick16=new Brick(200,160,50,20); brick17=new Brick(250,160,50,20); ball=new Ball(15

7、0,450,10,10); public void paint(Graphics g) super.paint(g); ball.rect.setLocation(x,y); if(bouncing) for(int i=0;i=17;i+) if(bricki.visible=true) switch(i) case 0 :g.setColor(Color.blue); break; case 1 :g.setColor(Color.cyan); break; case 2 :g.setColor(Color.gray); break; case 17 :g.setColor(Color.y

8、ellow); break; g.fill3DRect(bricki.brick_x,bricki.brick_y,bricki.brick_width,bricki.brick_height,true); g.setColor(Color.red); g.fillOval(x, y, 10, 10); g.setColor(Color.blue); g.fillRect(Rx,Ry,80,20);brick0=new Brick(0,60,50,20);设置砖块坐标,ball=new Ball(150,450,10,10);和小球的坐标if(bricki.visible=true) 判断砖块

9、存在,用switch语句,逐个对砖块填充颜色,最后四行代码是分别对小球和横板颜色坐标的定义小球的移动:try Thread.currentThread().sleep(25); catch(InterruptedException exception) System.err.println(exception.toString(); 定义小球的速度,若发生错误,则执行catch语句,打印错误for(int i=0;iRx&x+5=Ry) yUp=false; xDx=(int)(Math.random()*5+2); yDy=(int)(Math.random()*5+2); 判断小球坐标和横

10、板坐标,当小球落在横板坐标之内,小球反弹,小球横坐标和纵坐标都以一个随机值改变后运动if(xUp=true) x+=xDx; else x-=xDx; if(yUp=true) y+=yDy; else y-=yDy; 判断小球横坐标如果在增加,小球横坐标=小球原横坐标+小球横坐标增量,否则小球横坐标=小球原横坐标-小球横坐标增量;纵坐标同理if(y=MAX_Y-15) yDy=(int)(Math.random()*5+2); /yUp=false; break; 判断小球到画面顶部(定义顶部的纵坐标为0),小球向下反弹,原理同小球和横板接触的反弹规则,否则,判断小球纵坐标是否大于MAX_Y

11、-15(纵坐标最大值-15),反弹规则改变为横坐标不变,纵坐标随机改变if(x=MAX_X-10) x=MAX_X-10; ball.ball_x=x; xDx=(int)(Math.random()*5+2); yDy=(int)(Math.random()*5+2); xUp=false; 判断小球到画面最左侧(定义最左侧横坐标为0),向右侧反弹,反弹规则同小球和横板接触的反弹规则,或者小球到画面最右侧,向左反弹,反弹规则同上,(if(x=MAX_X-10)判断小球是否到右边侧,小球的直径为10)int i; for(i=0;i=17&bricki.visible=false;i+) if

12、(i=18) break; 如果所有砖块都不可见,则重新玩renew=true; /初始化 bouncing=false; for(int i=0;i=17;i+) bricki.visible=true; xUp=true; yUp=false; xDx=1; yDy=1; x=150; y=450; Rx=120; Ry=460; /重新开始,初始化,小球静止,所有砖块可见,小球在横坐标方向,可随横板移动而移动,纵坐标在未开时游戏前不能改变,定义小球横坐标和纵坐标增量都为1,小球初始位置坐标(150,450)横板初始位置坐标(120,460)开始初始化Hitbrick类重置砖块信息横板接到

13、小球所有砖块都消失重新开始NY源程序import java.awt.*;import javax.swing.*;import java.awt.event.*;import javax.swing.event.*;public class HitBrick extends JFrame implements KeyListener private BallThread greenBallThread;/控制小球的线程 private boolean xUp,yUp,bouncing; private int x,y,xDx,yDy;/小球坐标,增量 private final int MAX

14、_X=300,MAX_Y=500; private boolean renew; private JLabel label; private int Rx,Ry;/横板坐标 private Brick brick=new Brick18;/砖块 private Ball ball;/小球 public HitBrick() super(打砖块); Container pane=getContentPane();/设置空白面板容器 label=new JLabel(按空格键开始); /标签 label.setHorizontalAlignment(JLabel.CENTER);/水平 label

15、.setVerticalAlignment(JLabel.BOTTOM);/垂直 pane.add(label);/向面板里添加标签 xUp=true;/横坐标可以移动 yUp=false;/纵坐标不可以移动 xDx=1; yDy=1; x=150;/小球坐标 y=450; Rx=120;/横板坐标 Ry=460; renew=true; bouncing=false; addKeyListener(this);/键盘监听器 brick0=new Brick(0,60,50,20);/砖块坐标 brick1=new Brick(50,60,50,20); brick2=new Brick(10

16、0,60,50,20); brick3=new Brick(150,60,50,20); brick4=new Brick(200,60,50,20); brick5=new Brick(250,60,50,20); brick6=new Brick(0,90,50,20); brick7=new Brick(50,110,50,20); brick8=new Brick(100,130,50,20); brick9=new Brick(150,130,50,20); brick10=new Brick(200,110,50,20); brick11=new Brick(250,90,50,2

17、0); brick12=new Brick(0,160,50,20); brick13=new Brick(50,160,50,20); brick14=new Brick(100,160,50,20); brick15=new Brick(150,160,50,20); brick16=new Brick(200,160,50,20); brick17=new Brick(250,160,50,20); ball=new Ball(150,450,10,10);/球的坐标 setSize(MAX_X,MAX_Y);/窗口大小 setResizable(false); setVisible(

18、true );/可视化 public void keyPressed(KeyEvent e) if (e.getKeyCode() =e.VK_SPACE) if(renew) greenBallThread=new BallThread(this); bouncing = true; greenBallThread.start(); label.setVisible(false); renew=false; if(e.getKeyCode()=e.VK_LEFT) Rx=Rx-20; if(bouncing) if(Rx0) Rx=0; else if(Rx300) Rx=220; else

19、 if(Rx+80300) Rx=220; else x=x+20; ball.ball_x=x; repaint(); public void keyReleased (KeyEvent e) public void keyTyped (KeyEvent e) public void paint(Graphics g) super.paint(g); ball.rect.setLocation(x,y); if(bouncing) for(int i=0;i=17;i+) if(bricki.visible=true) switch(i) case 0 :g.setColor(Color.b

20、lue); break; case 1 :g.setColor(Color.cyan); break; case 2 :g.setColor(Color.gray); break; case 3 :g.setColor(Color.green); break; case 4 :g.setColor(Color.magenta); break; case 5 :g.setColor(Color.yellow); break; case 6 :g.setColor(Color.white); break; case 7 :g.setColor(Color.black); break; case 8

21、 :g.setColor(Color.orange); break; case 9 :g.setColor(Color.pink); break; case 10 :g.setColor(Color.darkGray); break; case 11 :g.setColor(Color.red); break; case 12 :g.setColor(Color.blue); break; case 13 :g.setColor(Color.cyan); break; case 14 :g.setColor(Color.gray); break; case 15 :g.setColor(Col

22、or.green); break; case 16 :g.setColor(Color.magenta); break; case 17 :g.setColor(Color.yellow); break; g.fill3DRect(bricki.brick_x,bricki.brick_y,bricki.brick_width,bricki.brick_height,true); g.setColor(Color.red); g.fillOval(x, y, 10, 10); g.setColor(Color.blue); g.fillRect(Rx,Ry,80,20); else for(i

23、nt i=0;i=17;i+) switch(i) case 0 :g.setColor(Color.blue); break; case 1 :g.setColor(Color.cyan); break; case 2 :g.setColor(Color.gray); break; case 3 :g.setColor(Color.green); break; case 4 :g.setColor(Color.magenta); break; case 5 :g.setColor(Color.yellow); break; case 6 :g.setColor(Color.white); b

24、reak; case 7 :g.setColor(Color.black); break; case 8 :g.setColor(Color.orange); break; case 9 :g.setColor(Color.pink); break; case 10 :g.setColor(Color.darkGray); break; case 11 :g.setColor(Color.red); break; case 12 :g.setColor(Color.blue); break; case 13 :g.setColor(Color.cyan); break; case 14 :g.

25、setColor(Color.gray); break; case 15 :g.setColor(Color.green); break; case 16 :g.setColor(Color.magenta); break; case 17 :g.setColor(Color.yellow); break; g.fill3DRect(bricki.brick_x,bricki.brick_y,bricki.brick_width,bricki.brick_height,true); g.setColor(Color.red); g.fillOval(x, y, 10, 10); g.setCo

26、lor(Color.blue); g.fillRect(Rx, Ry, 80, 20); public void move() while(true) try Thread.currentThread().sleep(25); catch(InterruptedException exception) System.err.println(exception.toString(); for(int i=0;iRx&x+5=Ry) yUp=false; xDx=(int)(Math.random()*5+2);/小球坐标增量 yDy=(int)(Math.random()*5+2); if(xU

27、p=true) x+=xDx;/小球左右移动坐标改变 else x-=xDx; if(yUp=true) y+=yDy; else y-=yDy; if(y=MAX_Y-15) yDy=(int)(Math.random()*5+2); /yUp=false; break; if(x=MAX_X-10) x=MAX_X-10; ball.ball_x=x; xDx=(int)(Math.random()*5+2); yDy=(int)(Math.random()*5+2); xUp=false; ball.rect.setLocation(ball.ball_x,ball.ball_y); r

28、epaint(); int i; /如果所有砖块都不可见 for(i=0;i=17&bricki.visible=false;i+) /则重新玩 if(i=18) break; / renew=true; /初始化 bouncing=false; for(int i=0;i=17;i+) bricki.visible=true; xUp=true; yUp=false; xDx=1; yDy=1; x=150; y=450; Rx=120; Ry=460; / repaint(); repaint(); label.setVisible(true); public static void ma

29、in(String args) HitBrick mar=new HitBrick(); class BallThread extends Thread private HitBrick m; BallThread(HitBrick a) /super(); m=a; public void run() m.move(); m.repaint(); class Brick Rectangle rect=null; /长方形对象,砖块按钮的位置和宽高 int brick_x,brick_y;/按扭的左上角坐标 int brick_width,brick_height; /按扭的宽和高 boole

30、an visible; public Brick(int x,int y,int w,int h) brick_x=x;brick_y=y; brick_width=w;brick_height=h; visible=true; rect=new Rectangle(x,y,w,h); /创建长方形对象-砖块按钮的位置和宽高。 class Ball Rectangle rect=null; int ball_x,ball_y; int ball_width,ball_height; public Ball(int x,int y,int w,int h) ball_x=x; ball_y=y;

31、 ball_width=w; ball_height=h; rect=new Rectangle(x,y,w,h); 小结与体会虽然系统的基本功能都已实现,但还是存在系统不稳定等多个问题尚待解决。这个系统主要是我自己开发的,但也得到了老师和同学的很大帮助。我正在做系统的过程中遇到了很多问题,有的是知识存储不足,有的是考虑不够周全,之所以能够顺利实现基本功功能,离不开老师和同学的大力相助。事实证明,只靠自己是不能顺利完成一套功能完整的系统的,必须充分利用团队的力量。我们不可能做到面面俱到,但一定要做到步步扎实,作为一个程序编程人员,要保持清醒的头脑,以现实为依据,让自己的每一行代码都能实现自己的意义。通过这次课程设计,我收获的不仅仅是课程上的知识得到实际应用,还有编程的基本习惯和开发系统时应注意的流程总之,作为一门程序设计语言,Java 的学习务必要做到多看多写多想多请教。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!