用键盘控制小球的方向

来源:互联网 发布:湖边凶杀案知乎 编辑:程序博客网 时间:2024/05/21 01:48

面板类

import java.awt.Color;import java.awt.Graphics;import java.awt.Image;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import javax.swing.JPanel;public class TetrisPanel extends JPanel implements Runnable,KeyListener{//绘图线程类    public int ypos = -80, xpos = 90;    private Image iBuffer;    private Graphics gBuffer;    public TetrisPanel(){        //创建一个新的线程        Thread t = new Thread(this);        //启动线程        t.start();        //设定焦点在本面板并作为监听对象        setFocusable(true);        addKeyListener(this);    }    @Override    public void run() {//重载类方法        // TODO Auto-generated method stub        while (true){            try{                Thread.sleep(30);            }catch(InterruptedException e){}            ypos += 5;//修改小球的纵坐标            if (ypos > 300)                ypos = -80;            repaint();//床口重绘        }    }    public void paint(Graphics g){//重载绘图方法       // super.paint(g);//将原来画布上的东西擦掉        g.clearRect(0, 0, this.getWidth(), this.getHeight());        g.setColor(Color.RED);        g.fillOval(xpos, ypos, 80, 80);    }    @Override    public void keyPressed(KeyEvent e) {        // TODO Auto-generated method stub        int keyCode = e.getKeyCode();        switch(keyCode){        case KeyEvent.VK_LEFT:            xpos -= 10;            break;        case KeyEvent.VK_RIGHT:             xpos += 10;             break;        }        repaint();    }    @Override    public void keyReleased(KeyEvent arg0) {        // TODO Auto-generated method stub    }    @Override    public void keyTyped(KeyEvent arg0) {        // TODO Auto-generated method stub    }}
原创粉丝点击