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事件,按钮事件及键盘事件来管理程序的运行。

java实验实验报告

java实验实验报告

java实验实验报告Java 实验实验报告一、实验目的本次 Java 实验的主要目的是通过实际操作和编程实践,深入理解和掌握 Java 编程语言的基本概念、语法结构、面向对象编程的思想以及常用类库的使用。

同时,培养我们解决实际问题的能力和编程思维,提高代码的质量和可读性。

二、实验环境1、操作系统:Windows 102、开发工具:IntelliJ IDEA3、 JDK 版本:18三、实验内容(一)基本语法练习1、数据类型与变量在 Java 中,我们学习了不同的数据类型,如整数类型(`int`、`long`)、浮点数类型(`float`、`double`)、字符类型(`char`)和布尔类型(`boolean`)。

通过定义和使用这些变量,我们能够存储和操作各种类型的数据。

```javaint age = 25;double salary = 500050;char grade ='A';boolean isStudent = true;```2、控制结构包括条件语句(`ifelse`、`switch`)和循环语句(`for`、`while`、`dowhile`)。

这些控制结构使我们能够根据不同的条件执行不同的代码块,或者重复执行一段代码。

```javaint num = 10;if (num > 5) {Systemoutprintln("Number is greater than 5");} else {Systemoutprintln("Number is less than or equal to 5");}switch (num) {Systemoutprintln("One");break;case 10:Systemoutprintln("Ten");break;default:Systemoutprintln("Unknown");}for (int i = 0; i < 5; i++){Systemoutprintln(i);}int count = 0;while (count < 3) {Systemoutprintln("Count: "+ count);count++;}count = 0;Systemoutprintln("Count: "+ count);count++;} while (count < 3);```(二)面向对象编程1、类与对象创建了自定义的类来表示现实世界中的实体。

Java综合实验设计DOC

Java综合实验设计DOC

综合实验报告:滑板反射小球游戏专业班级:遥感科学与技术学号: 20133350姓名:易乐安日期: 2015年6月30日一、程序设计报告小球在窗口四壁弹射(虚线表示弹射的轨道)。

左右移动滑板,接住小球弹射,如果没有接住,则游戏失败一次。

要求:1. 自拟设计记分方法,和界面的其它部分;2. 滑板用键盘控制左右移动;3. 设置难度调节开关,允许游戏过程中改变这一设置,以调节小球运行速度,速度快,则难度增加。

4. 小球在滑板上弹射时,允许一定量的随机变化弹射角度,以实现一定的不确定性。

使用模块:对系统包结构、文件结构列表说明,如表2-1、2-2所示。

表2-1包名作用Java.awt.Insets包含用于创建用户界面和绘制图形图像的所有类Java.awt.event.ActionEvent定义了动作的类Java.awt.event.ActionListener包含用于创建用户界面和绘制图形图像的所有的类Java.awt.event.MouseEvent把类全部导进来Javax.swing.JOptionPane有助于方便地弹出要求用户提供或向其发出通知表2-2文件名作用GameUI.java程序的主窗体,负责窗口和菜单的绘制以及线程的调用。

MyThread.Java游戏的线程,主要负责小球的绘制和判断小球是否被接住,以及记录更新分数。

MyListener.java监听鼠标位置移动的监听器。

用来捕获鼠标的移动和鼠标的当前位置,同时这个类负责板子的绘制与更新。

定义界面:设置标题设置大小设置关闭是退出程序设置打开窗体时在屏幕中间显示设置窗体的流式布局管理器设置窗体背景颜色创建文本标签对象设置文本标签前景颜色创建进度条对象创建按钮对象创建菜单条对象创建菜单对象创建菜单选项对象 创建单选选项 创建一个按钮组主要算法描述:MyThread 继承于Thread ,使用一个单独的线程进行小球的绘制。

小球的绘制和滑板的绘制大同小异,都是使用java.awt.Graphics 进行绘制的。

弹珠小游戏课程设计实验报告

弹珠小游戏课程设计实验报告

摘要:这个小程序是关于弹珠的小游戏,游戏比较简单,以小球的速度来区分游戏的难易。

该小程序是用左右键控制游戏的开始和挡板的方向,不让小球落到底端,当然,小球的速度越快,该游戏的难度也就越大。

此程序利用C#程序编写,在visual studio 2005的环境下进行调试运行的。

弹珠原理:碰撞基本都是参照“反射定理”的,就是出射角=入射角,但是做碰撞时需要角度。

碰撞的运动和球的方向有关,球的方向有好几种。

有8向的,也有4向的。

保证小球横向上在允许范围之内运动,当触发时就反方向运动,和当出了球拍的可击打范围就停止运行了。

