【汇智学堂】JAVA多线程实现的小游戏-弹球-4

在这里插入图片描述
修改ThreadBall类:

package com.huizhi;

public class ThreadBall extends Thread {

    public void run(){
        while(true){
            Ui.PositionY+=50;
            try {
                sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

Ui类:

/**
 *  定义界面
 *  显示球板
 *  球板动画
 *  球板对键盘的响应
 *  键盘事件响球拍的左右移动
 * 球直线下落
 */
package com.huizhi;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class Ui extends JFrame {

    static int PositionA=50,RecWidth=50,RecHeight=20,Width=900;
    static int PaddleWidth=50,PaddleHeight=50,PositionX=200,PositionY=200;

    public Ui(){
            setTitle("弹球游戏");
            setBackground(Color.WHITE);
            setSize(900, 600);
            setLocation(300, 50);
            setResizable(false);
            setVisible(true);
            setDefaultCloseOperation(EXIT_ON_CLOSE);

            this.addKeyListener(new KeyAdapter() {
                @Override
                public void keyPressed(KeyEvent e) {
                    //JOptionPane.showMessageDialog(null,e.getKeyChar(),"22",JOptionPane.INFORMATION_MESSAGE);
                    char aa=e.getKeyChar();
                    if(aa=='d'){//此处测试时注意字母输入时的大小写
                     PositionA+=50;
                    }
                    else if(aa=='a'){
                        PositionA-=50;
                    }
                }
            });
        }

    public void paint(Graphics g) {
        g.clearRect(0,0,900,600);//0,0:是相对于容器的坐标
        g.setColor(Color.red);
        g.fillRect(PositionA - 50, 450, RecWidth, RecHeight);

        g.setColor(Color.green);
        g.fillOval(PositionX,PositionY,PaddleWidth/2,PaddleHeight/2);
      }
    }

发布了268 篇原创文章 · 获赞 47 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_39593940/article/details/103612868
今日推荐