本文目录一览:
JAVA用repaint方法在窗格内实现小球的来回碰撞,怎么在窗格边缘改变小球的运动方向呢?
public class DrawBall extends JFrame {
int x, y, width, height;
Color c;
int incX = 10;//X方向增量
int incY = 10;//Y方向增量
public DrawBall() {
super("寂寞高手不寂寞");
setSize(800, 600);
setVisible(true);
x = 0;
y = 0;
width = height = 50;
c = new Color(255, 0, 0);
}
public static void main(String[] args) {
DrawBall a = new DrawBall();
}
public void paint(Graphics g) {
Container pane = getContentPane();
Graphics pg = pane.getGraphics();
pg.setColor(Color.WHITE);
pg.fillRect(0, 0, pane.getWidth(), pane.getHeight());
//从这里开始改变小球的运动方向
if (x+width pane.getWidth() || x 0) {//X边界判断
incX *= -1; //增量方向反转
}
if (y+height pane.getHeight() || y 0) {//Y边界判断
incY *= -1;//增量方向反转
}
x = x + incX;
y = y + incY;
pg.setColor(c);
pg.fillOval(x, y, width, height);
try {
Thread.sleep(100);
} catch (InterruptedException E) {
};
repaint();
}
}
2021年csp第二轮难吗
2021年csp第二轮难。
计算机软件能力认证(简称CCF CSP认证)是CCF计算机职业资格认证系列中最早启动的一项认证。该项认证重点考察软件开发者实际编程能力,由中国计算机学会统一命题、统一评测,委托各地设立的考试机构进行认证考试。
相关信息介绍:
CSP认证考试全部采用上机编程方式,可供报考编程语言为C/C++、Java或Python,考生报名时需选择报考语言,考试时只得使用报名时的语言参加认证。考核为黑盒测试,以通过测试用例判断程序是否能够输出正确结果来进行评分。
其中考试时间为240分钟。考生允许携带不限量纸质资料在认证过程中翻阅,但不得在认证过程中连接互联网或电子存储设备,不得在考试结束后使用电子存储设备拷贝自己作答的答案。
请教两个小球碰撞反弹的算法
如果只是单纯的全碰撞直接把两个球的速度取反就可以,如果是斜碰撞,就得需要更复杂的公式,我写了个Java的希望对你有帮助。
Eclipse 写 java小程序。 6个小球碰撞反弹。我知道怎么碰壁反弹。我想要在碰撞过程中小球互相碰撞也反弹。
给小球类定义一个方法:碰撞;然后当周围环境的坐标到球心的距离等于小球的半径时,小球的运动路径算法就应该是轴对称的。先判断之前的运动方向,然后根据运动方向确定新的运动方向。这个其实就是线性方程做小球的运动轨迹而已。
如何深入浅出地解释并发模型中的 CSP 模型
基于框架的应用都有两部分构成:框架部分和特定应用部分。要想达到框架复用的目标,必须
要做到框架部分和特定应用部分的隔离。使用面向对象的一个强大功能:多态,可以实现这一点。在框架中完成抽象概念之间的交互、关联,把具体的实现交给特定
的应用来完成。其中一般都会大量使用了Template Method设计模式。Java中的Collection
Framework以及微软的MFC都是框架方面很好的例子。有兴趣的读者可以自行研究。
Java语言提供了对于线程很好的支持,实现方法小巧、优雅。对于方法重入的保护,信号量(semaphore)和临界区(critical section)机制的实现都非常简洁。可以很容易的实现多线程间的同步操作从而保护关键数据的一致性。这些特点使得Java成为面向对象语言中对于多线程特性支持方面的佼佼者(C++正在试图把boost库中的对于线程的支持部分纳入语言标准)。
Java中内置了对于对象并发访问的支持,每一个对象都有一个监视器(monitor),同时只允许一个线程持有监视器从而进行对对象的访问,那些没有
获得监视器的线程必须等待直到持有监视器的线程释放监视器。对象通过synchronized关键字来声明线程必须获得监视器才能进行对自己的访问。
synchronized声明仅仅对于一些较为简单的线程间同步问题比较有效,对于哪些复杂的同步问题,比如带有条件的同步问题,Java提供了另外的解决方法,wait/notify/notifyAll。
获得对象监视器的线程可以通过调用该对象的wait方法主动释放监视器,等待在该对象的线程等待队列上,此时其他线程可以得到监视器从而访问该对象,之后可以通过调用notify/notifyAll方法来唤醒先前因调用wait方法而等待的线程。
一般情况下,对于wait/notify/notifyAll方法的调用都是根据一定的条件来进行的,比如:经典的生产者/消费者问题中对于队列空、满
的判断。熟悉POSIX的读者会发现,使用wait/notify/notifyAll可以很容易的实现POSIX中的一个线程间的高级同步技术:条件变量。