这是两个简单的小项目,产生两个在重力的作用下产生运动的自由落体的小球,模拟简单的自由落体和平抛运动,可以用在教学演示中

建立小球

import java.awt.Color;

public class Ball {

// 圆心坐标

private int x, y;

private int speedX, speedY;

public static final int WIDTH = 20;

public static final int HALF_WIDTH = WIDTH >> 1;

public static final int G = 1;

public Ball(int x, int y, int speedX, int speedY) {

super();

this.x = x;

this.y = y;

this.speedX = speedX;

this.speedY = speedY;

}

public Ball() {

}

public void draw(Graphics g) {

g.setColor(Color.WHITE);

g.fillOval(x - HALF_WIDTH, y - HALF_WIDTH, WIDTH, WIDTH);

logic();

}

private void logic() {

x += speedX;

y += speedY;

speedY += G;

// 触底反弹

if (y >= BallFrame.FRAME_HEIGHT - HALF_WIDTH) {

y = BallFrame.FRAME_HEIGHT - HALF_WIDTH;

speedY -= 4;

speedY = - speedY;

if(speedY >0)

speedY = 0;

}

}

public int getX() {

return x;

}

public void setX(int x) {

this.x = x;

}

public int getY() {

return y;

}

public void setY(int y) {

this.y = y;

}

public int getSpeedX() {

return speedX;

}

public void setSpeedX(int speedX) {

this.speedX = speedX;

}

public int getSpeedY() {

return speedY;

}

public void setSpeedY(int speedY) {

this.speedY = speedY;

}

}

建立java窗口

import java.awt.Color;

import java.awt.Frame;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