对于该程序开发,必须达到以下要求:1、熟悉.NET开发环境,能够使用C#语言在.NET平台上独立设计、开发WINDOWS应用程序。

2、掌握C#语言的异常处理技术,能够使用.NET各种调试方法调试代码,掌握帮助的使用方法。

3、掌握常用控件以及控件的常用属性的使用方法。

4、界面要做到简洁易懂,具有人性化等特点。

5、程序没有在使用过程中不存在任何的问题。

6、可选功能应全面,可以实施速度的选择,游戏的是否继续,还有记录的保存。

目录摘要: (1)目录 (1)一、题目说明 (2)二、总体设计 (2)2.1.系统开发平台 (2)三、详细说明 (2)3.1系统实施 (3)四、遇到的问题和解决方法 (28)五、课程设计总结 (30)六、参考文献 (30)附录(源程序代码) (30)一、题目说明当今用简单的代码编写的小游戏越来越受人们的欢迎,所以对于小游戏的开发也成为了各大编程人士的最爱。

我选择弹珠游戏这个课题,用代码控制游戏的等级,运用不同的函数来控制球的速度和方向,游戏简单而有趣。

二、总体设计2.1.系统开发平台系统采用Microsoft Visual Studio 2005三、详细说明在此弹球游戏中,对于球与挡板的位置,借助于x与y坐标的调整来实现统计,从而确定球落在板上后球的下一次方向。

同时借助于Visual Studio中的控件来控制小球的速度。

红色反弹球java课程设计

红色反弹球java课程设计

红色反弹球java课程设计一、课程目标知识目标:1. 学生能理解Java编程中面向对象的基本概念,包括类、对象、方法和属性。

2. 学生能掌握Java中事件处理机制,特别是键盘事件。

3. 学生能运用Java中的循环结构和条件语句实现游戏逻辑。

4. 学生了解并应用二维数组管理游戏界面中对象的状态。

技能目标:1. 学生通过编写代码,能够实现一个简单的“红色反弹球”游戏,包括球的移动、边界检测以及与挡板的互动。

2. 学生能够运用调试工具检查和修正程序中的错误,提高解决问题的能力。

3. 学生能够通过小组合作,进行项目规划和代码整合,增强团队协作能力。

情感态度价值观目标:1. 学生培养对编程的兴趣,激发探究精神和创造力。

2. 学生在项目实施中体验团队合作的重要性,学会相互尊重和沟通。

3. 学生通过编程实践,培养坚持不懈和勇于面对挑战的品质。

4. 学生能够在游戏中融入社会主义核心价值观,例如通过合作完成任务,体现集体主义精神。

本课程设计针对高年级学生,考虑其逻辑思维和编程能力已有一定基础,旨在通过具体的游戏项目设计,将Java编程知识与实践相结合,提高学生解决复杂问题的能力,并在过程中培养积极的学习态度和价值观。

目标设定具体明确,便于后续教学活动和评估的开展。

二、教学内容1. 面向对象基础:- 类的定义与使用- 对象的创建与操作- 方法的定义与调用- 属性的概念与应用2. 事件处理机制:- 键盘事件监听- 事件处理器的编写- 响应键盘输入3. 游戏逻辑实现:- 球的移动与方向控制- 边界检测- 球与挡板的碰撞处理4. 二维数组应用:- 游戏界面布局- 数组操作实现状态更新5. 循环结构与条件语句:- 游戏循环实现- 条件判断与游戏规则应用6. 项目实践:- 游戏需求分析- 代码编写与调试- 团队合作与分工教学内容依据课程目标,结合教材相关章节进行选择和组织。

教学大纲将按照以下进度安排:第一课时:面向对象基础及事件处理机制介绍第二课时:游戏逻辑分析,二维数组应用第三课时:循环结构与条件语句,实现球的基本移动第四课时:完善游戏功能,进行团队合作编写和调试第五课时:项目展示,总结反馈教学内容确保科学性和系统性,旨在帮助学生将理论知识与实践相结合,提高编程技能。

java实验报告

java实验报告

java实验报告Java 实验报告一、实验目的本次 Java 实验的主要目的是通过实际编程操作,深入理解和掌握Java 语言的基本语法、面向对象编程的概念和方法,以及常用类库的使用。

同时,培养我们的问题解决能力、逻辑思维能力和代码规范意识,为今后的软件开发工作打下坚实的基础。

