编写JAVA线程两个正方形分别从左上角移动 80

一个横向一个纵向,随机运动,当碰撞在一起时,就互相等一会儿关系到进程的同步问题,求代码... 一个横向 一个纵向,随机运动,当碰撞在一起时,就互相等一会儿
关系到进程的同步问题,求代码
展开
 我来答
未来需努力点缀
2013-05-26 · TA获得超过4679个赞
知道大有可为答主
回答量:850
采纳率:50%
帮助的人:539万
展开全部

lz 你好


我做了一个比较简单的雏形


绿色正方形水平随机运动

蓝色正方形垂直随机运动

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.math.*;

public class MoveRect extends Frame implements Runnable{
private Rectangle hRect, vRect;
private Image buffer;
private Object o = new Object();

public MoveRect(){
super("MoveRect");

hRect = new Rectangle(50,0,50,50);//水平随机运动的正方形
vRect = new Rectangle(0,50,50,50);//垂直随机运动的正方形

setUndecorated(true);
setLocation(500,200);
setSize(400,400);
setVisible(true);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}

//启动循环绘制(使正方形一直循环的运动)
public void circleDraw(){
}

//绘制正方形的状态
public void drawRect(Graphics g,Rectangle r){
g.drawRect(r.x, r.y, r.width, r.height);
}

//双缓冲机制(主要解决闪屏)
public void update(Graphics g){
buffer = createImage(getSize().width, getSize().height);

if(buffer != null){
Graphics g2 = buffer.getGraphics();
paint(g2);
g2.dispose();
g.drawImage(buffer, 0, 0, this);
}

else{
paint(g);
}
}

public void paint(Graphics g){
g.setColor(Color.GREEN);
drawRect(g,hRect);
g.setColor(Color.BLUE);
drawRect(g,vRect);

hRect.x = (int)(Math.random()*351);
vRect.y = (int)(Math.random()*351);
}

public void run(){
while(true){
stop();
rePaint();
}
}

//同步方法rePaint
public synchronized void rePaint(){
repaint();
}

//同步方法stop
public synchronized void stop(){
if(hRect.x <= 50 && vRect.y <= 50){
try {
Thread.sleep(500);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}

public static void main(String[] args){
new Thread(new MoveRect()).start();
}
}



希望能帮助你哈

燎火6
2013-05-25
知道答主
回答量:19
采纳率:0%
帮助的人:14.2万
展开全部
首先,我没有代码,不太能听懂你的意思,
照我的理解建议下:
写一个带锁的方法,这个方法用来移动物体
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-05-26
展开全部
就是JAVA 2D里面的绘图吧,判断是否碰在一起,根据坐标+宽高度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式