java小球模拟平抛运动_实操项目跳跃的小球
这是两个简单的小项目,产生两个在重力的作用下产生运动的自由落体的小球,模拟简单的自由落体和平抛运动,可以用在教学演示中
建立小球
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小球模拟平抛运动_实操项目跳跃的小球相关推荐
- java 转账_JAVA实操项目:转账接口设计
原标题:JAVA实操项目:转账接口设计 在一个项目中,一般都会支付相关的业务,而涉及到支付必定会有转账的操作,转账这一步想起来算是比较关键的部分,这个接口的设计能力,也大致体现出一个人的水平. 昨天碰 ...
- 巨杉数据库学习笔记+巨杉数据库实操项目实践
@TOC巨杉数据库学习笔记+项目实践心得 SequoialDB简介 SequoiaDB 巨杉数据库是一款金融级分布式数据库,主要面对高并发实时处理型场景提供高性能.可靠稳定以及无限水平扩展的数据库服务 ...
- Rust能力养成之(12)用Cargo进行项目管理:实操项目imgtool
前言 上一篇,我们讲了 详谈Cargo.toml 用VSCode建立Rust开发环境 在本篇中,我们利用之前所学,进行一个实操项目. 正文 应该说,到现在我们对如何使用Cargo管理Rust项目已经有 ...
- 实验1 线性回归 实操项目1——糖尿病情预测
线性回归 实操项目1--糖尿病情预测 线性回归 实操项目1--糖尿病情预测 实验要求: 一.加载糖尿病数据集diabetes,观察数据 二.基于线性回归对数据集进行分析 三.考察每个特征值与结果之间的 ...
- 002_韦东山嵌入式Linux应用开发基础_实操碰到的问题集锦
嵌入式Linux应用开发基础_韦东山教程思考笔记 配合<嵌入式Linux应用开发完全手册V5.1_IMX6ULL_Pro开发板> 文件目录 访问根/目录下,Filesystem Root目 ...
- 分享一个入门级实操项目,思路非常棒!
关于Java学习,你是否有这样的烦恼? 非科班出身,学习路径不清晰杂乱无绪: 自学期间遇到各种问题,无人帮助解决: 没有项目经验,知识无法串联用于实践: ...... 如果你有这样的烦恼,那你一定不能 ...
- tengine简单安装_实操丨如何在EAIDK上部署Tengine开发AI应用之物体检测应用入门(C++)...
前言:近期推出的嵌入式AI系列直播公开课受到广大开发者的喜爱,并收到非常多的反馈信息,其中对如何在EAIDK上面部署Tengine开发AI应用感兴趣的开发者不在少数,我们将分2期以案例实操的形式详细介 ...
- 无敌!阿里巴巴开源落地可实操项目:网约车+咚宝商城+英雄传说
不得不说,现在有关程序员的书籍.笔记或者视频满地都是,千篇一律,大部分的程序员都会去收藏,那么你的学习资料是否已经在收藏夹里吃灰了呢?是的,现在这种现象是很常见的. 那么,有了理论知识,是不是需要项目 ...
- 这简直是无敌好嘛!阿里巴巴开源落地可实操项目:网约车+咚宝商城+英雄传说三合一
不得不说,现在有关程序员的书籍.笔记或者视频满地都是,千篇一律,大部分的程序员都会去收藏,那么你的学习资料是否已经在收藏夹里吃灰了呢?是的,现在这种现象是很常见的. 那么,有了理论知识,是不是需要项目 ...
最新文章
- Python 'takes exactly 1 argument (2 given)' Python error
- java8 多个字段分组_MySQL基础之分组查询
- UriComponentsBuilder和UriComponents url编码
- 阳泉2021高考成绩查询时间段,2021年阳泉高考成绩排名及成绩公布时间什么时候出来...
- 我的JavaScript for Visual Studio插件开源了
- 攀爬者(洛谷P5143题题解,Java语言描述)
- 【Python学习】 caffe-master 之 mnist 详解
- 机器学习算法——K近邻法
- Android Stuido 快速设置成eclipse的快捷键习惯
- 华为算法精英赛(题1:判断输入天数为当年的第几天)
- 实现成长之路——SpringBean三:实例化Bean的姿势都有哪些?
- jsecharts如何改变占比_什么是基础代谢?如何提高基础代谢?基础代谢对减肥很重要...
- juniper使用U盘安装junos10k2系统
- 网络规划设计师教程知识点精讲之计算机网络汇总
- 渐近记号(Asymptotic Notations)
- 常用英文学术论文写作词汇与表达
- ET框架学习——消息系统之四
- 逻辑漏洞之任意密码重置
- 基于vue的选择月日组件
- 供应化学试剂Boc-NH-PEG-NH2,Boc-NH-PEG-amine,叔丁氧羰基PEG氨基