如何制作高尔夫模拟器程序?

时间:2015-12-05 10:30:56

标签: java multidimensional-array processing

我正在计算机科学课上进行高尔夫模拟,我似乎无法完成以下代码:

import javax.swing.*;

int [][] golf = new int[4][9];
  void setup()
{
  JOptionPane.showMessageDialog(null, "Welcome to Golf Simulator" + '\n');
  int input = 0;
  do {
    String in = JOptionPane.showInputDialog("1. See the final results table" + '\n' + 
      "2. Enter the golf scores for Player 1 " + '\n' + "3. Enter the golf scores for Player 2" + 
      '\n' + "4. Enter the golf scores for Player 3" + '\n' + "5. Enter the golf scores for Player 4" +
      '\n' + "6. Results for holes" + '\n' + "7. Exit program", null);
    input = Integer.parseInt(in);  

    char c = in.charAt(0);

    switch(c) {
    case '1': 
      showgolf();
      break;

    case '2':
      for (int i = 0; i < golf.length; i++)
      {
        String inn = JOptionPane.showInputDialog("Please enter the golf scores for Player 1", null);
        int n = Integer.parseInt(inn);
        golf[i] = n;
      }
      break;

    case '3':
      for (int i = 0; i < golf.length; i++)
      {
        String inn = JOptionPane.showInputDialog("Please enter the golf scores for Player 2", null);
        int n = Integer.parseInt(inn);
        golf[i] = n;
      }
      break;

    case '4':
      for (int i = 0; i < golf.length; i++)
      {
        String inn = JOptionPane.showInputDialog("Please enter the golf scores for Player 3", null);
        int n = Integer.parseInt(inn);
        golf[i] = n;
      }
      break;

    case '5':
      for (int i = 0; i < golf.length; i++)
      {
        String inn = JOptionPane.showInputDialog("Please enter the golf scores for Player 4", null);
        int n = Integer.parseInt(inn);
        golf[i] = n;
      }
      break;

    case '6':
      for (int i = 0; i < golf.length; i++)
      {
        String inn = JOptionPane.showInputDialog("Please enter the hole number", null);
        int n = Interger.parseInt(inn);
         golf[i] = n;
      }
      break;

default:
    JOtionPane.showMessageDialog("Thank you for using Golf Simulator");   
    break;
}

}while(input != 7);
}

void showgin()
{
  String str = "";
  for(int i = 0; i < golf.length; i++)
  {
    str = str + win[i] + '\n';
  }
    JOptionPane.showMessageDialog(null, str);
}

正如我所提到的,我是初学者,所以我可能在这方面犯了无数错误。我应该使用2D阵列,以便拥有4个不同的9洞球员。在这个模拟器上,需要有一个弹出窗口显示:

  • 整个表格
  • 用户可以为每个玩家插入分数
  • 用户搜索孔号,并给出结果(例如,玩家1获胜或在第2洞中有一个平局)
  • 退出程序的能力

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

如果你有一个2-dim数组golf[4][9]golf.length将返回4。这是因为你基本上有一个数组长度为4的数组,长度为9.所以golf[0].length会给你9 所以你的案例2 - 5应该是这样的:

for (int i = 0; i < golf[0].length; i++) {
    String inn = JOptionPane.showInputDialog("Please enter the golf scores for Player 1", null);
    int n = Integer.parseInt(inn);
    golf[0][i] = n; // use 0 for player 1, 1 for player 2, ...
}
break;
我认为应该被称为showgin的{​​p> showWin必须为这个洞取一个数字。

void showWin(int hole){

这里我们必须做一些逻辑来确定两名球员是否并列或一名球员获胜。我使用绑定玩家列表来做到这一点。

int score = 0;
ArrayList<Integer> tied = new ArrayList<>();
for (int i = 0; i < golf.length; i++) {
    if(golf[i][hole] > score){ // new winnger
        score = golf[i][hole]; // adjust high score
        tied.clear(); // throw out every tied player
        tied.add(winner); // add the winner
    } else if (golf[i][hole] == score){ // we have a new tied player
        tied.add(i); // add him
    }
}

现在我们可以查看一下这个列表,如果其中有多个玩家,我们会有一个平局,否则单人赢了。

if(tied.size() <= 1){
    str += "Winner: " + winner + " with score: " + score;
} else {
    str += "Tied: ";
    for(int i : tied){ // add all tied player to the output
        str += i + " ";
    }
    str += "with score: " + score;
}