Java弹球游戏实验报告—chen汇总

合集下载

Visual Basic弹球游戏实验报告

Visual Basic弹球游戏实验报告

Visual Basic 课程设计报告课程设计题目:弹球游戏姓名:班级:指导老师:时间:一、实验目的学会使用Visual Basic设计、编写程序,掌握基本的常用控件的使用。

二、实验内容使用Visual Basic制作弹球游戏。

通过使用键盘控制挡板,使运动的小球不掉落,同时计算分数。

三、实验步骤1.创建游戏进入窗体(Form1)(1) 创建窗体,添加所需控件。

(2) 在“属性”窗口设置窗体和标签属性。

对象对象名属性名属性值事件名窗体Form Caption 弹球游戏2.0之是男人就撑过40秒无Icon (Icon) BorderStyle 3 Picture (Bitmap)标签Label1Caption 弹球游戏无Font 黑体BackColor &H00000000&ForeColor &H00808080&Label2Caption 开始游戏ClickBackStyle 0Font 宋体ForeColor &H00FFC0C0&Label3Caption 游戏帮助ClickBackStyle 0Font 宋体ForeColor &H00FFC0C0&Label4Caption 退出ClickBackStyle 0Font 宋体ForeColor &H00FFC0C0&Label5 Caption Copyright版权无所有(C)2009 曾聪BackColor &H00FFC0C0& Font 宋体ForeColor &H00000040&Label6Caption警告:本软件受版权法和国际条约的保护,未经授权擅自复制或传播本程序(或其中的任何部分),将受到严厉的刑事及民事制裁,并将在法律许可范围内受到最大可能的起诉. BackStyle 0Font 宋体Label7Caption是男人就撑过40秒BackStyle 0Font 黑体ForeColor &H00C0C0C0&(3) 设计代码。

java课程设计弹球

java课程设计弹球

java课程设计弹球一、教学目标本章节的教学目标旨在让学生掌握Java编程的基本技能,通过实践项目“弹球游戏”的设计与实现,培养学生的编程兴趣和解决问题的能力。

具体目标如下:1.理解Java编程语言的基本语法和结构。

2.掌握面向对象编程的思想,了解类和对象的概念。

3.熟悉常用数据结构,如数组、链表、栈和队列。

4.学习Java图形用户界面(GUI)编程,了解Swing组件的使用。

5.能运用Java语言编写简单的应用程序。

6.能运用面向对象的思想,设计并实现具有一定复杂度的软件系统。

7.熟练使用Java开发工具,如Eclipse或IntelliJ IDEA。

8.掌握调试和优化代码的方法。

情感态度价值观目标:1.培养学生对编程的兴趣,提高自主学习的积极性。

2.培养学生团队合作精神,学会在团队中分工协作。

3.培养学生面对挑战、解决问题的信心和能力。

二、教学内容本章节的教学内容以Java编程语言为基础,通过设计弹球游戏的项目,让学生掌握Java的基本语法、面向对象编程、GUI编程等知识。

教学大纲如下:1.Java基本语法:数据类型、运算符、控制结构、函数。

2.面向对象编程:类与对象、构造方法、封装、继承、多态。

3.Java常用数据结构:数组、链表、栈、队列。

4.Swing编程:窗口、按钮、文本框、图像显示等组件的使用。

5.事件处理:鼠标事件、键盘事件。

6.文件操作:文件的读取与写入。

7.项目实践:弹球游戏的设计与实现。

三、教学方法本章节采用讲授法、案例分析法、实验法等多种教学方法,以激发学生的学习兴趣和主动性。

1.讲授法:用于讲解Java基本语法、面向对象编程等理论知识。

2.案例分析法:通过分析典型案例,让学生了解Java编程的实际应用。

3.实验法:让学生动手实践,设计并实现弹球游戏项目。

4.小组讨论法:鼓励学生在小组内分工协作,共同完成项目任务。

四、教学资源本章节的教学资源包括教材、参考书、多媒体资料、实验设备等。

java弹球游戏代码_Java实现简单的弹球游戏

java弹球游戏代码_Java实现简单的弹球游戏

