[程序中使用的数据结构和符号说明]
HitBrick类
GreenBallThread 控制小球路线
xUp,yUp,bouncing 定义变量存储16位数值形式
x,y 小球坐标
xDx,yDy 坐标增量
MAX_X,MAX_Y 坐标最大值
renew 初始化
label 标签
Rx,Ry 横板坐标
Brick[] 砖块
ball 小球
HitBrick() 定义小球横板及砖块位置坐标
keyPressd(keyEent) 定义小球启动键(按空格键启动)
keyReleased(keyEvent) 接收键盘事件侦听器接口)
keyTyped(keyEvent) 键入空格键时调用keyEvent
paint(Graphics) 对砖块填充颜色
move 定义小球的运动轨迹和砖块的消失
main 主函数
BallThread类
通过继承Thread类使Ball类线程化,并把小球的弹跳动作放进Run()中执行
Brick类
定义砖块坐标位置和砖块按钮
Ball类
定义小球坐标位置
[程序设计流程]
程序中使用的部分方法解释
开始命令:空格键
private JLabel label;定义一个标签,label=new JLabel("按空格键开始");内容为空格键开始,addKeyListener(this);定义一个键盘监听器,
if (e.getKeyCode() ==e.VK_SPACE) {
if(renew){
greenBallThread=new BallThread(this);
bouncing = true;
greenBallThread.start();
label.setVisible(false);
}
renew=false;
}
重置并开始游戏
移动命令:方向键左键和右键
if(e.getKeyCode()==e.VK_LEFT){
Rx=Rx-20;
if(bouncing){
if(Rx<0){
Rx=0;
}
}
else{
if(Rx<0){
Rx=0;
}
else{
x=x-20;
ball.ball_x=x;
}
}
repaint();
}
同开始命令原理,如果键入左键,横版向左移动20个单位(Rx为横板坐标),如果小球还在运动,当横板移到最左侧(Rx=0),不能再向左移动,则横板靠在最左侧(Rx=0),
if(e.getKeyCode()==e.VK_RIGHT){
Rx=Rx+20;
if(bouncing){
if(Rx+80>300){
Rx=220;
}
}
else{
if(Rx+80>300){
Rx=220;
}
else{
x=x+20;
ball.ball_x=x;
}
}
repaint();
}
}
向右移动同向左移动原理,因为定义界面横坐标最大值为300,横板长度80,故Rx=220时碰最右侧
砖块设定:
brick[0]=new Brick(0,60,50,20);
brick[1]=new Brick(50,60,50,20);
brick[2]=new Brick(100,60,50,20);
……
brick[16]=new Brick(200,160,50,20);
brick[17]=new Brick(250,160,50,20);
ball=new Ball(150,450,10,10);
public void paint(Graphics g){
super.paint(g);
ball.rect.setLocation(x,y);
if(bouncing){
for(int i=0;i<=17;i++){
if(brick[i].visible==true){
switch(i){
case 0 :g.setColor(Color.blue);
break;
case 1 :g.setColor(Color.cyan);
break;
case 2 :g.setColor(Color.gray);
break;
……
case 17 :g.setColor(Color.yellow);
break;
}
g.fill3DRect(brick[i].brick_x,brick[i].brick_y,brick[i].brick_width,brick[i].brick_height,true);
}
}
g.setColor(Color.red);
g.fillOval(x, y, 10, 10);
g.setColor(Color.blue);
g.fillRect(Rx,Ry,80,20);
brick[0]=new Brick(0,60,50,20);设置砖块坐标,ball=new Ball(150,450,10,10);和小球的坐标
if(brick[i].visible==true) 判断砖块存在,用switch语句,逐个对砖块填充颜色,最后四行代码是分别对小
HitBrick类
GreenBallThread 控制小球路线
xUp,yUp,bouncing 定义变量存储16位数值形式
x,y 小球坐标
xDx,yDy 坐标增量
MAX_X,MAX_Y 坐标最大值
renew 初始化
label 标签
Rx,Ry 横板坐标
Brick[] 砖块
ball 小球
HitBrick() 定义小球横板及砖块位置坐标
keyPressd(keyEent) 定义小球启动键(按空格键启动)
keyReleased(keyEvent) 接收键盘事件侦听器接口)
keyTyped(keyEvent) 键入空格键时调用keyEvent
paint(Graphics) 对砖块填充颜色
move 定义小球的运动轨迹和砖块的消失
main 主函数
BallThread类
通过继承Thread类使Ball类线程化,并把小球的弹跳动作放进Run()中执行
Brick类
定义砖块坐标位置和砖块按钮
Ball类
定义小球坐标位置
[程序设计流程]
程序中使用的部分方法解释
开始命令:空格键
private JLabel label;定义一个标签,label=new JLabel("按空格键开始");内容为空格键开始,addKeyListener(this);定义一个键盘监听器,
if (e.getKeyCode() ==e.VK_SPACE) {
if(renew){
greenBallThread=new BallThread(this);
bouncing = true;
greenBallThread.start();
label.setVisible(false);
}
renew=false;
}
重置并开始游戏
移动命令:方向键左键和右键
if(e.getKeyCode()==e.VK_LEFT){
Rx=Rx-20;
if(bouncing){
if(Rx<0){
Rx=0;
}
}
else{
if(Rx<0){
Rx=0;
}
else{
x=x-20;
ball.ball_x=x;
}
}
repaint();
}
同开始命令原理,如果键入左键,横版向左移动20个单位(Rx为横板坐标),如果小球还在运动,当横板移到最左侧(Rx=0),不能再向左移动,则横板靠在最左侧(Rx=0),
if(e.getKeyCode()==e.VK_RIGHT){
Rx=Rx+20;
if(bouncing){
if(Rx+80>300){
Rx=220;
}
}
else{
if(Rx+80>300){
Rx=220;
}
else{
x=x+20;
ball.ball_x=x;
}
}
repaint();
}
}
向右移动同向左移动原理,因为定义界面横坐标最大值为300,横板长度80,故Rx=220时碰最右侧
砖块设定:
brick[0]=new Brick(0,60,50,20);
brick[1]=new Brick(50,60,50,20);
brick[2]=new Brick(100,60,50,20);
……
brick[16]=new Brick(200,160,50,20);
brick[17]=new Brick(250,160,50,20);
ball=new Ball(150,450,10,10);
public void paint(Graphics g){
super.paint(g);
ball.rect.setLocation(x,y);
if(bouncing){
for(int i=0;i<=17;i++){
if(brick[i].visible==true){
switch(i){
case 0 :g.setColor(Color.blue);
break;
case 1 :g.setColor(Color.cyan);
break;
case 2 :g.setColor(Color.gray);
break;
……
case 17 :g.setColor(Color.yellow);
break;
}
g.fill3DRect(brick[i].brick_x,brick[i].brick_y,brick[i].brick_width,brick[i].brick_height,true);
}
}
g.setColor(Color.red);
g.fillOval(x, y, 10, 10);
g.setColor(Color.blue);
g.fillRect(Rx,Ry,80,20);
brick[0]=new Brick(0,60,50,20);设置砖块坐标,ball=new Ball(150,450,10,10);和小球的坐标
if(brick[i].visible==true) 判断砖块存在,用switch语句,逐个对砖块填充颜色,最后四行代码是分别对小