该程序主要是用于对java图形化界面编程进行联系,程序实现全部采用的是AWT包下的类。
程序仅做参考,供学习使用,希望能使小伙伴对java图形化界面编程理解有帮助
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.time.*;
public class ball {
JFrame j=new JFrame("弹球游戏");
//桌面宽度
private final int a=400;
//桌面高度
private final int a1=500;
//挡板宽度
private final int b=60;
//挡板高度
private final int b1=20;
//小球大小
private final int c=16;
//小球X轴初始位置
private int cx=120;
//小球Y轴初始位置
private int cy=20;
//挡板X轴初始位置
private int bx=120;
//挡板Y轴初始位置
private final int by=460;
//Y轴运动速度
private int suy=10;
//X轴运动速度
private int sux=5;
//定义线程对象
private Timer t;
//用来判断游戏是否结束
private boolean f=false;
//继承画图类并且重写paint()方法
class x extends Canvas
{
public void paint(Graphics e)
{
if(f){
//定义字体颜色
e.setColor(Color.BLUE);
//定义字体
e.setFont(new Font("Times",Font.BOLD,30));
//输入字体
e.drawString("游戏结束!",250,200);
}else{
//绘制小球和挡板的颜色
e.setColor(Color.RED);
//绘制小球
e.fillOval(cx,cy,c,c);
//绘制挡板
e.fillRect(bx,by,b,b1);
}}
}
//创建画图类对象
x x1=new x();
//组装
public ball()
{ //定义按键监听器
KeyListener k=new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
int code=e.getKeyCode();
if(code==KeyEvent.VK_LEFT)
{//当挡板运动到最左边使其无法继续运动
if(bx>0)
{
bx-=10;
}
}//当挡板运动到最右边使其无法继续运动
if(code==KeyEvent.VK_RIGHT)
{
if(bx<a-b)
{
bx+=10;
}
}
}
};
//设计小球运动
ActionListener a2=new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//当小球撞到最右边或者最左边是使它反弹
if(cx<=0||cx>=(a-c))
{
sux=-sux;
}//当小球到顶部或者撞到挡板上反弹
else if(cy<=0||(cy>by-c&&cx>bx&&cx<bx+b))
{
suy=-suy;
}//当小球弹到挡板以下位置游戏结束
else if(cy>by-c&&(cx>bx||cx<bx+b))
{
t.stop();
f=true;
x1.repaint();
}//使小球运动
cx+=sux;
cy+=suy;
x1.repaint();
}
};
//将小球运动设计加入到线程中
t=new Timer(100,a2);
t.start();
//使键盘可以控制挡板
j.addKeyListener(k);
x1.addKeyListener(k);
//设计游戏界面的大小
x1.setPreferredSize(new Dimension(a,a1));
//组装
j.add(x1);
j.setVisible(true);
j.setBounds(100,100,a+20,a1+100);
j.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}//测试运行
public static void main(String[] args) {
new ball();
}
}
运行测试界面: