2015-09-16 239 views
0

我想建立一個Java程序,允許用戶玩跳棋。現在,我無法創建我的24件&讓他們從一個地方移動到另一個地方。我希望能夠將他們從橙色方形拖到另一個橙色方形。如果廣場不是橙色的,我希望程序拒絕此舉。我怎麼能這樣做呢?任何&所有幫助表示讚賞!Java跳棋遊戲移動棋子

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

@SuppressWarnings("serial") 
public class Board extends JPanel{ 

public void paint(Graphics g){ 

    g.setColor(new Color(234, 106,32)); 
    g.fillRect(0, 0, 400, 400); 
    for(int i = 0; i <= 350; i+=100){ 
     for(int j = 0; j <= 350; j+=100){ 
      g.clearRect(i, j, 50, 50); 
     } 
    } 

    for(int i = 50; i <= 400; i+=100){ 
     for(int j = 50; j <= 400; j+=100){ 
      g.clearRect(i, j, 50, 50); 
     } 
    } 
} 
public static void main(String[] args){ 
    JFrame frame = new JFrame(); 
    frame.setSize(400,420); 
    frame.getContentPane().add(new Board()); 
    frame.setTitle("Java Chip Checkers"); 
    frame.setLocationRelativeTo(null); 
/* frame.setBackground(new Color(234, 106, 32)); */ 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 
    } 
} 
+0

你的問題並不簡單,因爲它的解決方案涉及很多步驟,最好的解決方案是將更大的步驟分解成更小的步驟,然後嘗試解決每個小步驟,一次一個,往往孤立所有其他步驟。您也可以借用其他類似問題和答案的想法,例如[我的答案在這裏](http://stackoverflow.com/a/4687759/522444)。 –

+0

作爲一個方面說明,你會想閱讀關於Swing圖形的教程,因爲你做得不對。你會想重寫paintComponent並且不要忘記調用super方法,但是已經說過了,我不會使用paint或paintComponent,而是按照上面的示例使用JLabels所持有的ImageIcons。 –

+0

另請參閱[此類似答案](http://stackoverflow.com/a/4894516/522444)。 –

回答

0

如果它不是一個研究JPanel的培訓項目,我推薦使用專門爲遊戲設計的框架。 (libgdx eg)否則,你必須寫很多不必要的交互。

您需要一個二進制矩陣並在矩陣中轉換鼠標座標。那麼你將很容易計算用戶的行爲。

但你的問題不是很適合於stackoverflow。