色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java小球和木塊碰撞

Java小球和木塊碰撞是一個(gè)經(jīng)典的計(jì)算機(jī)圖形學(xué)問題,也是許多游戲中經(jīng)常使用的效果之一。下面我們將介紹如何在Java中實(shí)現(xiàn)小球和木塊的碰撞效果。

public class Ball {
private int x, y, r;
private int dx, dy;
public Ball(int x, int y, int r, int dx, int dy) {
this.x = x;
this.y = y;
this.r = r;
this.dx = dx;
this.dy = dy;
}
public void move() {
x += dx;
y += dy;
}
public void collide(Block block) {
int bx = block.getX();
int by = block.getY();
int bw = block.getWidth();
int bh = block.getHeight();
int cx = Math.max(Math.min(x, bx + bw), bx);
int cy = Math.max(Math.min(y, by + bh), by);
int distance = (x - cx) * (x - cx) + (y - cy) * (y - cy);
if (distance< r * r) {
if (cx == bx || cx == bx + bw) {
dx = -dx;
}
if (cy == by || cy == by + bh) {
dy = -dy;
}
}
}
}
public class Block {
private int x, y, w, h;
public Block(int x, int y, int w, int h) {
this.x = x;
this.y = y;
this.w = w;
this.h = h;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public int getWidth() {
return w;
}
public int getHeight() {
return h;
}
}

在上述代碼中,Ball表示小球,Block表示木塊。Ball和Block都有自己的坐標(biāo)和寬度、高度屬性,Ball還有半徑和速度屬性。move方法表示小球的運(yùn)動(dòng),collide方法表示小球和木塊之間的碰撞效果。

在collide方法中,首先計(jì)算出小球與木塊之間的最短距離,如果小球與木塊相交,則反彈小球方向。反彈方向是通過判斷小球與木塊碰撞點(diǎn)的位置來確定的。

在實(shí)際應(yīng)用中,我們可以在畫布中繪制小球和木塊,并通過Key事件或鼠標(biāo)事件控制小球的移動(dòng)方向。當(dāng)小球與木塊碰撞時(shí),我們可以播放碰撞音效或顯示碰撞效果來增加游戲體驗(yàn)。