二、实验环境1、操作系统:Windows 102、开发工具:Eclipse IDE for Java Developers3、 JDK 版本:JDK 18三、实验内容本次实验共包括以下三个部分:1、 Java 基本语法练习变量与数据类型运算符与表达式控制流语句(ifelse、for、while、dowhile)数组2、面向对象编程实践类与对象的定义和使用构造函数与方法重载封装、继承与多态抽象类与接口3、 Java 常用类库应用String 类与字符串操作集合框架(ArrayList、HashMap)文件输入输出(File、FileReader、FileWriter)四、实验步骤及代码实现1、 Java 基本语法练习变量与数据类型:```javapublic class VariableDataType {public static void main(String args) {int age = 20;double salary = 50005;String name ="张三";boolean isStudent = true;Systemoutprintln("年龄:"+ age);Systemoutprintln("工资:"+ salary);Systemoutprintln("姓名:"+ name);Systemoutprintln("是否是学生:"+ isStudent);}}```运算符与表达式:```javapublic class OperatorExpression {public static void main(String args) {int num1 = 10;int num2 = 5;int sum = num1 + num2;int difference = num1 num2;int product = num1 num2;int quotient = num1 / num2;int remainder = num1 % num2; Systemoutprintln("和:"+ sum);Systemoutprintln("差:"+ difference);Systemoutprintln("积:"+ product);Systemoutprintln("商:"+ quotient);Systemoutprintln("余数:"+ remainder);}}```控制流语句:```javapublic class ControlFlowStatement {public static void main(String args) {// ifelse 语句int score = 80;if (score >= 90) {Systemoutprintln("优秀");} else if (score >= 80) {Systemoutprintln("良好");} else if (score >= 70) {Systemoutprintln("中等");} else if (score >= 60) {Systemoutprintln("及格");} else {Systemoutprintln("不及格");}// for 循环for (int i = 1; i <= 5; i++){Systemoutprintln("第" + i +"次循环");}// while 循环int j = 1;while (j <= 5) {Systemoutprintln("第" + j +"次 while 循环");j++;}// dowhile 循环int k = 1;do {Systemoutprintln("第" + k +"次 dowhile 循环");k++;} while (k <= 5);}}```数组:```javapublic class ArrayExample {public static void main(String args) {//一维数组int numbers ={1, 2, 3, 4, 5};for (int num : numbers) {Systemoutprintln(num);}//二维数组int matrix ={{1, 2, 3},{4, 5, 6},{7, 8, 9}};for (int row : matrix) {for (int num : row) {Systemoutprint(num +"");}Systemoutprintln();}}}```2、面向对象编程实践类与对象的定义和使用:```javapublic class Person {private String name;private int age;public Person(String name, int age) {thisname = name;thisage = age;}public void showInfo(){Systemoutprintln("姓名:"+ name +",年龄:"+ age);}public static void main(String args) {Person person1 = new Person("张三", 20);person1showInfo();}}```构造函数与方法重载:```javapublic class ConstructorOverloading {private String name;private int age;public ConstructorOverloading(String name) {thisname = name;}public ConstructorOverloading(String name, int age) {thisname = name;thisage = age;}public void showInfo(){if (age == 0) {Systemoutprintln("姓名:"+ name);} else {Systemoutprintln("姓名:"+ name +",年龄:"+ age);}}public static void main(String args) {ConstructorOverloading person1 = new ConstructorOverloading("张三");person1showInfo();ConstructorOverloading person2 = new ConstructorOverloading("李四", 25);person2showInfo();}}```封装、继承与多态:```java//父类class Animal {private String name;public Animal(String name) {thisname = name;}public void eat(){Systemoutprintln(name +"正在吃东西");}}//子类继承父类class Dog extends Animal {public Dog(String name) {super(name);}public void bark(){Systemoutprintln(name +"在叫");}}public class InheritancePolymorphism {public static void main(String args) {Animal animal = new Dog("小黑");animaleat();//向下转型为 Dog 类型调用 bark 方法if (animal instanceof Dog) {Dog dog =(Dog) animal;dogbark();}}}```抽象类与接口:```java//抽象类abstract class Shape {abstract void draw();}//实现抽象类的子类class Circle extends Shape {@Overridevoid draw(){Systemoutprintln("画一个圆");}}//接口interface Moveable {void move();}//实现接口的类class Car implements Moveable {@Overridepublic void move(){Systemoutprintln("汽车在移动");}}public class AbstractInterfaceExample {public static void main(String args) {Shape shape = new Circle();shapedraw();Moveable car = new Car();carmove();}}```3、 Java 常用类库应用String 类与字符串操作:```javapublic class StringOperation {public static void main(String args) {String str1 ="Hello, ";String str2 ="World!";String str3 = str1 + str2;Systemoutprintln(str3);int length = str3length();Systemoutprintln("字符串长度:"+ length);char charAt = str3charAt(5);Systemoutprintln("第 5 个字符:"+ charAt);boolean contains = str3contains("World");Systemoutprintln("是否包含 World:"+ contains);}}```集合框架(ArrayList、HashMap):```javaimport javautilArrayList;import javautilHashMap;import javautilMap;public class CollectionFramework {public static void main(String args) {// ArrayListArrayList<String> names = new ArrayList<>();namesadd("张三");namesadd("李四");namesadd("王五");for (String name : names) {Systemoutprintln(name);}// HashMapHashMap<String, Integer> ages = new HashMap<>();agesput("张三", 20);agesput("李四", 25);agesput("王五", 30);for (MapEntry<String, Integer> entry : agesentrySet()){Systemoutprintln(entrygetKey()+"的年龄是" +entrygetValue());}}}```文件输入输出(File、FileReader、FileWriter):```javaimport javaioFile;import javaioFileReader;import javaioFileWriter;import javaioIOException;public class FileIOExample {public static void main(String args) {//写入文件try (FileWriter writer = new FileWriter("outputtxt")){writerwrite("这是写入文件的内容");} catch (IOException e) {eprintStackTrace();}//读取文件try (FileReader reader = new FileReader("outputtxt")){int character;while ((character = readerread())!=-1) {Systemoutprint((char) character);}} catch (IOException e) {eprintStackTrace();}}}```五、实验结果与分析1、 Java 基本语法练习变量与数据类型:能够正确定义和使用各种数据类型的变量,并进行基本的运算和输出。

