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

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

新規登録して質問してみよう
ただいま回答率
85.48%
参照

参照は、プログラミングにおいて変数や関数といったメモリ空間上での所在を指示するデータのことを指します。その中にはデータ自体は含まれず、他の場所にある情報を間接的に指示するプログラムです。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

12000閲覧

別クラスのListを他クラスでも使えるようにしたい

BRAK

総合スコア98

参照

参照は、プログラミングにおいて変数や関数といったメモリ空間上での所在を指示するデータのことを指します。その中にはデータ自体は含まれず、他の場所にある情報を間接的に指示するプログラムです。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/08/09 13:55

他クラスで宣言定義し値を入れたListを、他クラスで参照してList内の値を取得するにはどうしたらよいですか
開発はVSです。

C#

1コード 2__カード山札__ 3 public class Deck 4 { 5 //山札の作成(52枚) 6 List<Card> decks = new List<Card>(); 7 8 //山札の作成 カードのシャッフル 9 public void Shuffle() 10 { 11 //作成したカードの種類をdecksリストに52枚入れた 12 } 13 14 //デッキの枚数分の中からカード1枚引く 15 public Card DrawCard() 16 { 17 //作成したリストからカード1枚引きを取得するコードを書いた。 18 } 19 }

C#

1__PlayerBaseにDeckのListを参照代入したい__ 2 3abstract class PlayerBase 4 { 5 protected Deck deck = new Deck(); 6 protected List<Card> myDecks = new List<Card>(); 7 } 8 9 10 class User : PlayerBase 11 { 12 public void UserFirstDrawCard() 13 { 14 //まず初めに必ずプレイヤーに二枚カードを引かせる 15 int c = 0; 16 while (c != 2) 17 { 18 deck.DrawCard();//-------->実行すると配列外エラーになる 19 c++; 20 } 21 } 22 }

今の段階だと、PlayerBaseでDeck.Shuffle()を実行すると配列が作られ、それをUserクラスでPlayerBase内にあるListからカードを引くとエラーになるという感じです。

今思ったのですが、Deck.Shuffle()に引数設定して、PlayerBaseのリストを入れてあげれば、Userクラスでカードを引くのができる感じなのかな。

多分できないと思うので、教えていただきたいです。
上の考えはこの後実行します。

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

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

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

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

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

YAmaGNZ

2020/08/09 14:10

疑問なのですが、普通に考えればカードデッキは場に1つでUserは手札としてCardクラスを複数持つのではないですか? そうなるとカードデッキをPlayerBaseに持つという構造自体が不思議に思えます。
BRAK

2020/08/09 14:18

Cardクラスの中にある、カードの種類を持つという構造なのですが、なんか変ですか。。種類を複数持つという考えで書いたのですが、そうではなく別でおかしいということですか? 変だったら直したいです。
YAmaGNZ

2020/08/09 23:32

「場」として、管理するデッキが1つあって、そのインスタンスは「場」が持つものであって、ユーザーが持つべきではないのではないかということです。 ユーザーは「場」に参加して「場にあるデッキ」からカードをドローして、自分の持つ手札リストに追加するという構造なのではないかと思った次第です。
BRAK

2020/08/09 23:51

ユーザーが山札をもって、自分の山札から引くって形になっているってことですか? 話は変わるのですが、 今回のはトランプゲームなのですが、二人が別の山札をもってという構造だった場合も場から引くというように書くべきですか? 別のクラスから手札を自由に選べるという設定にして、そのクラスから自分の手札に加え、対戦する際に山札に移動させて、再び山札から手札に加えるってことになるのかな。。。。 イメージとしてはカードパックを剥いて、自分クラスの中に入れて、対戦する際に場に自分の山札を置くという感じです。
YAmaGNZ

2020/08/10 00:30

ユーザークラスはデッキのインスタンスを持つ必要がないのではないかということです。 ユーザーは参加する「場」のインスタンスを持つ感じですかね。 まあそれに関してもゲームによるとは思いますが。 >話は変わるのですが それはゲームによるんじゃないですかね? ユーザーが持つカード、場にあるカード、場でも山札と捨て札など種類もあるでしょうし ただ、ユーザーが山札のインスタンスを持つ必要はないでしょうし、場側がユーザーの持つ手札のインスタンスを持つ必要もないと考えます。
BRAK

2020/08/10 00:43

あー、考えてみれば、確かにそうですね。 次からは無駄なくコードを考えて書くようにします。 勉強になりました。 ありがとうございます。
guest

回答1

0

ベストアンサー

class Deck のほうで、
public List<Card> Decks{ get{return decks;}}
としておいて、

class PlayerBase では
deck.Decks でアクセスできます

投稿2020/08/09 13:59

y_waiwai

総合スコア87774

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

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

BRAK

2020/08/09 14:28

とりあえずはアクセスできました. class Deck での宣言は 1 List<Card> decks = new List<Card>(); 2 public List<Card> Decks { get { return decks; } } こういうことで合ってますか?
y_waiwai

2020/08/09 14:32

それでいいです それで他クラスからはdecksのメンバにアクセスできるけど、 decks自体は書き換えれません
BRAK

2020/08/09 14:59

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問