本文目錄一覽:
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中的一個線程間的高級同步技術:條件變數。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/236041.html