开发弹球游戏

开发弹球游戏

项目名称 项目2-3 开发弹球游戏(4学时)教学目标 1.根据弹球游戏的需求,探讨归纳需要解决的问题,了解面向对象程序开发的基本理念。

2.学会创建类和对象。

3.初步掌握面向对象程序设计的基本方法,学会通过编程实现游戏功能。

资源准备 学生准备:搜索下载小球弹跳之类的小游戏并体验,思考开发小游戏的思路。

教师准备:弹球游戏程序。

教学重点 了解面向对象程序开发的基本理念教学难点 初步掌握面向对象程序设计的基本方法,学会通过编程实现游戏功能。

教学过程教学环节 教学活动及步骤情境导入 一、教师引导学生阅读案例导入情境,提出本项目的驱动性问题我们玩过小球弹跳之类的小游戏,小球在屏幕上移动弹跳。

你知道如何使用Python 面向对象程序设计来开发小游戏吗?让我们一起尝试创建弹球游戏吧。

游戏规则:弹球游戏让小球在屏幕上移动,碰到上下左右边界则弹跳。

任务实施一 创建小球类和对象 一、教师引导学生阅读教材上的任务描述创建一个类名为 Ball 的类,为其赋予属性和方法,创建一个名为 Ball 的对象,调用类的属性和方法,使一个蓝色的小球显示在画布中间。

二、小组针对以下问题进行探究及讨论1. 试玩弹球游戏,说出该游戏的规则并交流游戏体验。

2. 弹球游戏中涉及的实体是什么?该实体具备哪些属性和方法?3. 如何创建类和对象?你能说一说类和对象的关系吗?尝试定义名为 Ball 的类,创建名为 Ball 的对象,使蓝色小球显示在画布上。

三、教师针对以上问题进行操作提示1. 创建类和对象的格式。

(1)定义类的格式:class 类名:属性列表方法列表(2)创建对象。

创建对象和调用一个函数很相似,可以使用类名作为关键字去创建一个类的对象。

对象名 = 类名( )给对象添加属性的方法如下:对象名.新的属性名 = 值2. 创建 Ball 类和 Ball 对象。

(1)准备工作。

加载 Tkinter、Time 库,引入 Tkinter 模块的内容,创建弹球游戏窗口和画布。

java实验报告总结

java实验报告总结

java 实验报告要怎么写才算呢?下面是带来的 java 实验报告总结,欢迎阅读!作为就业培训,工程的好坏对培训质量的影响十分大,往往是决定性的作用。

这篇文章是关于在学习 java 软件开辟时练习工程的总结,简单总结为以下几点:作为就业培训,工程的好坏对培训质量的影响十分大,往往是决定性的作用。

这篇文章是关于在学习 java 软件开辟时练习工程的总结,简单总结为以下几点:1、工程一定要全新的工程,不能是以前做过的2、工程一定要企业真实工程,不能是精简以后的,不能脱离实际应用系统3、在开辟时要和企业的开辟保持一致4、在做工程的时候不应该有参考代码长话短说就是以上几点,如果你想要更多的了解,可以继续往后看。

一:工程的地位因为参加就业培训的学员不少都是有一定的计算机根抵,大部分都具备一定的编程根抵,特别是在校或者是刚毕业的学生,多少都有一些根抵。

他们欠缺的主要是两点:(1)不能全面系统的、深入的掌握某种技术,也就是会的挺多,但都是皮毛,不能满足就业的需要。

