重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
我没用java写过代码,所以我只说算法,代码你自己翻译下
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的无棣网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
按C的语法来:
void xiaoqiu
{
int UB=10,DB=200,LB=10,RB=200; //定义弹球范围的边界
int sh=1; //定义横向步长
int sz=1; //定义纵向步长(两步长之比决定了反弹的角度)
int x=LB,y=UB; //定义坐标
int i=10000; //循环次数(自己选择跳出手段)
while(i0)
{
i--;
x=x+sh;
if(x=RB||x=LB) sh=-sh; //碰壁后步长变反
y=y+sz;
if(y=DB||y=UB) sz=-sz; //碰壁后步长变反
(显示代码)
}
return;
}
总得来说,就是相当于横向和纵向分别处理移动、反弹的问题,碰壁后步长变为相反数
不懂请追问
2个球相撞,2个球心在一定距离内就可以认为相撞。
两球相撞反弹运动 if((x1-x20)(y1-y20)){ if((x1-x2=r)(y1-y2=r)){ dr1=3; dr2=1;} } if((x1-x20)(y1-y20)){ if((x1-x2=r)(y2-y1=r)){ dr1=0; dr2=2;} } if((x2-x10)
如果要在 Java 的线程小球碰撞游戏中制作结束画面,需要实现以下步骤:
在程序中创建一个画布,用于绘制结束画面。
在游戏结束时,使用画布的 drawString 方法在画布上绘制文字,表示游戏结束。
使用画布的 repaint 方法刷新画布,让结束画面显示在屏幕上。
例如,可以这样实现结束画面:
// 创建画布
Canvas canvas = new Canvas();
// 绘制文字
canvas.drawString("Game Over", 100, 100);
// 刷新画布
canvas.repaint();
在这里,我们创建了一个画布,并在画布上绘制了文字,表示游戏结束。最后,我们使用了 repaint 方法,让结束画面显示在屏幕上。
此外,如果需要在结束画面上显示更多的信息,比如游戏得分、玩家名字等,也可以使用类似的方法来实现。例如,可以这样显示游戏得分:
// 绘制文字
canvas.drawString("Game Over", 100, 100);
canvas.drawString("Score: " + score, 100, 120);
// 刷新画布
canvas.repaint();
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class RunningBallDemo extends JFrame {
public static void main(String args[]) {
new RunningBallDemo();
}
public RunningBallDemo() {
Ball ballPanel = new Ball(5, 5);
getContentPane().add(ballPanel);
setBackground(Color.BLACK);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
setSize(350, 350);
setVisible(true);
Thread thread1 = new Thread(ballPanel);
thread1.start();
}
}
class Ball extends JPanel implements Runnable {
int rgb = 0;
Color color;
int x, y;
int dx = 5, dy = 5;
Ball(int x, int y) {
this.x = x;
this.y = y;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
setBackground(Color.BLACK);
g.setColor(color);
g.fillOval(x, y, 50, 50);
}
public void run() {
while (true) {
if (x = 0) {
dx = 5;
updateBallColor();
} else if ((x + 50) = getWidth()) {
dx = -5;
updateBallColor();
}
if (y = 0) {
dy = 5;
updateBallColor();
} else if ((y + 50) = getHeight()) {
dy = -5;
updateBallColor();
}
x = x + dx;
y = y + dy;
repaint();
try {
Thread.sleep(25);
} catch (InterruptedException e) {
;
}
}
}
public void updateBallColor() {
rgb = new Random().nextInt();
color = new Color(rgb);
}
}