package Parabola;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;
public class Parabola1 extends JFrame {
private static final int width=1000;
private static final int height=700;
private int x=150,y=300;//小球的坐标
private int r=20;//小球的半径
private int a=1;//垂直位移改变量
private int b=10;//水平位移改变量
private int m=3;//垂直位移改变增量
private int btmH=650;//地板高度
private int left=0;//左边墙面的水平位置
private int right=975;//右边墙面的水平位置
private int i=0;
public Parabola1(){
super("抛物线运动");
this.setBounds(200, 10, width, height);
ParabolaPane pane=new ParabolaPane();
this.add(pane, "Center");
this.addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
});
this.setVisible(true);
}
class ParabolaPane extends JPanel{
public ParabolaPane(){
setSize(width, height);
setVisible(true);
Timer timer=new Timer(30,new TimerListener());
timer.start();
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
Color c=g.getColor();
g.setColor(Color.red);
g.fillOval(x, y, r, r);
g.setColor(Color.BLUE);
g.fillRect(right, 0, 20, 700);
g.fillRect(left, 0, 20, 700);
g.fillRect(0, btmH, 1000, 20);
g.setColor(c);
}
public int getQy(){
if((y+r)>btmH){
y=btmH-20;
a=-a;
}
if(b==0){
y=630;
a=0;
}
a=a+m;
y=y+a;
return y;
}
public int getQx(){
if((x+r)>right||(x-r)<left){
b=b*(-1);
}
if((x+r)>right){
x=right-20;
}else if((x-r)<left){
x=left+20;
}
if(y/((btmH-20)/10)==10){
if(i%100==0){
b=9*b/10;
}
}
x=x+b;
return x;
}
class TimerListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
x=getQx();
y=getQy();
i++;
repaint();
System.out.println("i="+i+" a="+a+" b="+b+" x="+x+" y="+y+" y+r="+(y+r));
}
}
}
public static void main(String arg[]){
Parabola1 para=new Parabola1();
}
}
java做的小球弹跳小程序源码
5星 · 超过95%的资源 需积分: 37 106 浏览量
2011-04-16
22:58:36
上传
评论 9
收藏 5KB ZIP 举报
暂时不想说
- 粉丝: 111
- 资源: 5
最新资源
- 直接插入排序,冒泡排序,直接选择排序.zip
- 在排序2的基础上,再次对快排进行优化,其次增加快排非递归,归并排序,归并排序非递归版.zip
- 实现了7种排序算法.三种复杂度排序.三种nlogn复杂度排序(堆排序,归并排序,快速排序)一种线性复杂度的排序.zip
- 冒泡排序 直接选择排序 直接插入排序 随机快速排序 归并排序 堆排序.zip
- 课设-内部排序算法比较 包括冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序和堆排序.zip
- Python排序算法.zip
- C语言实现直接插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序、归并排序、计数排序,并带图详解.zip
- 常用工具集参考用于图像等数据处理
- 音乐展示网页、基于Stenography的图像数字水印添加与提取,以及基于颜色矩和Tamura算法的图像相似度评估算法py源码
- 基于EmguCV(OpenCV .net封装),图像数字水印加解密算法的实现,其中包含最低有效位算法,离散傅里叶变换算法+文档书
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