-2

印刷画面:

Player13
Character Name: Fourz, Class Name: Ninja
Strength: 17, Agility: 21, Stamina: 17, Intellect: 25, Spirit: 20, Health: 52, Mana: 50

16 の異なるプレイヤー統計セットを調べて、100 のヘルス ボーナスを与えるためのループが必要なだけです。正しいループを書くのに本当に苦労しています。

public static void sortPlayersByHealth() {

    for (int outer = 0; outer < playerObjectArray.length -1; outer ++) {

        for (int inner = 0; inner < playerObjectArray.length - 1; inner ++ ) {


            int num1 = playerObjectArray[inner].gethealth();
            //must + 1 for it to know to go to the next number and find the > number.
            int num2 = playerObjectArray[inner+1].gethealth();
            if(num1 > num2) {
                Player Player = playerObjectArray[inner];

                playerObjectArray[inner] = playerObjectArray[inner+1];
                playerObjectArray[inner+1] = Player; 
            }

これは以前に書いたループで、16 人のプレーヤーの統計情報すべてをループし、ヘルス スコアの低いものから高いものへと並べ替えます。この構文を変更してヘルスを 100 ずつ増加させるための助けをいただければ幸いです。

これが意味をなさない場合は申し訳ありません。私はプログラミングが初めてで、スタックオーバーフローも初めてです。

4

3 に答える 3

1
public void BumpHealth() {
  for (Player player : playerObjectArray) {
    player.health += 100;
  }
}

もちろん、プレーヤー オブジェクトの健康変数が「健康」と呼ばれると仮定します。

于 2013-09-04T01:26:25.833 に答える
1

health var public を公開してもかまわない場合はplayer.health += 100、明らかにより効率的であるという答えが得られます。

実装する

public void changeHealth(int value) {
    this.health += value;    //as value parameter is a signed integer if you pass negative value you can "remove" too
}

Player クラスで。健康がフィールドの名前であると仮定します。

または set メソッドと get メソッドを使用する

player.setHealth(player.getHealth() + 100);
于 2013-09-04T01:28:05.793 に答える
0

やりたいことは、2 つの別々の操作です。

  1. プレイヤーの健康度で並べ替え
  2. プレイヤーの体力を変数で増加

最初のオプションについては、次の 2 つのことを確認することをお勧めします。

Array.Sort を使用する コンパレータにArray.Sort を使用する

簡単な例は次のようになります。

Player[] myPlayerArray = new Player[2]; //get from whereever
Arrays.sort(myPlayerArray, new Comparator<Player>() {
    public int compare(Player p1, Player p2) {
        return p1.Health.compareTo(p2.Health); //or however you want it ordered
    }
});

より複雑なオプションを検討することもできますが、ここではすべてです。

for各プレイヤーのヘルスの増加に関しては、単純なorループを実装しforeachて対処できます。

お気に入り:

int increment = 100;
for (Player player : myPlayers) {
    player.Health += increment;
}

編集:

これに役立つリンクをいくつか追加しました。

于 2013-09-04T01:30:44.857 に答える