java自学笔记(4)-Stanford CS106A 弹球动画 20.9.9
第10课,制作单球动画;
1.视频链接:
bouncing ball
2.代码分析:
/*file name bouncingBallAnimation.java
* to make an animation of ball bounce from the left corner to
* right corner
*
*/
import acm.graphics.GOval;
import acm.program.GraphicsProgram;
public class bouncingBall extends GraphicsProgram {
/**
*
*/
private static final long serialVersionUID = 1L;
/**to define the diameter of ball equal to 30 */
private static final double Diam=30;
/**to define the gravity */
private static final double Gravity=3;
/** */
/** define the velocity on Y line reduce 0.1 when bounce back*/
private static final double Yvel_reduce=0.9;
/**to pause the animation 50 senconds*/
private static final int Delay=50;-----------------------暂停
/**define the start velocity on Y line equals to 0
* define the velocity on X line equals to 5 */
private static final double Xvel=5.0;
private static final double S_Yvel=0.0;----------------------常量
private double Yvel=0.0;-------------------实例变量
/**define the staring location of ball*/
private static final double S_X=Diam/2;
private static final double S_Y=100;
/**private Instance variable*/
private GOval ball;------------------------实例变量
public void run() {
setup();
while(ball.getX()<getWidth()) {------------------球的左上角X坐标 小于 窗口宽度时,球向右运动
moveBall();----------------------在X方向的速度不变,在Y方向加速下落
checkForCollision();--------------------撞击后,反向运动,Y方向的速度减少10%
pause(Delay);
}
}
private void setup() {----------------准备对象
ball=new GOval(S_X, S_Y,Diam, Diam);------------弹球的初始坐标(15,100,30,30)
ball.setFilled(true);
add(ball);
}
private void moveBall() {--------------下落时的移动方式
Yvel+=Gravity;--------------下落时,Y方向的速度+重力加速度
ball.move(Xvel,Yvel);----------------弹球在X和Y方向以不同的速度运动
}
private void checkForCollision() {
if(ball.getY()>getHeight()-Diam) {-----------------球的左上角坐标Y的高度-球的直径后,超过窗口高度时,球反向弹起
Yvel=-Yvel*Yvel_reduce;--------------球在Y方向做反向运动,速度受重力影响减少到原来的90%
double diff=ball.getY()-(getHeight()-Diam);-----------假设球运动到窗口下方,投影的距离=反弹的距离?(速度不同,距离应该是不一样的????)
ball.move(0, -2*diff);-----接上,如果球运动到了窗口下方投影的位置,此时应该往正上方移动2个double diff的距离
}
}
}
java自学笔记(4)-Stanford CS106A 弹球动画 20.9.9相关推荐
- JAVA自学笔记07
JAVA自学笔记07 1.构造方法 1) 例如:Student s = new Student();//构造方法 System.out.println(s);// Student@e5bbd6 2)功 ...
- JAVA自学笔记24
JAVA自学笔记24 1.能使用同步代码块就使用同步代码块,除非锁对象是this,就可以考虑使用同步方法.静态方法的锁是类的字节码对象. 2.JDK5新特性 1)接口Lock void Lock()/ ...
- JAVA自学笔记22
JAVA自学笔记22 1.操作基本数据类型的流 DataInputStream DataOutputStream 数据输出流允许应用程序以适当方式将基本的Java数据类型写入输出流中.然后,应用程序可 ...
- JAVA自学笔记21
JAVA自学笔记21 1.转换流 由于字节流操作中文不是非常方便,因此java提供了转换流 字符流=字节流+编码表 1)编码表 由字符及其对应的数值组成的一张表 图解: 2)String类的编码和解码 ...
- JAVA自学笔记08
JAVA自学笔记08 1.构造方法私有,外界就不能再创建对象 2.说明书的制作过程 1)写一个工具类,在同一文件夹下,测试类需要用到工具类,系统将自动编译工具类:工具类的成员方法一般是静态的,因此在测 ...
- JAVA自学笔记25
JAVA自学笔记25 1.GUI 1)图形用户接口,以图形的方式,来显示计算机操作的界面,更方便更直观 2)CLI 命令行用户接口,就是常见的Dos,操作不直观 3) 类Dimension 类内封装单 ...
- JAVA自学笔记23
JAVA自学笔记23 1.多线程 1)引入: 2)进程 是正在运行的程序.是系统进行资源分配和调用的独立单位.每一个进程都有它自己的内存空间和系统资源. 多进程: 单进程的计算机只能做一件事情,而现在 ...
- Java自学笔记——Java面向对象——04.抽象类、接口、内部类
Java 面向对象各节 Java自学笔记--Java面向对象--01.回顾方法 Java自学笔记--Java面向对象--02.构造器.类和对象 Java自学笔记--Java面向对象--03.封装.继承 ...
- 廖雪峰Java自学笔记------Java简洁
廖雪峰Java自学笔记------Java简洁 这是专门针对小白的零基础Java教程. 为什么要学Java? 因为Java是全球排名第一的编程语言,Java工程师也是市场需求最大的软件工程师,选择Ja ...
- Java自学笔记总结04
Java自学笔记04 一.Lambda表达式 1.1 函数式编程思想概述 1.2 体验Lambda表达式 1.3 Lambda表达式的标准格式 1.4 Lambda表达式的使用 1.5 Lambda表 ...
最新文章
- uva 10759 Dice Throwing
- ruijie交换机lacp动态_Server2016和华为s5720交换机链路聚合增加带宽
- vue报错 TypeError: merge is not a function
- java 像素级碰撞检测,» 像素级碰撞检测类
- python点击网页按钮 没有id_button没有id,没有onclick事件。点击却有提交的功能,如何实现的?...
- Laravel的中间件
- mysql和php长度的漏洞_mysql和php字符长度判断
- php 获取小数精度,php小数精度问题
- 高等代数(邱维声):高等代数的研究对象
- 沧小海笔记之PCIE协议解析——第二章 详述PCIE事务层
- 模拟集成电路设计基础知识(一):MOS管结构及其I/V特性
- 创建oracle本地数据库步骤详解
- Fluent动网格知识汇总
- SpringCloud-创建服务消费者-Feign方式(附代码下载)
- java 字数_java 字数统计
- C/C++编程学习 - 第13周 ⑤ 财务管理
- 浅谈《网络数据安全标准体系建设指南》(征求意见稿)的意见(附全文)
- MSRA-TD5000数据集使用
- 精简Cocos2dx-python环境搭建工程创建过程
- php 微擎钻石投票二开,[模块插件]微擎钻石投票男神女神公众号投票系统完美运营版其他-(微信)小程序...
热门文章
- 解决You must configure either the server or JDBC driver (via the serverTimezone conf)
- 裁剪算法(计算机图形学)
- 如何定义智慧与关于生活的美好 - 与子同 Yue 001
- 算法注册机编写扫盲之续篇---第二课
- 毕业生怎样尽快把自己打造成国际专家级人物?
- .Net -- EF Core详解
- 华师大计算机学硕分数线,华东师范大学2021考研复试分数线已公布
- C# 身份证号码验证正则和验证函数
- 飞马间谍软件猖獗,苹果iOS系统被击穿
- Netty网络编程学习笔记(四)——进阶篇