質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

5回答

1503閲覧

個別のステータスの保持

syosinsya12

総合スコア69

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2016/09/10 14:12

タップするとキャラクターを生成しそのキャラクターが個別のステータスを保持したいです。

具体的にはタップするたびに新しい兵士が生成されint HP = 10というあたいをそれぞれが持ちたいです。

下記のようなクラスをSoldier soldier = new Soldierとしてそれを使った場合
すべての兵士のHPが同じものとして扱われて一人の兵士のHPが減ると他の兵士のHPも減ってしまいますよね?
Soldier soldier1 = new Soldier
Soldier soldier2 = new Soldier

のように大量にインスタンス化するしかないのでしょうか?
まとめてインスタンス化できる方法や、より良い方法などありましたら教えていただきたいです。

public class Soldier { int HP = 10; } コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

「タップするたび」ということは総数も不定なので、ArrayListなどのListを使って管理することになると思いますね。タップするごとにそのListに新規Soldierインスタンスをaddしていく格好でしょうか。
他の処理がわからないのでなんとも言いようがないですが。

投稿2016/09/10 15:35

swordone

総合スコア20649

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syosinsya12

2016/09/13 14:06

ありがとうございます。参考にさせていただきます
guest

0

大量にインスタンスを作るしかありません。

投稿2016/09/10 14:51

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syosinsya12

2016/09/13 14:06

ありがとうございます。
guest

0

ベストアンサー

インスタンスを複数作るしかありません。

業務などで使うとなると雑ですが、初心者様向けのサンプルを提示します
後はこれを拡張して、個別のSoldierにダメージを与える関数を作ったり、
HPが無くなったSoldierをlistから削除する関数等を作っていけばいいと思います。

java

1class SoldierManager { 2 // メンバ変数 3 List<Soldier> soldierList; 4 5 // コンストラクタ 6 SoldierManager() { 7 soldierList = new ArrayList<Soldier>(); 8 } 9 10 // 兵士を追加 11 void AddSoldier(Soldier newSoldier) { 12 soldierList.add(newSoldier); 13 } 14} 15

投稿2016/09/12 04:13

ishi9

総合スコア1294

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syosinsya12

2016/09/13 14:06

ありがとうございます。参考にさせていただきます。
guest

0

キャラクターが個別のステータスを保持したいです。
大量にインスタンス化するしかないのでしょうか?

キャラ(オブジェクト)ごとに個別のパラメータを
持たせるには、ふつうのOOPではインスタンス化します。

それが百体でも千体でも、メモリが許せば問題ないです。
(パフォーマンスの問題はありますが、別の話)

まあ配列とかで管理できなくもないですが、
それだとOO言語のJavaを使う意味がないです。


まとめてインスタンス化できる方法や、より良い方法など

100回newするから100行書くのでは冗長過ぎるので、
ふつうはfor文などループで繰り返してまとめてnewします。

ただ、「タップするたびに」なら、ループでまとめてではなく、
タップ時の処理ごとに生成することになるでしょう。

投稿2016/09/10 15:42

LLman

総合スコア5592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syosinsya12

2016/09/13 14:06

ありがとうございます。参考にさせていただきます。
guest

0

すべての兵士のHPが同じものとして扱われて一人の兵士のHPが減ると他の兵士のHPも減ってしまいますよね?

いいえ。HP はインスタンス毎に別になります。

数を作るならfor文で繰り返すしかないです。

Solder[] createSoldiers(int num) { Soldier[] soldiers = new Solder[num]; for (int i=0; i<num; i++) { soldiers[i] = new Soldier(); } return soldiers; }

でもタップするたびにだったらいらないのでは?

投稿2016/09/10 15:04

編集2016/09/10 15:06
yskz44

総合スコア100

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syosinsya12

2016/09/13 14:06

ありがとうございます。参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問