(2)没有任何实际的开辟经历,彻底是想象中学习,考试还行,一到实际开辟和应用就歇菜了。

解决的方法就是通过工程练习,对所学知识发展深化,然后通过工程来获取实际开辟的经历,从而弥补这些缺乏,尽快到达企业的实际要求。

二:如何选择工程工程既然那末重要,肯定不能随随便便找工程,那末终究如何来选择呢?根据 java 的研究和实践经历总结,选择工程的时候要注意以下方面:1:工程不能太大,也不能太小这个要根据工程练习的阶段,练习的时间,练习的目标来判断。

不能太大,太大了做不完,也不能太小,太小了没故意义,达不到练习的目的。

2:工程不能脱离实际应用系统工程应该是实际的系统,或者是实际系统的简化和抽象,不能够是没有实战意义的教学性或者是纯练习性的工程。

因为培训的时间有限,必须让学员尽快地融入到实际工程的开发之中去。

任何人承受和掌握一个东西都需要时间去适应,需要重复几次才干够真正掌握,所以每一个工程都必须跟实际应用挂钩。

java实现简单的弹球游戏

java实现简单的弹球游戏

java实现简单的弹球游戏弹球游戏实现原理: 隔⼀定时间(⼩于1秒)重新绘制图像,因为Graphics类是⼀个抽象类,创建⼦类的时候需要把所有涉及的⽅法都得重写,所以这⾥使⽤的是创建Canvas的⼦类,只需要重写它的paint()⽅法来实现。

这⾥我们⽤了键盘监听事件、Timer类等。

游戏说明: 该弹球游戏中的⼩球会随着时间增加速度且速度最多是横向速度和垂直速度为10。

当⼩球的y坐标(垂直坐标)⼤于球拍的y坐标(垂直坐标)即判断游戏结束。

控制台显⽰的是⼩球的x⽅向的速度和y⽅向的速度。

