java 小球碰撞_用java实现小球撞墙

该博客介绍了一个使用Java编程实现的小球碰撞模拟。通过创建`MyBall`类和`ballPanel`类,实现了小球在窗口内的移动以及与边界碰撞后的反射效果。`ballPanel`类继承自`JPanel`,并实现了`Runnable`和`KeyListener`接口,以响应键盘输入控制小球的移动,并在`paint`方法中绘制小球。在`run`方法中,通过循环更新小球的位置和改变运动方向来模拟碰撞。
摘要由CSDN通过智能技术生成

import java.awt.event.KeyListener;

import java.awt.event.KeyEvent;

import java.awt.Color;

import javax.swing.JPanel;

import java.awt.Graphics;

public class MyBall extends JFrame{

ballPanel bp;

public MyBall(){

bp=new ballPanel();

Thread t=new Thread(bp);

t.start();

bp .addKeyListener(bp);

this.addKeyListener(bp);

this.add(bp);

this.setSize(400,500);

//this.setBackground(new Color(50,200,120));

//this.setLocationRelativeTo(null);

this.setLocation(300,100);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public static void main(String[] args){

MyBall my=new MyBall();

my.setVisible(true);

}

}

class ballPanel extends JPanel implements Runnable,KeyListener{

private int x=50;

private int y=50;

int flag=0;

public ballPanel(){

this.setBackground(new Color(50,200,120));

}

public void paint(Graphics g){

super.paint(g);

g.fillOval(x, y,30,30);

}

public void keyPressed(KeyEvent e){

if(e.getKeyCode()==37){

x--;

}

if(e.getKeyCode()==38){

y--;

}

if(e.getKeyCode()==39){

x++;

}

if(e.getKeyCode()==40){

y++;

}

//   System.out.println(e.getKeyChar());

this.repaint();

}

public void keyReleased(KeyEvent e){

}

public void keyTyped(KeyEvent e){

}

public void run(){

while(true){

if(flag==0){

x++;

y++;

}

if(flag==1){

x--;

y++;

}

if(flag==2){

x--;

y--;

}

if(flag==3){

x++;

y--;

}

if(x>340){

if(flag==0){

flag=1;

}else{

flag=2;

}

}

if(y>430){

if(flag==1){

flag=2;

}else{

flag=3;

}

}

if(x<0){

if(flag==2){

flag=3;

}else{

flag=0;

}

}

if(y<0){

if(flag==3){

flag=0;

}else{

flag=1;

}

}

try{

Thread.sleep(5);

}catch(Exception e){

}

this.repaint();

}

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值