该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

package gui;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Rectangle;

import java.util.ArrayList;

/**

* 小鸟类

* @author class

*

*/

public class Bird {

double x;

double y;

int w;

int h;

double vx;// 水平速度

double vy;// 垂直速度

double time;// 计时器

double timey;// y轴计时器

double oldx;// 小鸟的出发点坐标(松开鼠标的一刹那)

double oldy;// 小鸟的出发点坐标(松开鼠标的一刹那)

double oldvy;// 小鸟的触地反弹前的瞬间垂直速度

int n = 0; // 记录添加尾迹的次数

boolean moved; // 小鸟是否在运动

ArrayList tails = new ArrayList(); //这是小鸟的尾迹, (Ball 的**)

public Bird (){

}

public Bird(int x, int y ,int size){

this.w = size;

this.h = size;

init(x,y);

}

/**

* 初始化方法

* @param x

* @param y

*/

public void init(int x, int y){

this.x = x;

this.y = y;

moved = false;

time = 0;

timey= 0;

}

/**

* 设置水平和垂直初速度

* @param mx 小鸟距离弹弓中心的x轴距离

* @param my 小鸟距离弹弓中心的y轴距离

*/

public void setVxy(int mx, int my){

vx = mx;

vy = my;

}

/**

* 画自己

*/

public void draw(Graphics g){

// 画飞行的轨迹

for(Ball ball : this.tails){ // foreach (元素类型 局部变量 : **对象)

ball.draw(g); // 画一个小球

}

g.drawImage(GH.imgBird, (int)x,(int)y, 30, 30, null);// 画小鸟

// 绘制边界矩形

g.setColor(Color.white);

g.drawRect(this.getBound().x, this.getBound().y, this.getBound().width, this.getBound().height);

}

public void setOldXY(){

oldx = x;

oldy = y;

this.tails.clear();// 清空尾迹

}

/**

* 更新

*/

public void update(){

if (moved) {

time++;

timey++;

double tempx = getDistance(vx, time / 10.0);

double tempy = getDistanceDown(vy, timey / 10.0, 9.8);

this.oldvy = (oldy + tempy - y)*175 / 20.0;// 求出即时速度

x = oldx + tempx;

y = oldy + tempy;

if(this.x >1024 || this.y > 768){

this.init(215, 420);

}

if(time % 5 == 0){

addTails();// 添加小球 -- 飞行的轨迹

}

}

}

/**

* 计算水平位移

* @param v 水平初速度

java 小球抛物线_关于【愤怒的小鸟】其中的算法(自由落体,抛物线,碰撞,反弹)...相关推荐

  1. 小球自由落体及碰撞反弹

    目录 简述 构成 小球 按钮 运动轨迹 总结 简述 通过setInterval()定时刷新小球位置来完成小球运动状态,模拟自由落体加速度及碰撞反弹效果 构成 整体的物体很少,只有一个小球及一个开始按钮 ...

  2. python画抛物线_如何使用python的matplotlib模块画抛物线

    1 第一步,点击键盘 win+r,打开运行窗口:在窗口中输入"cmd",点击确定,打开windows命令行窗口. 2 第二步,在cmd命令行窗口中输入"python&qu ...

  3. java 笛卡尔积 数组_在JS中笛卡尔积算法与多重数组笛卡尔积(详细教程)

    这篇文章主要介绍了JS笛卡尔积算法与多重数组笛卡尔积实现方法,结合实例形式分析了javascript根据对象或数组生成笛卡尔积的相关操作技巧,需要的朋友可以参考下 本文实例讲述了JS笛卡尔积算法与多重 ...

  4. java单词匹配算法_前端学数据结构与算法(八): 单词前缀匹配神器-Trie树的实现及其应用...

    前言 继二叉树.堆之后,接下来介绍另外一种树型的数据结构-Trie树,也可以叫它前缀树.字典树.例如我们再搜索引擎里输入几个关键字之后,后续的内容会自动续上.此时我们输入的关键词也就是前缀,而后面的就 ...

  5. html画布实现小球沿直线下落,js+html5实现的自由落体运动效果代码

    本文实例讲述了js+html5实现的自由落体运动效果.分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: /p> "http://www.w3.org/TR/xhtm ...

  6. java模拟抛物线_小tips:用java模拟小球做抛物线运动

    这几天刚刚学习了java线程,然后跟着书做了几个关于线程的练习,其中有一个练习题是小球动起来.这个相信很简单,只要运用线程就轻松能够实现.然后看到了它的一个课后思考题,怎样让小球做个抛物线运动,这点我 ...

  7. java小球模拟平抛运动_实操项目跳跃的小球

    这是两个简单的小项目,产生两个在重力的作用下产生运动的自由落体的小球,模拟简单的自由落体和平抛运动,可以用在教学演示中 建立小球 import java.awt.Color; public class ...

  8. JVM - 结合代码示例彻底搞懂Java内存区域_对象在堆-栈-方法区(元空间)之间的关系

    文章目录 Pre 示例demo 总体关系 代码示例论证 反汇编 Pre JVM - 结合代码示例彻底搞懂Java内存区域_线程栈 | 本地方法栈 | 程序计数器 中我们探讨了线程栈中的内部结构 ,大家 ...

  9. java 3d游戏_不放一行代码分享一下java实现3D游戏逻辑

    这篇日记是对最近几周Java大作业写的一个3D打怪挖矿游戏进行记录和总结.另一个目的也是因为我发现身边很多朋友对3D游戏逻辑很有兴趣.所以写这篇日记可以介绍一下一个3D游戏是如何实现基础功能的.即使没 ...

  10. Java计算时间差_传统的SimpleDateFormat类

    Java计算时间差_传统的SimpleDateFormat类 SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd ...

最新文章

  1. 我花了三个小时写了一道题的六千字题解....(POJ 2888 Magic Bracelet)
  2. Win2003用NAT实现ADSL共享与×××服务器
  3. 进阶学习(3.7) Flyweight Pattern 享元模式
  4. html绘制头像原样教程,CSS实例教程:创意CSS3头像展示教程
  5. 真香!2020最新版《神经网络与深度学习》中文版更新完毕,PDF免费开放下载~...
  6. OpenShift 4 - DevSecOps Workshop (10) - 向Stage环境部署应用镜像
  7. [刘阳Java]_CSS数字分页效果
  8. mysqlin索引失效的情况
  9. WebGIS设计思想
  10. Eclipse中Errors occurred during the build最简单的解决方法
  11. Hibernate使用的一些细节注意事项
  12. Linux命令使用练习一
  13. 15. POSIX 线程
  14. python 批量gif转tif_使用Python 批量转移*.tif和*.mov文件
  15. 一份数据工程师必备的学习资源,干货满满(附链接)
  16. 使用fastadmin的页面跳转模板
  17. Premiere 初识PR
  18. 以智能卡平台为硬件的嵌入式加密IC的优势
  19. 镜像翻转_【资讯】装动镜世界版假面骑士时王登场,镜像翻转也算新规?
  20. linux word 转 pdf 上类似百度文库开发研究与实战

热门文章

  1. RabbitMq(十三)消息发送确认与回调机制
  2. golang 三种接口的定义方式
  3. mysql 命令 select_Mysql基础命令(二)select查询操作
  4. Dubbo源码分析系列之-整体架构设计
  5. openvswitch patch port使用方法
  6. 细说Golang的JSON解析
  7. Laravel核心解读--Database(一)基础介绍
  8. 再聊Spring Bean的生命周期
  9. 实战Spring Boot 2.0系列(一) - 使用Gradle构建Docker镜像
  10. 解读新突破“中国量子计算机”,真比神威·太湖之光还厉害?