2016-04-03 35 views
-4

私はクイックQuesitonを持っており、私はヘルプが必要です。私の質問は、Panelクラスにメソッド "IsWin"を呼び出す2つのクラスを作成したことです。Javaの別のクラスからメソッドを呼び出す方法

これは私が持っているメソッドです。

クラス名:IsWin

public class IsWin { 

private JButton[][] slots; 
private Color playerColor = Color.red; 

public boolean Winner(int column, int row) { 

     boolean result = false; 

     // horizontal  
     boolean found = false; 
     int counter = 0; 

     for (int i = 0; i < slots.length; i++) {   
      if (slots[i][row].getBackground().equals(playerColor)) { 

      counter++; 

      // win 
      if (found == true) {    
       if (counter == 4) {    
       result = true; 
       break; 
       } 
      } 
      else {    
       found = true; 
      } 
      } 

      // reset counter 
      else {   
      if (found == true) {    
       counter = 0; 
      }   
      found = false; 
      } 
     } 

は、これは私がこれは私のパネルクラスでメソッドに

を呼び出したいクラスです:connectFourPanel

private class clikMeButtonListener implements ActionListener{ 
public void actionPerformed(ActionEvent event) {  

    if (event.getSource() == clickMeOne 
     || event.getSource() == clickMeTwo 
     || event.getSource() == clickMeThree 
     || event.getSource() == clickMeFour 
     || event.getSource() == clickMeFive 
     || event.getSource() == clickMeSix 
     || event.getSource() == clickMeSeven 
    ) { 

    int lastEmptyIdx = -1; 

    for (int i = 0; i < slots[column].length; i++) {   
     if (slots[column][i].getBackground() != Color.white) { 

     break; 
     } 
     else {    
     lastEmptyIdx = i; 
     } 
    } 

    if (lastEmptyIdx != -1) {   
     slots[column][lastEmptyIdx].setBackground(playerColor); 

     if (IsWin.contains(column, lastEmptyIdx)) { 

     String message = playerColor == Color.red ? " Player One Won!" : " Player Two Won!"; 
     JOptionPane.showMessageDialog(null, message, " Results ", JOptionPane.INFORMATION_MESSAGE); 

     System.exit(0);    
     } 

     else {  
     playerColor = playerColor == Color.red ? Color.yellow : Color.red; 

     // assuming that Color.yellow is for computer player 
     if (isHumanVsComputer && playerColor == Color.yellow) {    
      doComputerMove(); 
     } 
     }  
    } 
    } 
} 

NOTEこれは私の完全なコード

UDPATEされていない:これは私が私のPanelクラスに持っているものです。..

IsWin myIsWin = new IsWin(); 
myIsWin.Winner(column, row); 
+0

これはメソッドかクラスですか? –

+0

Methodd ........ –

答えて

1

あなたが他から呼び出したいメソッドを作ることができますクラスstaticを呼び出し、<ClassName>.<MethodName>を使用して呼び出します。例については

、今

public class Foo { 
    public static void foobar() { 
     /* Your Code Here */ 
    } 
} 

次のように、あなたがFoo.foobar();を使用して、このメソッドにアクセスすることができますが:

public class Panel { 
    public void someMethod() { 
     Foo.foobar(); 
     /* Your Code Here */ 
    } 
} 
+0

Waitt So ...すべての受賞者チェックコードは、私が作成した新しいクラスに入りますが、私は儀式です。 ?コレント? yesまたはno –

+0

@JainamPatel 'Winner'があなたのメソッド名であると仮定すると、' public static boolean Winner(int column、int row) 'のように静的にする必要があります。今度は 'Panel'クラスのメソッドから' IsWin.Winner(...) 'を実行するだけです。 – user2004685

+0

こんにちは私はそれをしましたが、エラーの多くがあります:これは私が持っているものです。完了:IsWin.Winner();エラー:トークン "Winner"の構文エラー。このトークンの後に識別子が必要です。 –

0

あなたはパネルに IsWinクラスのオブジェクトを宣言する必要があります。クラスとそのインスタンスを呼び出すメソッドWinner()

例:

IsWin myIsWin = new IsWin.... 

myIsWin.Winner(0, 0); 
+0

私はあなたが示唆したことをしましたが、私にエラーを与えました........................................ ...........:この行で、」複数のマーカーが \t - 、 \tこのトークンを削除 - トークンの構文エラー 『(』トークンの構文エラー、 \tこのトークン \tを削除します 『)』 ' –

+0

コードを更新して、正しく表示されるようにします –

0

あなたはIsWinオブジェクトを作成し、Winnerメソッドにアクセスする必要があります。 例:

IsWin iw = new IsWin(); 
    if (iw.winner(column, lastEmptyIdx)) { 
     String message = playerColor == Color.red ? " Player One Won!" : " Player Two Won!"; 
     JOptionPane.showMessageDialog(null, message, " Results ", JOptionPane.INFORMATION_MESSAGE); 

     System.exit(0);    
    } 
+0

今私はUが私に言ったことをしましたが、今はエラーが出ます...私のゲームが正しく動作していないのと同じように...私はConnect 4ゲームを作っています...あなたはそれを私に助けるのが好きでしょうか???????? / –

関連する問題