import java.awt.*;import java.util.Random;import javax.swing.Timer;import java.awt.event.*;public class PinBall{private Frame f=new Frame("弹球游戏");Random rand=new Random();//桌⾯的宽度以及⾼度private final int TABLE_WIDTH=300;private final int TABLE_HEIGHT=400;//球拍的宽度以及⾼度以及⽔平位置、垂直位置private final int RACKET_WIDTH=60;private final int RACKET_HEIGHT=20;private int racketX=rand.nextInt(24)*10;private int racketY=300;//⼩球的⼤⼩、运⾏速度、坐标private final int BALL_SIZE=16;private int ySpeed=1;private double xyRate=1;private int xSpeed=(int)(xyRate*ySpeed);private int ballX=rand.nextInt(284);private int ballY=1;//创建画布private MyCanvas tableArea=new MyCanvas();//定义时间类Timer timer;//游戏是否结束的旗标private boolean isLose=false;//设置游戏等级private int time_times=1;public void init(){tableArea.setPreferredSize(new Dimension(TABLE_WIDTH,TABLE_HEIGHT));f.add(tableArea);//定义键盘监听器KeyAdapter keyProcessor=new KeyAdapter(){public void keyPressed(KeyEvent ke){if(ke.getKeyCode()==KeyEvent.VK_LEFT){if(racketX>0)racketX-=10;}if(ke.getKeyCode()==KeyEvent.VK_RIGHT){if(racketX<TABLE_WIDTH-RACKET_WIDTH)racketX+=10;}}};f.addKeyListener(keyProcessor);//tableArea.addKeyListener(keyProcessor);ActionListener taskPerformer=evt->{//⼩球碰到左边框或右边框if(ballX<=0||ballX>=TABLE_WIDTH-BALL_SIZE){xSpeed=-xSpeed;}if(ballY>racketY-BALL_SIZE&&(ballX<racketX||ballX>racketX+RACKET_WIDTH-BALL_SIZE)){timer.stop();isLose=true;tableArea.repaint();}else if(ballY<=0||(ballY>=racketY-BALL_SIZE&&ballX>racketX&&ballX<=racketX+RACKET_WIDTH)){ySpeed=-ySpeed;}ballY+=ySpeed;ballX+=xSpeed;tableArea.repaint();if((xSpeed<10&&xSpeed>-10)&&(ySpeed<10&&ySpeed>-10)){time_times++;}if(time_times==10){if(xSpeed>0){xSpeed++;}else{xSpeed--;}if(ySpeed>0){ySpeed++;}else{ySpeed--;}time_times-=10;System.out.println(xSpeed+" "+ySpeed);}};timer=new Timer(100,taskPerformer);timer.start();f.pack();f.setVisible(true);}class MyCanvas extends Canvas{public void paint(Graphics g){if(isLose){g.setColor(new Color(255,0,0));g.setFont(new Font("Times",Font.BOLD,30));g.drawString("游戏结束",50,200);}else{g.setColor(new Color(240,240,80));g.fillOval(ballX,ballY,BALL_SIZE,BALL_SIZE);g.setColor(new Color(80,80,200));g.fillRect(racketX,racketY,RACKET_WIDTH,RACKET_HEIGHT); }}}public static void main(String[] args){new PinBall().init();}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

基于Java多线程的弹球游戏程序

基于Java多线程的弹球游戏程序

• 18•Java 程序设计语言提供了用户使用的多任务并发执行的能力的支持。

处在可执行状态中的应用程序称为进程。

线程是比进程更小的执行单元,一个进程可以分为若干个线程,形成多条执行路线,完成多项操作。

弹球游戏程序应用Java 多线程,完成不同颜色、不同运行速度、不同大小的弹球,每个弹球的运动由一个各自独立的线程控制。

在多线程教学中,为了能够更好地实现教学目标以及教学工作的开展。

通过弹球游戏图形化编程,降低编程难度,减少挫折感、激发学生的学习积极性。

1 引言弹球游戏程序应用Java 语言提供的多线程支持,在程序中完成多种弹球的实现。

通过形象的图形化编程,降低编程难度,减少挫折感、激发学生的学习积极性,并且能更好地实现教学目标的设计以及教学工作的开展。

2 弹球游戏的实现弹球游戏的实现的主要功能:左上9球:从左上方弹出9个颜色随机、大小速度相同、间隔时间90-590ms 的小球;右上单球:从右上方弹出1个颜色、大小、速度随机的小球;左下7彩球:从左下方弹出7个大小、速度、间隔时间相同的7彩小球;右下9球:从右下方弹出9个颜色、大小、速度、间隔时间相同的小球;梦幻9球:产生9个颜色、发球位置、大小、速度随机的小球;昨夜星辰:产生9个发球位置、大小、速度随机的白色小球;其他说明:弹球线程数量为运动小球数量,当线程数量超过200,建议不要再增加弹球数量,窗口标题显示运动小球数量,小球弹出后,大约1min 自动消失。

多线程弹球的实现: class Ball extends Thread { private Color color;private int xsize = 10;//弹球大小 private int ysize= 10; private int x = 0;//弹球位置 private int y = 0;private int dx = 2;//弹球移动步长 private int dy = 2; private Graphics g;// 设置标题要用到private Bounce b;基于Java多线程的弹球游戏程序福建船政交通职业学院信息与智慧交通学院 林恒建public Ball(Bounce b, Color co) { color = co; this.b = b;g = canvas.getGraphics();}//画出弹球public void drawD() {g.setColor(color);g.setXORMode(canvas.getBackground()); g.fillOval(x, y, xsize, YSIZE);}public void draw() { g.setColor(color);g.fillOval(x, y, xsize, ysize);g.setXORMode(canvas.getBackground());}//按步长移动弹球,在窗体边界回弹public void move() { g.fillOval(x, y, xsize, ysize); x += dx; y += dy;if (x < 0) {x = 0; dx = -dx; }// 只在每次事件发生时重新计算窗体内画布的宽和高canvasWidth ,canvasHeight// 让运动更流畅。

java桌面弹球分解

java桌面弹球分解

以panelWidth,panelHeight,与path去构造一个BgeatlImlCaogme()p:oimneanget。;
BallComponent( String path , int x , int y ),以x坐标,y坐标和path
去构造一个BallComponet。
挡板类 Stick
发生改变,所以还需要一个挡板的初始长度preWidth属性,为
int型,初始值为0。并提供了setpreWidth和getpreWidth方
法获取和设置挡板的初始长度。 void setPreWidth( int preWidth
)
设置初始方法长度svgoe。eittdpprreeWWiiddtthh(())
: :int
int getPreWidth()
获取初始长度

小球类 Ball
用一个B布al尔l类类也型是属B性alslCtaormtepdo来n标et志的小子球类是。否游已戏经未开开始始运前类 名动,,小初球始是值处为于f静Bal止asel状。l 态游,戏所过以程
中小球不断在画板中运动,而且并不仅仅是单纯的沿x轴或者syp轴ee运dY动:,i许nt多=时1候0 小球
2
主界面实现
主界面是一个只设置了窗口 标题还有颜色等基本属性的 JFrame,在这个JFrame中,提 供一个JPanel对象。实现游戏的 相关逻辑的时调用JPanel的 repaint方法将JPanel进行重绘。
业务处理类实现
创建与设置砖块、设置挡板 的位置,及移动挡板、小球与砖 块相撞、小球道具与挡板的碰撞、 道具的移动、改变道具的长度、 判断是否已经通关
游 戏 说 明
目录
1 设计思路 2 流程设计 3 游戏实现 4 总结

java课程设计——红色小弹球

java课程设计——红色小弹球

JA V A课程设计报告题目红色小球反弹程序院系信工院班级14计本1学号**********姓名赵佳目录摘要 (3)1、概述 (4)1.1题目简介 (4)1.2功能分析 (4)1.3功能实现 (4)1.3.1颜色选择功能的实现 (4)1.3.2速度选择功能的实现 (4)1.3.3小球出现的位置的功能实现 (5)1.3.4开始/添加功能的实现 (5)1.3.5暂停功能的实现 (5)1.3.5清除功能的实现 (6)2、程序的分析与设计 (7)2.1程序分析 (7)2.2程序设计 (7)2.2.1main方法用于程序测试 (7)2.2.2小球运动线程 (7)2.2.3小球的画板 (8)2.2.4添加小球 (8)2.2.5绘制画板 (8)2.2.6小球类 (9)2.2.7获取小球的形状 (9)2.2.8获取小球的颜色 (9)3、系统实现 (10)3.1实现代码 (10)3.2测试结果 (10)4、总结 (12)附录2 (15)摘要JA V A是目前最流行的软件开发语言之一,称为网络上的“世界语”。

JA V A 适合开发基于多媒体、与平台无关、用面向对象的方法进行的基于Internet、Intranet、Extranet的Applet和应用程序。

它具有简单高效、面向对象、不依赖机器结构的特点,支持多线程、分布和并发机制。

用JA V A开发的应用软件在可移植性、健壮性、安全性等方面大大优于已存在的其他编程语言。

JA V A是一门包含多种知识的学科,提供了丰富的类库,能最大限度地利用网络。

JA V A可广泛用于面向对象的事件描述、处理面向对象的企业型的应用开发,还应用于Internet 系统管理、Web页面设计、Internet可视化软件开发等方面。

在学习的过程中我学到了许多以前没有学到的概念和新鲜资讯。

运用这些知识可以完成老师交给我的课程设计任务。

1、概述1.1题目简介用java语言,使用Eclipse工具来进行编辑运行一个简单红色反弹球程序。

Java基于swing实现的弹球游戏代码分析

Java基于swing实现的弹球游戏代码分析

Java基于swing实现的弹球游戏代码这篇文章主要介绍了Java基于swing实现的弹球游戏代码,包含了窗体界面设计与游戏的逻辑功能处理,具有不错的参考借鉴价值,需要的朋友可以参考下本文实例讲述了Java基于swing实现的弹球游戏代码。

分享给大家供大家参考。

主要功能代码如下:复制代码代码如下:package Game;import java.awt.Graphics;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.Random;import javax.swing.ButtonGroup;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JRadioButtonMenuItem;/*** 游戏界面类** @author Administrator**/public class Game extends javax.swing.JFrame {private static final long serialVersionUID = 1L;private static Game UI;private Graphics g;private Listener ml;public javax.swing.JLabel text_field;public javax.swing.JProgressBar pBar;private String command;public ArrayList<MyThread> list = new ArrayList<MyThread>();private javax.swing.JToggleButton button;public static void main(String args[]) {UI = new Game();UI.initUI();}/*** 初始化窗体的方法*/public void initUI() {// 设置标题this.setTitle("是高手就坚持10s");// 设置大小this.setSize(610, 635);// 设置关闭是退出程序this.setDefaultCloseOperation(3);// 设置打开窗体时在屏幕中间显示this.setLocationRelativeTo(null);// 设置窗体的流式布局管理器this.setLayout(new java.awt.FlowLayout());// 设置窗体背景颜色this.getContentPane().setBackground(java.awt.Color.black);// 创建文本标签对象text_field = new javax.swing.JLabel();javax.swing.JLabel lable = new javax.swing.JLabel("时间:");// 设置文本标签前景颜色lable.setForeground(java.awt.Color.red);text_field.setForeground(java.awt.Color.red);// 创建进度条对象pBar = new javax.swing.JProgressBar(0, 330);// 创建按钮对象button = new javax.swing.JToggleButton();button.setMargin(new Insets(0, 0, 0, 0));button.setIcon(new javax.swing.ImageIcon("images/Pause.gif"));button.setActionCommand("暂停");// 通过匿名内部类来创建动作监听器java.awt.event.ActionListener button_listener = new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {String com = e.getActionCommand();if (com.equals("暂停")) {button.setMargin(new Insets(0, 0, 0, 0));button.setIcon(newjavax.swing.ImageIcon("images/start.gif"));button.setActionCommand("继续");for (int i = 0; i < list.size(); i++) {list.get(i).PauseThread();}}if (com.equals("继续")) {button.setMargin(new Insets(0, 0, 0, 0));button.setIcon(newjavax.swing.ImageIcon("images/Pause.gif"));button.setActionCommand("暂停");for (int i = 0; i < list.size(); i++) {list.get(i).ContinueThread();}}}};button.addActionListener(button_listener);this.add(button);this.add(lable);this.add(pBar);this.add(text_field);// 的到菜单条JMenuBar bar = creatMenuBar();// 为窗体设置菜单条this.setJMenuBar(bar);// 设置窗体的可见性this.setVisible(true);}/*** 创建菜单条的方法** @return*/public JMenuBar creatMenuBar() {// 创建菜单条对象JMenuBar bar = new JMenuBar();// 创建菜单对象JMenu menu_menu = new JMenu("菜单");JMenu difficulty_menu = new JMenu("难度");JMenu help_menu = new JMenu("帮助");// 创建菜单选项对象JMenuItem star_item = new JMenuItem("开始");JMenuItem exit_item = new JMenuItem("退出");JMenuItem help_item = new JMenuItem("游戏说明");JMenuItem about_item = new JMenuItem("关于");// 创建单选选项JRadioButtonMenuItem easy_item = new JRadioButtonMenuItem("简单");JRadioButtonMenuItem middle_item = new JRadioButtonMenuItem("中等");JRadioButtonMenuItem hard_item = new JRadioButtonMenuItem("困难");// 创建一个按钮组ButtonGroup group = new ButtonGroup();// 将单选按钮添加到按钮组中group.add(easy_item);group.add(middle_item);group.add(hard_item);// 将单选按钮添加到菜单中difficulty_menu.add(easy_item);difficulty_menu.add(middle_item);difficulty_menu.add(hard_item);// 通过匿名内部类来创建动作监听器ActionListener listener = new ActionListener() {public void actionPerformed(ActionEvent e) {command = e.getActionCommand();// 如果选择开始,则创建线程对象if (command.equals("开始") && list.size() == 0) {creatBall(20, 1);}// 如果选择退出按钮,则退出程序if (command.equals("退出")) {System.exit(0);}// 如果选择简单按钮if (command.equals("简单") && list.size() == 0) {creatBall(20, 1);}// 如果选择中等按钮if (command.equals("中等") && list.size() == 0) {creatBall(50, 2);}if (command.equals("困难") && list.size() == 0) {creatBall(40, 2);}if (command.equals("游戏说明")) {JOptionPane.showMessageDialog(null,"移动鼠标,用挡板接球,如果接不住,就算输了……\n游戏可以选择难度,包括简单、中等、困难");}if (command.equals("关于")) {JOptionPane.showMessageDialog(null,"这是一个用Java编写的小游戏……\n制作人:沈冠军\n时间:2010年8月\n版权所有,翻版必究!");}}};// 添加动作监听器star_item.addActionListener(listener);exit_item.addActionListener(listener);easy_item.addActionListener(listener);middle_item.addActionListener(listener);hard_item.addActionListener(listener);help_item.addActionListener(listener);about_item.addActionListener(listener);// 将菜单选项对象添加到菜单对象上menu_menu.add(star_item);menu_menu.add(exit_item);help_menu.add(help_item);help_menu.add(about_item);// 将菜单对象添加到菜单条上bar.add(menu_menu);bar.add(difficulty_menu);bar.add(help_menu);// 返回菜单条对象return bar;}/*** 创建线程对象的方法** @param speed* :速度**/public void creatBall(int speed, int num) {Random ran = new Random();if (ml == null) {g = UI.getGraphics();ml = new Listener(g);UI.addMouseListener(ml);UI.addMouseMotionListener(ml);}for (int i = 0; i < num; i++) {int x = ran.nextInt(600) + 10;int y = ran.nextInt(300) + 100;MyThread th = new MyThread(g, ml, UI, x, y, speed);list.add(th);h.start();}}/*** 得到命令的方法*/public String getCommand() {return command;}}复制代码代码如下:package Game;import java.awt.Color;import java.awt.Graphics;import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent;/*** 鼠标监听器的类** @author Administrator**/public class Listener extends MouseAdapter { private Graphics g;private int x = 5, y = 620;private int width = 100, height = 10;public Listener(Graphics g) {this.g = g;}public void mouseMoved(MouseEvent e) { // 设置画布对象颜色synchronized (this.g) {g.setColor(Color.black);g.fillRect(x, y, width, height);x = e.getX();g.setColor(java.awt.Color.green);g.fillRect(x, y, width, height);}}/*** 得到x的方法** @return:x*/public int getX() {return x;}}。

  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;//如果小球与球拍发生重叠,小球反弹。

相关文档
最新文档