分享一个最近做的一个用swing做的小程序,类似于打砖块。单击开始,单击暂停,再次单击继续游戏,鼠标离开窗口暂停。鼠标移动控制挡板,小球落到挡板上反弹,落到底部生命值扣一,每击中一个成绩加一。初学者可以写一写,就当做一个小练习。
第一个类:窗口类,用JFrame画的窗口。
import javax.swing.JFrame;
public class BallJframe {
// 创建一个窗体对象
JFrame frame = new JFrame();
// 自定义方法为窗体设置属性
public void init() {
// 设置标题
frame.setTitle("打弹珠");
// 设置窗体大小、位置
frame.setBounds(200, 100, 800, 600);
// 设置默认关闭方式
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建画布对象
BallJpanel jp = new BallJpanel();
// 将画布类对象添加到窗体中
frame.add(jp);
// 设置窗口可见
frame.setVisible(true);
}
public static void main(String[] args) {
BallJframe bf = new BallJframe();
bf.init();
}
}
第二个类:面板类,用线程与鼠标监听器来实现功能。
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JPanel;
public class BallJpanel extends JPanel implements MouseMotionListener,
MouseListener {
// 定义挡板的坐标
static int dx = 200, dy = 550;
//成绩
static int score = 0;
//球速
static int n=10;
//生命值
static int hp=n;
//游戏速度
int speed = 5;
//开始状态
static final int START = 0;
//运行状态
static final int RUNNING = 1;
//暂停状态
static final int PASS = 2;
//结束状态
static final int OVER=3;
//当前的运动状态
int state = ST