2014-04-27 21 views
-1

我想創建一個簡單的遊戲程序。遊戲有3類:我可以調用我在當前類中的另一個類中創建的方法嗎?

  1. Player:包含播放器的細節,如用戶名,姓和 姓
  2. Nimsys:包含所有的遊戲 功能的方法的系統,最多可以有100名選手
  3. NimGame:1遊戲是由2名球員只打了

問:我創建了3類,但我不知道如何類聯繫在一起。如何使用ScannerStringTokenizer添加玩家名稱以分隔用戶名,姓氏和姓氏?我的主要方法應該在NimGame課程中嗎?在我的代碼中,當我撥打NimPlayer.addPlayer()時,它有錯誤消息,addPlayer方法未定義爲類型NimPlayer。請幫忙如何使用方法addPlayer ??

到目前爲止,我的代碼如下所示:

public class NimGame 
{ 
int currentStoneCount, stoneRemovalUpperBound; 
private NimPlayer player1, player2; 

public static void main (String [] args) 
{ 
    System.out.println ("Welcome to Nim"); 
    System.out.println("\n>"); 

    **NimPlayer.addPlayer();** 
} 

public class NimPlayer 
{ 
String userName, givenName, familyName, newFamilyName, newGivenName; 
int gamesPlayed, gamesWon, gamesLost; 

/*Constructor*/ 
public NimPlayer (String userName, String givenName, String familyName, 
         String newFamilyName, String newGivenName) 
{ 
    this.userName = userName; 
    this.givenName = givenName; 
    this.familyName = familyName; 
    this.newFamilyName = newFamilyName; 
    this.newGivenName = newGivenName; 
} 
} 

import java.util.Scanner; 
java.util.StringTokenizer; 

public class Nimsys 
{ 
public static void addPlayer() 
{ 
    Scanner keyboard = new Scanner (System.in); 
    String [ ] player = new String [100]; //an array of 100 players 

    for (int i = 0; i < 100; i++) 
    { 
    boolean isInArray = false; 
    String NimPlayer = keyboard.next(); 
    String delimiters = " add player, "; //add player, comma and blank space 
    StringTokenizer nameFactory = new StringTokenizer (NimPlayer, delimiters); 
    String userName = nameFactory.nextToken(); 
    String familyName = nameFactory.nextToken(); 
    String givenName = nameFactory.nextToken(); 

    if (i>0) 
    { 
     for (int j = 0; j < 100; j++) 
      { 
       if (player [j].equalsIgnoreCase(userName)) 
       { 
        isInArray = true; 
        System.out.println("The player already exists."); 
        System.out.println("\n>"); 
       } 
       else 
       { 
        player [j] = NimPlayer; 
        System.out.println("\n>"); 
       } 
      } 
     } 


    } 
} 
} 

回答

0

我想你想

NimSys.addPlayer(); 

這是嚴重破壞:

player [j] = NimPlayer; 

你可能意味着

player [j] = new NimPlayer(...,...,...); 

具有NimPlayer構造函數期望的所有許多(太多?)參數。但是再次,playerString數組,因此您應該更改此定義。

爲什麼你認爲你需要100名玩家?

0

在支持什麼勞瑞懶懶地說,你可以不叫

NimPlayer.addPlayer(); 

因爲你addPlayer方法是在類NimSys,不NimPlayer。而你的

String [ ] player = new String [100]; //an array of 100 players 

需要是NimPlayer類型,因爲它包含NimPlayers,而不是字符串。而爲了能夠在以後添加/編輯,我想將其更改爲一個列表:

List<NimPlayer> player = new ArrayList<NimPlayer>(); //an array of x amount of players 

從我可以收集有關您的代碼,它似乎是最好的辦法可能是創建一個構造函數在NimPlayer類

public NimPlayer(){ 
} 

沒有參數,創建一個新的NimPlayer

currentPlayer = new NimPlayer(); 

,並分配這樣的價值觀:

currentPlayer.userName = nameFactory.nextToken(); 
currentPlayer.familyName = nameFactory.nextToken(); 
currentPlayer.givenName = nameFactory.nextToken(); 

從那裏,你可以通過比較用戶名比較這currentPlayer到您的陣列中的所有其他NimPlayers:

 for (int j = 0; j < player.size(); j++) 
     { 
      NimPlayer storedPlayer = player.get(j); 
      if (storedPlayer.userName.equalsIgnoreCase(currentPlayer.userName)) 
      { 
       isInArray = true; 
       System.out.println("The player already exists."); 
       System.out.println("\n>"); 
      } 
      else 
      { 
       player.add(currentPlayer); 
       System.out.println("\n>"); 
      } 
     } 
相關問題