java弹球游戏代码_Java实现简单的弹球游戏本⽂实例为⼤家分享了Java实现简单的弹球游戏的具体代码,供⼤家参考,具体内容如下该程序主要是⽤于对java图形化界⾯编程进⾏联系,程序实现全部采⽤的是AWT包下的类。

程序仅做参考,供学习使⽤。

import java.awt.Canvas;import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.Frame;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.Timer;public class PinBallGame {//创建窗⼝对象private Frame frame = new Frame("弹球游戏");//桌⾯宽度private final int TABLE_WTDTH = 300;//桌⾯⾼度private final int TABLE_HEIGHT = 400;//球拍的⾼度和宽度private final int RACKET_WIDTH = 60;private final int RACKET_HETGHT = 20;//⼩球的⼤⼩private final int BALL_SIZE = 16;//定义变量,记录⼩球的坐标private int ballX = 120;private int ballY = 20;//定义变量,记录⼩球在x和y⽅向上分别移动的速度private int speedY = 10;private int speedX = 5;//定义变量,记录球拍的坐标private int racketX = 120;private final int racketY = 340;//定义变量,标识当前游戏是否已结束private boolean isOver = false;//声明⼀个定时器private Timer timer;//⾃定义⼀个类,继承Canvas,充当画布@SuppressWarnings("serial")private class MyCanvas extends Canvas{@Overridepublic void paint(Graphics g) {//TODO 在这⾥绘制内容if (isOver) {//游戏结束g.setColor(Color.BLUE);g.setFont(new Font("Times",Font.BOLD,30));g.drawString("游戏结束!", 50, 200);}else{//游戏中//绘制⼩球g.setColor(Color.RED);g.fillOval(ballX, ballY, BALL_SIZE, BALL_SIZE);//绘制球拍g.setColor(Color.PINK);g.fillRect(racketX, racketY, RACKET_WIDTH, RACKET_HETGHT); }}}//创建绘画区域MyCanvas drawArea = new MyCanvas();public void init() {//组装视图,游戏逻辑的控制//完成球拍坐标的变化KeyListener listener = new KeyAdapter() {@Overridepublic void keyPressed(KeyEvent e) {//获取当前按下的键int keyCode = e.getKeyCode();if (keyCode == KeyEvent.VK_LEFT) {//0) {racketX -= 10;}}if (keyCode == KeyEvent.VK_RIGHT) {//-> 应该向右移动if (racketX =(TABLE_WTDTH-BALL_SIZE)) {speedX = -speedX;}if (ballY <= 0 || (ballY > racketY-BALL_SIZE && ballX>racketX && ballX < racketX+RACKET_WIDTH)) { speedY = -speedY;}if (ballY > racketY-BALL_SIZE && (ballX < racketX || ballX > racketX+RACKET_WIDTH)) {//当前⼩球超出了球拍的范围,游戏结束//停⽌定时器timer.stop();//修改游戏是否结束的标记isOver = true;//重绘界⾯drawArea.repaint();}//更新⼩球的坐标,重绘界⾯ballX += speedX;ballY += speedY;//重绘界⾯drawArea.repaint();}};timer = new Timer(100, task);timer.start();drawArea.setPreferredSize(new Dimension(TABLE_WTDTH,TABLE_HEIGHT)); frame.add(drawArea);//设置frame最佳⼤⼩,并可视frame.pack();frame.setVisible(true);frame.setLocationRelativeTo(null);frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}public static void main(String[] args) {new PinBallGame().init();}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持脚本之家。

java弹球小游戏课程设计

java弹球小游戏课程设计

java弹球小游戏课程设计一、课程目标知识目标:1. 理解Java编程语言中面向对象的基本概念,包括类、对象、方法和属性;2. 掌握Java中图形用户界面(GUI)设计的基本原理,包括事件处理和图形绘制;3. 学会使用Java中的循环结构和条件语句实现逻辑控制;4. 了解坐标系统和动画原理在编程中的应用。

技能目标:1. 能够运用所学知识设计并实现一个简单的弹球小游戏;2. 学会使用Java中的Swing库进行界面设计和事件处理;3. 通过编程实践,掌握调试和修复代码中常见错误的能力;4. 培养创新思维和问题解决能力,能够对游戏进行优化和扩展。

情感态度价值观目标:1. 培养学生对计算机编程的兴趣,激发学习主动性和探究精神;2. 增强学生的团队合作意识,通过合作开发培养沟通与协作能力;3. 培养学生勇于克服困难、面对挑战的精神,提高自信心和自尊心;4. 使学生认识到编程与日常生活的紧密联系,培养将所学知识应用于实际的意识。

二、教学内容1. 面向对象编程基础:- 类与对象的概念- 构造方法与成员变量- 访问控制符- 继承与多态2. Java图形用户界面(GUI)设计:- JFrame窗口创建与布局管理- 事件处理机制- 组件的使用与定制3. Java编程逻辑控制:- 循环结构(for、while、do-while)- 条件语句(if-else、switch)- 方法调用的参数传递4. 游戏设计与编程实现:- 游戏场景设定与坐标系统- 动画原理与双缓冲技术- 弹球运动逻辑与碰撞检测- 游戏音效与背景音乐添加5. 教学内容的安排与进度:- 第一课时:面向对象编程基础,介绍类与对象的概念,编写简单的Java程序- 第二课时:Java图形用户界面设计,学习JFrame窗口创建和事件处理- 第三课时:Java编程逻辑控制,讲解循环结构和条件语句的使用- 第四课时:游戏设计与编程实现,分步骤实现弹球小游戏- 第五课时:游戏优化与扩展,对游戏进行调试优化,培养学生的创新思维教学内容参考教材相关章节,结合课程目标和学生的实际水平进行系统性地组织和安排。

java实验报告总结_java总结范文

java实验报告总结_java总结范文

java实验报告总结_java总结范文Java是一种功能强大的编程语言,近年来随着互联网的迅速发展,Java已经成为软件行业的主流开发语言。

本次实验旨在帮助学生熟悉Java的基本语法和算法,加强学生对Java的理解和应用能力。

实验工具本次实验使用的开发环境是Eclipse + JDK1.8,Eclipse是开源的Java集成开发环境,JDK1.8是Java Development Kit(Java开发工具包)的一个版本。

实验步骤1.实验一-Hello World!本实验是简单的Java编程,编写程序输出“Hello World!”。

这个例子非常简单,但是对于初学者来说,它是一个优秀的起点。

2. 实验二-数组本实验是关于Java中数组的基本操作,包括数组的定义、初始化、访问和遍历等基本操作。

本实验对变量和循环结构有更深入的理解和比较好的编程能力。

3. 实验三-递归本实验主要介绍递归的概念和应用。

递归是一种非常重要的编程技术,它的应用在算法设计中具有广泛的应用。

4. 实验四-线程本实验介绍了Java中线程的相关知识,包括线程的概念、创建线程和线程同步等。

由于Java是一种多线程语言,线程技术是Java编程中重要的一个部分。

实验结果通过这些实验,我对Java语法有了更深入的理解,包括如何定义、使用变量、循环结构和递归等等。

我还学习了Java中线程的相关知识,如何创建线程、线程同步和线程的多态性等等。

通过这些实验,我深入了解了Java语言和算法设计的基本概念。

我已经掌握了Java的基本语法和算法,并在实现算法时编写了一些有效的代码。

我相信这些经验和技能将对我未来的学习和职业发展有所裨益。

总结本次实验是一个非常好的实践机会,让我在实践学习的过程中更好地理解Java编程的基本知识和技能,并用所学的知识解决了很多实际问题。

它加强了我的Java基础,提高了我的编程能力,为我今后的个人发展和职业发展打下了坚实的基础。

《java游戏编程基础》实验任务练习

《java游戏编程基础》实验任务练习

《java游戏编程基础》实验任务书实验一弹跳小球游戏设计一实验目的通过设计和制作弹跳小球游戏来了解游戏程序的基本结构,理解游戏循环和双缓冲机制的基本原理,并掌握游戏运行框架的设计方法。

二实验内容学习和了解游戏基本框架的设计方法(参考教材第3章内容及相关代码),在此基础上设计弹跳小球游戏,实现小球在程序窗口边界反弹的效果。

要求实现如下功能:1. 创建游戏程序主窗体(GameFrame)和绘图面板(GamePanel);2. 设计游戏循环,并通过线程来控制游戏运行的帧速率;3. 在游戏逻辑更新部分实现小球的运动逻辑,使得小球可以朝着窗口四周移动,并在边界处反弹。

4. 在游戏绘制部分实现小球的图形绘制,并通过双缓冲机制消除屏幕闪烁。

5. 加入另一个小球,实现两个小球弹跳的效果。

三实验步骤1. 阅读实验要求,设计程序整体结构及各个类的功能。

2. 启动java开发环境,新建游戏项目。

3. 根据实验内容要求编写代码,以实现相应的功能。

4.书写实验报告,详细阐述代码编写的基本思想及主要过程。

四课时分配2课时五提交文档实验报告、源程序代码实验二贪食蛇游戏设计一实验目的通过设计和制作贪食蛇游戏来理解游戏程序的运行机制,同时学习运用java 的事件处理机制来改变游戏状态和传递控制命令。

二实验内容学习和了解贪食蛇游戏的基本设计思想(参考教材4.4节内容及相关代码),在此基础上进行改进,要求实现如下功能:1.当窗口最小化或被遮挡时暂停游戏;2.改变蛇的运动速度,按+号键加速,按-号键减速;3.手动控制蛇的移动,按下方向键时让蛇朝对应的方向移动,否则静止不动;4.能够添加多个食物,如当按下某个键后随机添加一个新食物(原来的食物不消失);5.添加游戏结束规则(比如蛇头碰到边界或蛇身时结束),并能重新开始游戏。

要求至少实现3个功能。

还可以根据自己的创意,加入更多功能。

三实验步骤1. 启动java开发环境,运行示例程序。

2. 阅读示例程序,分析程序整体结构及各个类的功能。

弹珠路径设计实验报告(3篇)

弹珠路径设计实验报告(3篇)

第1篇一、实验目的1. 掌握弹珠在斜面、水平面、曲线等不同路径上的运动规律。

2. 通过实验验证弹珠运动轨迹与斜面角度、路径形状等因素的关系。

3. 优化弹珠运动路径,提高弹珠运动效率。

二、实验原理弹珠在运动过程中,受到重力、摩擦力、空气阻力等因素的影响。

本实验主要研究弹珠在不同路径上的运动规律,通过调整斜面角度、路径形状等参数,观察弹珠运动轨迹的变化,分析影响因素。

三、实验器材1. 弹珠若干2. 弹珠发射装置3. 不同角度的斜面4. 水平面5. 曲线路径6. 秒表7. 测量尺8. 记录本四、实验步骤1. 将弹珠放在发射装置上,调整发射角度,使弹珠沿斜面运动。

2. 记录弹珠发射角度、斜面角度、弹珠运动轨迹。

3. 重复步骤1,改变斜面角度,观察弹珠运动轨迹的变化。

4. 将弹珠放在水平面上,调整发射角度,使弹珠沿水平面运动。

5. 记录弹珠发射角度、水平面运动轨迹。

6. 重复步骤4,改变发射角度,观察弹珠运动轨迹的变化。

7. 将弹珠放在曲线路径上,调整发射角度,使弹珠沿曲线路径运动。

8. 记录弹珠发射角度、曲线路径运动轨迹。

9. 重复步骤7,改变发射角度,观察弹珠运动轨迹的变化。

10. 分析实验数据,得出结论。

五、实验数据及结果分析1. 弹珠在斜面上的运动规律实验结果显示,当斜面角度增大时,弹珠运动距离变短,速度减小;当斜面角度减小时,弹珠运动距离变长,速度增大。

这是因为斜面角度增大,弹珠在斜面上的运动速度减小,导致运动距离缩短。

2. 弹珠在水平面上的运动规律实验结果显示,当发射角度增大时,弹珠运动距离变长,速度增大;当发射角度减小时,弹珠运动距离变短,速度减小。

这是因为发射角度增大,弹珠在水平面上的运动速度增大,导致运动距离变长。

3. 弹珠在曲线路径上的运动规律实验结果显示,当发射角度增大时,弹珠在曲线路径上的运动距离变长,速度增大;当发射角度减小时,弹珠在曲线路径上的运动距离变短,速度减小。

这是因为发射角度增大,弹珠在曲线路径上的运动速度增大,导致运动距离变长。

Java弹球游戏实验报告—chen汇编

Java弹球游戏实验报告—chen汇编

课程设计报告题目弹球小游戏姓名方成学号20专业java指导教师陈华恩2013年12 月30目录一、实验目的 (3)二、需求分析 (3)三、实验任务 (3)1、设计 (3)2、程序要求: (3)3、选作题: (3)四、开发工具与平台 (3)五、设计思路 (4)1、界面设计 (4)2、逻辑设计 (4)3、程序测试 (4)六、实验总结 (5)七、程序代码 (5)八、参考文献 (11)1.《疯狂java讲义》 (12)2.《算法导论》 (12)3.《java编程思想》 (12)一、实验目的1、熟练掌握java面向对象编程。

2、掌握Swing图形用户界面编程以及事件处理等,掌握java绘图技术。

3、掌握timer类的灵活使用4、培养独立查找资料,并解决问题的能力。

二、需求分析经典的碰撞球是一个的古老游戏,目的是在训练人的反应能力。

只有通过把所有的砖块消除完,才能顺利的完成任务。

游戏要求如下:1、实现球速度的随机性2、实现球碰撞到边缘或者砖块自动反弹3、实现游戏可以随时暂停4、实现游戏结束后能重新开始游戏三、实验任务1、设计设计并编程实现弹球程序:用户能通过菜单或者按钮新增一小球,该小球将从随机的位置出现,并具有随机颜色,随机速度以及随机的运动方向,小球沿初始方向匀速运动,当碰到窗口边缘时,小球将依据受力原理改变运动方向(可简化考虑,受力只改变小球的运动方向,小球仍按照初始速度匀速运动,且不考虑小球之间的碰撞)。

2、程序要求:(1)具备相应界面,并通过事件编程,实现相应的菜单或者按钮功能。

(2)使用timer,在程序窗口区域绘制小球,并以线程控制小球的移动,实现动画效果。

3、选作题:(1)实现奖励机制及关卡机制四、开发工具与平台JDK1.6+eclipse五、设计思路1、界面设计首先建立窗口类继承自JFrame。

该界面为主界面。

在加上按钮—开始与暂停在加入JPanel面板,用于图形界面.2、逻辑设计程序用过响应timer事件,按钮事件及键盘事件来管理程序的运行。

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

课程设计报告题目弹球小游戏姓名方成学号20专业java指导教师陈华恩2013年12 月30目录一、实验目的 (2)二、需求分析 (2)三、实验任务 (2)1、设计 (3)2、程序要求: (3)3、选作题: (3)四、开发工具与平台 (3)五、设计思路 (3)1、界面设计 (3)2、逻辑设计 (3)3、程序测试 (4)六、实验总结 (5)七、程序代码 (5)八、参考文献 (11)1.《疯狂java讲义》 (12)2.《算法导论》 (12)3.《java编程思想》 (12)一、实验目的1、熟练掌握java面向对象编程。

2、掌握Swing图形用户界面编程以及事件处理等,掌握java绘图技术。

3、掌握timer类的灵活使用4、培养独立查找资料,并解决问题的能力。

二、需求分析经典的碰撞球是一个的古老游戏,目的是在训练人的反应能力。

只有通过把所有的砖块消除完,才能顺利的完成任务。

游戏要求如下:1、实现球速度的随机性2、实现球碰撞到边缘或者砖块自动反弹3、实现游戏可以随时暂停4、实现游戏结束后能重新开始游戏三、实验任务1、设计设计并编程实现弹球程序:用户能通过菜单或者按钮新增一小球,该小球将从随机的位置出现,并具有随机颜色,随机速度以及随机的运动方向,小球沿初始方向匀速运动,当碰到窗口边缘时,小球将依据受力原理改变运动方向(可简化考虑,受力只改变小球的运动方向,小球仍按照初始速度匀速运动,且不考虑小球之间的碰撞)。

2、程序要求:(1)具备相应界面,并通过事件编程,实现相应的菜单或者按钮功能。

(2)使用timer,在程序窗口区域绘制小球,并以线程控制小球的移动,实现动画效果。

3、选作题:(1)实现奖励机制及关卡机制四、开发工具与平台JDK1.6+eclipse五、设计思路1、界面设计首先建立窗口类继承自JFrame。

该界面为主界面。

在加上按钮—开始与暂停在加入JPanel面板,用于图形界面.2、逻辑设计程序用过响应timer事件,按钮事件及键盘事件来管理程序的运行。

3、程序测试六、实验总结1、这次实验综合运用了GUI 编程,使我对多线程编程有了一定的了解,对java 的多线程机制有了一点理解,更加熟练的运用swing 组件设计界面,响应消息,接口的实现等等。

2、通过课程设计的编程和对编程过程中遇到的问题的思考,切实的提高了我的编程能力,通过这次课程设计,我巩固所了学过的知识,能用JAVA 熟练地运用其中的一些,进一步掌握了各个指令的功能是转向。

七、程序代码package com.fangcheng.ball.game;import java.awt.Font;import java.awt.event.*;import javax.swing.*;import java.util.ArrayList;import java.util.Random;public class BallGame extends JFrame implementsActionListener,KeyListener{private JPanel p;private JButton start;private JButton stop;private JLabel ball;private JLabel qiupai;private JLabel bg;//用来放置背景图片的JLabelprivate JLabel win;private JLabel over;private int x1=50;private int x2=15;private int y1=325;private int y2=340;//球与球拍的初始位置private Timer time;//周期性触发球的移动事件的timer对象private boolean isRight=false;//球是否向右移动private boolean isDow=false;//球是否为下降private boolean isOver=false;//是否游戏结束private boolean isYi=false;//球拍是否能移动private int xsudu=3;private int ysudu=3;//球的x,y速度,初始值为3private Random ran=new Random();//用于随机产生球的x,y速度private ArrayList<JLabel> removeBrickList;//被移除的砖块的list private ArrayList<JLabel> brickList; //游戏时砖块的listprivate Font font;/*** 构造器,参数为窗口标题* @param s*/public BallGame(String s){s uper(s);g ameShow();}/*** 用于游戏窗口绘制的方法*/public void gameShow(){//初始化组件I mageIcon img1=newImageIcon(BallGame.class.getResource("/images/ball.png"));I mageIcon img2=newImageIcon(this.getClass().getResource("/images/pa.png"));I mageIcon img3=newImageIcon(this.getClass().getResource("/images/kuang.png"));I mageIcon img4=newImageIcon(this.getClass().getResource("/images/win.gif"));I mageIcon img5=newImageIcon(this.getClass().getResource("/images/over.png"));I mageIcon img6=newImageIcon(this.getClass().getResource("/images/brick.gif"));I mageIcon img7=newImageIcon(this.getClass().getResource("/images/brick1.png"));I mageIcon img8=newImageIcon(this.getClass().getResource("/images/brick2.png"));f ont=new Font("微软雅黑", Font.PLAIN, 12);b all=new JLabel(img1);q iupai=new JLabel(img2);b g=new JLabel(img3);w in=new JLabel(img4);o ver=new JLabel(img5);p=new JPanel();s tart=new JButton("开始");s top=new JButton("暂停");s tart.setFont(font);s top.setFont(font);t ime=new Timer(10,this);b rickList=new ArrayList<JLabel>();r emoveBrickList=new ArrayList<JLabel>();//初始化砖块f or(int i=0;i<27;i++){JLabel temp;if(i%6==0)//用来给砖块加载不同的图片temp=new JLabel(img6);else if(i%6==1)temp=new JLabel(img7);else if(i%6==2)temp=new JLabel(img8);else if(i%6==3)temp=new JLabel(img7);else if(i%6==4)temp=new JLabel(img8);elsetemp=new JLabel(img6);brickList.add(temp);}//将砖块添加至面板f or(int i=0;i<brickList.size();i++){if(i<9){brickList.get(i).setBounds(25*i+10, 15, 20, 20);}else if(i<18){brickList.get(i).setBounds(25*(i-9)+10, 40, 20, 20);}else if(i<27){brickList.get(i).setBounds(25*(i-18)+10, 65, 20, 20);}p.add(brickList.get(i));}//置空布局管理器t his.setLayout(null);p.setLayout(null);//绝对位置布局组件p.setBounds(0, 0, 240, 500);s tart.setBounds(50, 400, 60, 30);s top.setBounds(140, 400, 60, 30);t his.setBounds(450, 100,246, 465);b all.setBounds(x1, y1, img1.getIconWidth(), img1.getIconHeight());q iupai.setBounds(x2, y2, img2.getIconWidth(),img2.getIconHeight());b g.setBounds(0, 0,img3.getIconWidth(), img3.getIconHeight());o ver.setBounds(10, 30, img4.getIconWidth(), img4.getIconHeight());w in.setBounds(10, 30, img5.getIconWidth(), img5.getIconHeight());//先将胜利与结束标签设为不可见o ver.setVisible(false);w in.setVisible(false);//添加监视器s tart.addActionListener(this);s top.addActionListener(this);q iupai.addKeyListener(this);//添加键盘监视器(为了防止焦点丢失造成的问题,将所有组件都添加键盘监视器)p.addKeyListener(this);s tart.addKeyListener(this);s top.addKeyListener(this);t his.addKeyListener(this);//加载组件p.add(ball);p.add(qiupai);p.add(over);p.add(win);p.add(bg);t his.add(start);t his.add(stop);t his.add(p);t his.setResizable(false);t his.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e){System.exit(0);}});t his.setVisible(true);}/*** 主程序入口* @param args*/public static void main(String[] args) {new BallGame("碰撞球");}/*** 发生操作的监视器*/public void actionPerformed(ActionEvent e) {if(e.getSource().equals(start)){if(isOver){x1=qiupai.getX()+30;y1=qiupai.getY()-15;//当游戏结束时按开始按钮,即二次开始游戏时将球的位置至于球拍上isOver=false;over.setVisible(false);win.setVisible(false);//遍历remove列表,将上次游戏移除的砖块再次绘制到面板(添加至bricklist)for(int i=0;i<removeBrickList.size();i++){removeBrickList.get(i).setVisible(true);brickList.add(removeBrickList.get(i));}}isYi=true;time.start();}else if(e.getSource().equals(stop)){if(!isOver){time.stop();//只有当游戏没有结束时,才能暂停}}else{//遍历砖块listfor(int i=0;i<brickList.size();i++){//如果小球与砖块发生重叠,将砖块从list里移除if(ball.getX()>=brickList.get(i).getX()&&ball.getX()<=brickList.g et(i).getX()+20&&ball.getY()<=brickList.get(i).getY()+20){//将需要移除的砖块保存到被移除的砖块的removeBrickListremoveBrickList.add(brickList.get(i));brickList.get(i).setVisible(false);brickList.remove(i);isDow=true; //与砖块碰撞后改变y轴方向}}//如果list空,则说明游戏胜利if(brickList.size()==0){win.setVisible(true);time.stop();isOver=true;}if(y1<340){//如果球的y轴超过该数值,则表明球已经掉到球拍下面,即游戏结束if(isDow){if(isRight){x1+=xsudu;y1+=ysudu;}else{x1-=xsudu;y1+=ysudu;}}else{if(isRight){y1-=ysudu;x1+=xsudu;}else{x1-=xsudu;y1-=ysudu; //绘制球的运动轨迹}}if(x1>210) //超出范围改变左右方向i sRight=false;//如果小球与球拍发生重叠,小球反弹。

相关文档
最新文档