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

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

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

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

オブジェクト指向

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

配列

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

Q&A

解決済

1回答

4546閲覧

トランプの山札の作成について

BRAK

総合スコア98

C#

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

オブジェクト指向

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

配列

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

0グッド

0クリップ

投稿2020/08/08 12:31

編集2020/08/08 13:58

C#でトランプの山札の作成を作ったのですが、リストの中身にトランプのマークや数値を入れる方法がわかりません。

開発アプリはVSのコンソールアプリで作っています。

C#

1コード カード 2 public class Card 3 { 4 //カードのマーク(数値) 5 public int Suit { get; set; } 6 7     //カードマーク記号 8 public string SuitMark { get; set; } 9      10 //記号A~K 11 public string Mark { get; set; } 12 13 //数値を基準にしてトランプの表示と得点を決める 14 //カードの数字 15 public int No { get; set; } 16 17 public string SuitString() 18 { 19 switch (Suit) 20 { 21 case 1: 22 SuitMark = "ハート"; 23 break; 24 case 2: 25 SuitMark = "スペード"; 26 break; 27 case 3: 28 SuitMark = "クローバー"; 29 break; 30 case 4: 31 SuitMark = "ダイヤ"; 32 break; 33 } 34 //文字へ変換 35 return SuitMark; 36 } 37 38 39 public string NoString() 40 { 41 switch (No) 42 { 43 case 1: 44 Mark = "A"; 45 break; 46 case 11: 47 Mark = "J"; 48 break; 49 case 12: 50 Mark = "Q"; 51 break; 52 case 13: 53 Mark = "K"; 54 break; 55 } 56 //数値を文字へ変換 57 58 if(No != 1 && No != 11 && No != 12 && No != 13) 59 { 60 return No.ToString(); 61 } 62 else 63 { 64 return Mark; 65 } 66 } 67 }

C#

1コード 山札 2 public class Deck 3 { 4 //山札の作成 5 List<Card> decks = new List<Card>(); 6 7 //山札の作成 カードのシャッフル 8 public void Shuffle() 9 { 10 //山札の作成 11 for(int i = 0; i< 4; i++) 12 { 13 for(int j = 0; j < 13; j++) 14 { 15 Card card= new Card(); 16 //カードの種類 17 card.Suit = i + 1; 18 card.SuitString(); //カードのマークを取得 19          //カードの数値 20 card.No = j + 1; 21 card.NoString(); //カードのナンバーを取得 22 23 //リストに入れる 24 decks.Add(card); 25 } 26 } 27 28 //山札のシャッフル 29 30 } 31 }

リストにクラスのcardというのだけ入るだけで、中身空っぽな52枚(記号やナンバーの入っていない)のリストだと思うのですが、リストの中にカードのマークとナンバーを入れるにはどうしたらよいですか。

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

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

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

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

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

YAmaGNZ

2020/08/08 13:32

「中身空っぽな52枚のリストだと思うのです」とのことですが値を確かめましたか?
YAmaGNZ

2020/08/08 13:40

あと、直接は関係ありませんが、Cardクラスの変数等の名前は考えましょう。 MarkはプロパティとしてA~Kを示すとコメントにありますが、"スペード"や"ダイヤ"などを返すSuitStringにも使用していてバグの原因となります。
BRAK

2020/08/08 13:50

ご回答ありがとうございます。 すみません、中身が空というよりは中身にcardというクラスが入っているという認識でした。 なので、多分、クラスが入っているだけで中には記号や、数値が入っていないと思った次第です。 ですが、よくよく考えてみるとクラス内の指定した変数に値が入っているということですか? あと、変数はバグを起こしたくないのでそれぞれ別でこの後作ります。
guest

回答1

0

ベストアンサー

以下のコードで https://dotnetfiddle.net/ で実行してみましたが、ちゃんと decks 変数に52枚のカードが入ってました。

ハート 1 ハート 2 (略) ハート 12 ハート 13 スペード 1 (略) スペード 13 クローバー 1 (略) クローバー 13 ダイヤ 1 (略) ダイヤ 13

ジョーカーがいませんがそこはこれから実装されるのでしょう。

C#

1using System; 2using System.Collections.Generic; 3 4public class Program 5{ 6 public static void Main() 7 { 8 Console.WriteLine("Hello World"); 9 Deck d = new Deck(); 10 d.Shuffle(); 11 } 12} 13 14public class Deck 15{ 16 //山札の作成 17 List<Card> decks = new List<Card>(); 18 //山札の作成 カードのシャッフル 19 public void Shuffle() 20 { 21 //山札の作成 22 for (int i = 0; i < 4; i++) 23 { 24 for (int j = 0; j < 13; j++) 25 { 26 Card card = new Card(); 27 //カードの種類 28 card.Suit = i + 1; 29 card.SuitString(); //カードのマークを取得 30 //カードの数値 31 card.No = j + 1; 32 card.NoString(); //カードのナンバーを取得 33 //リストに入れる 34 decks.Add(card); 35 } 36 } 37 // TODO: 山札のシャッフル 38 39 // dump 40 foreach (Card c in decks) { 41 Console.WriteLine(c.SuitString() + " " + c.No); 42 } 43 } 44} 45 46public class Card 47{ 48 // 〜変更してないので省略 49}

投稿2020/08/08 15:08

編集2020/08/08 15:10
YakumoSaki

総合スコア2027

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

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

BRAK

2020/08/08 15:19

ありがとうございます。 Console.WriteLine()での調べ方が間違っていたみたいです。 for分の中に Console.WriteLine(decks)を直接入れていたから、クラスだけが表示される形になっていたみたいです。 わざわざ、試してもらってありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問