[乒乓球游戏]论文
北 京 吉 利 学 院
毕 业 论 文(设 计)
论文题目:乒乓球小游戏的设计制作 姓名:赵玮玲 学号:1430080025
学院: 理工学院
专业: 计算机应用技术 班级:14高职2班 指导教师:施一飞
完成日期:2016年4月26
内容摘要
随着互联网的快速发展,我们的日常生活变得越来越多姿多彩。在我们的生活中,智能游戏已经变成了不可缺少的一部分。适当地进行游戏可以放松身心缓解压力。
下面就是一个靠Java来实现的一个《乒乓球游戏》。这个小型游戏可以通过双方配合来进行,也可以通过自己的左右手来自我进行。随着拍打次数的增加,球的运行速度会越来越快。通过这个游戏,可以锻炼我们的反应能力,也可以锻炼与他人配合的能力。
本设计实现了游戏的启动、游戏的暂停、游戏的结束、球拍的移动以及小球的移动。该游戏还有一些不足之处。外观可以稍加设计,功能也可进一步扩展,让小球实现多个功能,游戏设计还可进一步提高。
目录
一、前言 ................................................ 4
二、概要设计 ............................................ 5
(一)需求分析 ........................................ 5
[1]用例图 ......................................... 5
(二)程序的结构设计 .................................. 6
[1]类图 ........................................... 6
三、详细设计与编码 ...................................... 7
(一)窗口类 .......................................... 7
(二)自定义矩形区域类 ................................ 8
(三)碰撞检测类 ...................................... 9
四、总结 ............................................... 11
(一)程序的重难点 ................................... 11
(二)未来的计划 ..................................... 11
五、参考文献 ........................................... 12
《乒乓球游戏》的设计制作
一、前言
通过乒乓球游戏程序的设计可以熟练的掌握窗口类,可以进一步使自己熟练的掌握java的jdk文档,使各个类熟练的掌握,通过这个小小的游戏,可以知道监听器是如何实现监听的,还有我们可以了解一下Rectangle这个类,要想熟练的编写程序,第一思路要清晰,二要很清楚的知道如何实现这个方法,还有如何实现这个类,还有就是对程序基础的进一步了解。
二、概要设计
(一)需求分析
[1]用例图
玩家来实现游戏的开始、游戏的暂停、游戏的结束以及球拍的移动。而游戏代理人是为玩家来监听小球的移动、球拍的移动,以及实现画布的重新设置。
(二)程序的结构设计
[1]类图
三、详细设计与编码
(一)窗口类
import javax.swing.JFrame;
import javax.swing.Timer;
public class Game extends JFrame {
}
//保存小球和球拍碰撞的次数 public static int hits = Data.HITS_INITIAL; } public Game(){ //窗口的尺寸,宽640,高360 setSize(Data.WINDOW_WIDTH, Data.WINDOW_HEIGHT); //设定关闭窗口时做什么操作,设定关闭按钮点击后退出程序 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //创建球拍对象 QiuPai qp1 = new QiuPai(Data.QP1_INITIAL_X); QiuPai qp2 = new QiuPai(Data.QP2_INITIAL_X); Qiu q = new Qiu(); //创建画布对象 GamePanel gp = new GamePanel(qp1,qp2,q); //将画布添加到窗口中 add(gp); MyKeyListener keyListener = new MyKeyListener(qp1, qp2, gp); addKeyListener(keyListener); //创建定时器对象,用它移动小球,移动球拍 Timer timer = new Timer(Data.TIMER_INTERVAL,new MyActionListener(q,gp,qp1,qp2)); timer.start(); pack(); //将窗口变为可见 setVisible(true);
(二)自定义矩形区域类
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;
import javax.swing.Box.Filler;
//球拍类
public class QiuPai extends Rectangle{
//y速度 int speed_y=Data.QP_INITIAL_SPEED; //颜色 Color color=Color.white; public QiuPai(int x) { } public void paint(Graphics g){ } //让球拍按照提供的速度进行移动 public void move(){ } y = y + speed_y; g.setColor(color);//画笔颜色 g.fillRect(x, y, width, height);//绘制矩形球拍,四个参数为球拍的顶点坐标,super(); this.x = x; width=Data.QP_WIDTH; height=Data.QP_HEIGHT; y=Data.QP_INITIAL_Y; 宽,高
}
(三)碰撞检测类
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MyActionListener implements ActionListener {
Qiu q; GamePanel gp; QiuPai qp1,qp2; public MyActionListener(Qiu q,GamePanel gp,QiuPai qp1,QiuPai qp2) { } //该方法由java自动调用,因为监听器是监听定时器对象,每当定时器出发//ActionEvent类型的事件时,这个方法就会自动被调用 @Override public void actionPerformed(ActionEvent arg0) { //移动球拍 qp1.move(); qp2.move(); //小球和上下边沿的碰撞检测 if(q.y=360-20){ } super(); this.q = q; this.gp = gp; this.qp1 = qp1; this.qp2 = qp2; 一个 q.speed_y = -q.speed_y;
//小球和左右边沿的碰撞检测
if(q.x=640-20){
//重置小球
q.x = Data.Q_INITIAL_X;
q.y = Data.Q_INITIAL_Y;
q.speed_x = Data.Q_INITIAL_SPEED;
q.speed_y = Data.Q_INITIAL_SPEED;
//重置球拍
qp1.y = qp2.y = 150;
//重置分数
Game.hits=0;
}
//小球和球拍的碰撞检测
if((q.intersects(qp1) && q.speed_x0)){
q.speed_x = -q.speed_x;
//累加小球和球拍碰撞的次数
Game.hits++;
if(Game.hits % 3 == 0){
q.speed_x = q.speed_x + (q.speed_x>0 ? 2 : -2);
q.speed_y = q.speed_y + (q.speed_y>0 ? 2 : -2);
}
}
q.x = q.x + q.speed_x;
q.y = q.y + q.speed_y;
gp.repaint();
}
&&
}
四、总结
(一)程序的重难点
这个游戏的重难点,就是对小球和球拍的监听,时刻对画布进行绘制、修改,对键盘的敲击也是一样,要时时进行监听。这个游戏需要我们熟练的掌握监听器的用法,这样才能控制小球和球拍的移动。
(二)未来的计划
未来可以实现的就是,设计一个框,来设计游戏的级别,不同级别的小球的
速度不同。还可以在游戏进行中增加一些障碍,设计一个黄色的球,只要小球一碰到就会使小球暂停几秒,然后再按照原来的路线去走。还可以设计一个绿色的小球,只要小球一碰到绿色的小球,就会原路返回使游戏重新开始。
五、参考文献
Y.Daniel Liang:《java语言程序设计-基础篇》,机械工程出版社,第八版 Y.Daniel Liang:《java语言程序设计-进阶篇》,机械工程出版社,第八版