首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

线程的综合习题(气泡的绘制)

2013-07-21 
线程的综合练习(气泡的绘制)关于气泡的操作总共有5个:增加气泡,让气泡同时暂停,让气泡同时开始运动,点按钮

线程的综合练习(气泡的绘制)
关于气泡的操作总共有5个:
增加气泡,让气泡同时暂停,让气泡同时开始运动,点按钮随时消失一个气泡,点气泡让点到的气泡消失。

需要考虑的方面还有气泡立体感的绘制,在链表队列中对线程进行操作。

这次把每个气泡放在了不同的画布内,可以防止出现都在一个画布内互相影响出现错误的情况。
思路有两种:
1.主函数每次把新建的画布传给按钮监听器,监听器把画布传给线程。
2.主函数每次把面板传给监听器,在监听器里创建新画布,传给线程。

气泡移动的绘制和之前的小球都一样,暂停的控制也基本一致,这里不再说了。

引入了链表队列对线程进行管理。
增加的时候动用链表队列的INSERT操作把新的线程加入队列中。
Graphics g=JP.getGraphics();
Printthread p1=new Printthread(JP,g);
BallList.add(p1);
p1.start();

随机消失时产生一个随机数,动用REMOVE操作把小球移除。终止线程,再把小球目前所在的位置擦干净。
Random rand=new Random();
int index=rand.nextInt(BallList.count);

LinkNode node=BallList.get(index);
Printthread p=(Printthread) node.data;
p.clear();
p.stop();
BallList.remove(index);


点到气泡让它消失的写法:
创建一个鼠标监听器,点击鼠标时获取坐标。遍历整个队列,把每个气泡的角落的点的坐标和鼠标点击的位置作对比。求两点间距离,把它和小球的半径对比。如果小于等于半径,则终止这个线程,删除它在链表中的位置,擦干净小球所在的位置。



ps:还有一个功能没实现,气泡相互碰撞出现的效果,之后再写。背景设置了但是总会被擦掉,还没想到写法。

热点排行