有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将分数正确地分配给玩家?

我有一个有3名玩家的阵法,还有一个有几个异能的阵法

String[] array_Player = {"Celine", "Amelia", "Olivia"};
int[] array_power_1 = {4,2,10};

“力量”最小的球员得2分,最好的得6分

我想得到这个结果:

Celine | power 4 => points 4 
Amelia | power 2 => points 2 
Olivia | power 10 => points 6 

以下是我目前的结果:

Celine | power 4 => points 2
Amelia | power 2 => points 4 
Olivia | power 10 => points 6 

我的观点没有得到正确的解释

我觉得我的array_point_power()方法不正确

public static void array_point_power(String[] array_Player, int[] array_point){

      int points = 2;

      for(int i=0; i<array_Player.length; i++){
          array_point[i] = points;
          points = points + 2;
      }
  }

这是我的代码:

import java.util.*;

class Main {
  public static void main(String[] args) {
    
    String[] array_Player = {"Celine", "Amelia", "Olivia"};
    int[] array_power_1 = {4,2,10};
    int[] array_point_1 = new int[3];
    
    System.out.println("Round 1 : ");
    array_point_power(array_Player, array_point_1);
    affichage_round(array_Player, array_power_1, array_point_1);

  }

   public static void array_point_power(String[] array_Player, int[] array_point){

      int points = 2;

      for(int i=0; i<array_Player.length; i++){
          array_point[i] = points;
          points = points + 2;
      }
  }


  public static void affichage_round(String[] array_Player, int[] array_power, int[] array_point) {

    for(int i=0; i<array_Player.length; i++){
            System.out.println("Joueur " + array_Player[i] + " | Puissances " +  array_power[i] + " | Points " + array_point[i] );
        }

  }

}

谢谢你的帮助


共 (3) 个答案

  1. # 1 楼答案

    array_point_power中,你从不比较球员的实力,只需按顺序分配分数

    你必须根据球员的实力对他们进行排序,然后再奖励分数
    为此,最好创建一个带有名称、权限和make it sortable的玩家对象

  2. # 2 楼答案

    实现这一点的一种更为java的方法是使用封装并生成一个播放器类

    public class Player {
    
       private String name;
       private int power;
       private int points;
    
       public Player(String name, int power) {
           this.name = name;
           this.power = power;
       }
    
       public String getName() {
           return name;
       }
    
       public int getPower() {
           return power;
       }
    
       public void setPoints(int points) {
           this.points = points;
       }
    
       public int getPoints() {
           return points;
       }
    }
    

    然后在你的主课上

    public class Main {
    
    
       public static void main(String[] args) {
    
           List<Player> players = new ArrayList<>();
           players.add(new Player("Celine", 4));
           players.add(new Player("Amelia", 2));
           players.add(new Player("Olivia", 10));
    
           bubbleSort(players);
           array_point_power(players);
    
           System.out.println("Round 1 : ");
           showResults(players);
       }
    
       //If the points is based on multiples of 2 you can use i to assign points
       private static void array_point_power(List<Player> players) {
           for (int i = 0; i < players.size(); i++) {
               players.get(i).setPoints(i * 2 + 2);
           }
       }
    
       //Make a simple bubble sort based on the players powers
       private static void bubbleSort(List<Player> players) {
           for (int i = 0; i < players.size(); i++) {
               for (int j = 0; j < players.size(); j++) {
                   if (players.get(i).getPower() < players.get(j).getPower()) {
                       Player temp = players.get(i);
                       players.set(i, players.get(j));
                       players.set(j, temp);
                   }
               }
           }
       }
    
       private static void showResults(List<Player> players) {
           for (int i = 0; i < players.size(); i++) {
               System.out.println("Joueur " + players.get(i).getName() + 
                                  " | Puissances " + players.get(i).getPower() + 
                                  " | Points " + players.get(i).getPoints());
           }
       }
    }
    
  3. # 3 楼答案

    class Main {
       public static void main(String[] args) {
    
           String[] playersArray = {"Celine", "Amelia", "Olivia"};
           int[] powerArray = {4, 2, 10};
        
           //unsorted array of power
           int[] powerIndexes = {0, 1, 2};
           int[] pointsArray = new int[3];
        
           powerIndexes(powerArray, powerIndexes);
           assignPoints(powerIndexes, pointsArray);
           System.out.println("Round 1 : ");
           showResults(playersArray, powerArray, pointsArray);
    
       }
    
       //Change power indexes based on power
       public static void powerIndexes(int[] powerArray, int[] powerIndexes) {
           for (int i = 0; i < powerArray.length; i++) {
               for (int j = 0; j < powerArray.length; j++) {
                   if (powerArray[i] < powerArray[j]) {
                       int temp = powerIndexes[i];
                       powerIndexes[i] = powerIndexes[j];
                       powerIndexes[j] = temp;
                   }
               }
           }
       }
    
       public static void assignPoints(int[] powerIndexes, int[] pointsArray) {
           for (int i = 0; i < powerIndexes.length; i++) {
               pointsArray[i] = powerIndexes[i] * 2 + 2;
           }
       }
    
       public static void showResults(String[] playersArray, int[] powerArray, int[] pointsArray) {
    
           for (int i = 0; i < playersArray.length; i++) {
               System.out.println("Joueur " + playersArray[i] + " | Puissances " + powerArray[i] + " | Points " + pointsArray[i]);
        }
    
       }
    }