public class BallFrame extends Frame implements Runnable{

public static final int FRAME_WIDTH = 800;

public static final int FRAME_HEIGHT = 200;

private Ball ball1;

private Ball ball2;

public BallFrame() {

setTitle("调皮的小球");

setSize(FRAME_WIDTH, FRAME_HEIGHT);

setLocation(200, 100);

setResizable(false);

initBalls();

initWindowListener();

setVisible(true);

new Thread(this).start();

}

private void initBalls(){

ball1 = new Ball(100, 20, 0, 0);

ball2 = new Ball(20, 20, 5, 0);

}

private void initWindowListener() {

addWindowListener(new WindowAdapter() {

@Override

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

}

@Override

public void paint(Graphics g) {

g.fillRect(0, 0, FRAME_WIDTH, FRAME_HEIGHT);

//ball1.draw(g);

ball2.draw(g);

}

@Override

public void run() {

try {

while(true){

Thread.sleep(30);

repaint();

}

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

调用主方法

public class MyGame {

public static void main(String[] args) {

new BallFrame();

}

}

java小球模拟平抛运动_实操项目跳跃的小球相关推荐

  1. java 转账_JAVA实操项目:转账接口设计

    原标题:JAVA实操项目:转账接口设计 在一个项目中,一般都会支付相关的业务,而涉及到支付必定会有转账的操作,转账这一步想起来算是比较关键的部分,这个接口的设计能力,也大致体现出一个人的水平. 昨天碰 ...

  2. 巨杉数据库学习笔记+巨杉数据库实操项目实践

    @TOC巨杉数据库学习笔记+项目实践心得 SequoialDB简介 SequoiaDB 巨杉数据库是一款金融级分布式数据库,主要面对高并发实时处理型场景提供高性能.可靠稳定以及无限水平扩展的数据库服务 ...

  3. Rust能力养成之(12)用Cargo进行项目管理:实操项目imgtool

    前言 上一篇,我们讲了 详谈Cargo.toml 用VSCode建立Rust开发环境 在本篇中,我们利用之前所学,进行一个实操项目. 正文 应该说,到现在我们对如何使用Cargo管理Rust项目已经有 ...

  4. 实验1 线性回归 实操项目1——糖尿病情预测

    线性回归 实操项目1--糖尿病情预测 线性回归 实操项目1--糖尿病情预测 实验要求: 一.加载糖尿病数据集diabetes,观察数据 二.基于线性回归对数据集进行分析 三.考察每个特征值与结果之间的 ...

  5. 002_韦东山嵌入式Linux应用开发基础_实操碰到的问题集锦

    嵌入式Linux应用开发基础_韦东山教程思考笔记 配合<嵌入式Linux应用开发完全手册V5.1_IMX6ULL_Pro开发板> 文件目录 访问根/目录下,Filesystem Root目 ...

  6. 分享一个入门级实操项目,思路非常棒!

    关于Java学习,你是否有这样的烦恼? 非科班出身,学习路径不清晰杂乱无绪: 自学期间遇到各种问题,无人帮助解决: 没有项目经验,知识无法串联用于实践: ...... 如果你有这样的烦恼,那你一定不能 ...

  7. tengine简单安装_实操丨如何在EAIDK上部署Tengine开发AI应用之物体检测应用入门(C++)...

    前言:近期推出的嵌入式AI系列直播公开课受到广大开发者的喜爱,并收到非常多的反馈信息,其中对如何在EAIDK上面部署Tengine开发AI应用感兴趣的开发者不在少数,我们将分2期以案例实操的形式详细介 ...

  8. 无敌!阿里巴巴开源落地可实操项目:网约车+咚宝商城+英雄传说

    不得不说,现在有关程序员的书籍.笔记或者视频满地都是,千篇一律,大部分的程序员都会去收藏,那么你的学习资料是否已经在收藏夹里吃灰了呢?是的,现在这种现象是很常见的. 那么,有了理论知识,是不是需要项目 ...

  9. 这简直是无敌好嘛!阿里巴巴开源落地可实操项目:网约车+咚宝商城+英雄传说三合一

    不得不说,现在有关程序员的书籍.笔记或者视频满地都是,千篇一律,大部分的程序员都会去收藏,那么你的学习资料是否已经在收藏夹里吃灰了呢?是的,现在这种现象是很常见的. 那么,有了理论知识,是不是需要项目 ...

最新文章

  1. Python 'takes exactly 1 argument (2 given)' Python error
  2. java8 多个字段分组_MySQL基础之分组查询
  3. UriComponentsBuilder和UriComponents url编码
  4. 阳泉2021高考成绩查询时间段,2021年阳泉高考成绩排名及成绩公布时间什么时候出来...
  5. 我的JavaScript for Visual Studio插件开源了
  6. 攀爬者(洛谷P5143题题解,Java语言描述)
  7. 【Python学习】 caffe-master 之 mnist 详解
  8. 机器学习算法——K近邻法
  9. Android Stuido 快速设置成eclipse的快捷键习惯
  10. 华为算法精英赛(题1:判断输入天数为当年的第几天)
  11. 实现成长之路——SpringBean三:实例化Bean的姿势都有哪些?
  12. jsecharts如何改变占比_什么是基础代谢?如何提高基础代谢?基础代谢对减肥很重要...
  13. juniper使用U盘安装junos10k2系统
  14. 网络规划设计师教程知识点精讲之计算机网络汇总
  15. 渐近记号(Asymptotic Notations)
  16. 常用英文学术论文写作词汇与表达
  17. ET框架学习——消息系统之四
  18. 逻辑漏洞之任意密码重置
  19. 基于vue的选择月日组件
  20. 供应化学试剂Boc-NH-PEG-NH2,Boc-NH-PEG-amine,叔丁氧羰基PEG氨基

热门文章

  1. CH552 CH554 51单片机标准串口使用教程及常见问题
  2. 光源类型-CIE标准光源
  3. vue脚手架-上传图片 编辑修改图片(三)
  4. 2000-2020全国及31省城投债数据
  5. linux 远程唤醒命令,使用命令行远程网络唤起主机
  6. Android 图片选择库美哭了
  7. 简约开源导航书签管理系统PHP源码
  8. 基于磁阻传感器的断路保护装置设计
  9. Redis学习笔记(十八) 集群(下)
  10. 快讯:戴尔或考虑公开上市,或全资收购威睿