- 締切済み
C#のarrayに別のclassを挿入したのですが・・・
失礼します。 サイコロを転がすために2つのclassを作り、片方は サイコロ用のコンストラクターなどをコーディングして もう1つにMain methodを挿入しました。 とりあえず、サイコロを1つではなく、5つほど転がすという プログラムにしたいので、 private Dice[] dice = new Dice[5]; (ここでのDiceはDice.csの中のコンストラクターです。) として、とりあえず、サイコロを5つ分、確保したのですが、 特定のサイコロの呼び出し方が分かりません。 int diceA = dice[3].Dice();でもなく、 int diceA = Dice[3]でも動かず、 多分、基本的な考え方が間違っているのかも知れませんが、 例えば、4番目のサイコロの値を呼び出す場合、 どのように書けば、それだけを呼び出せるのでしょうか? またfor(int i=0; i>5; i++){ Dice[i] =dice[i].Roll??? } などのように自動的に5つのサイコロに値を振り分けることは 可能なのでしょうか?(RollはDice内にある、 ランダムメソッドです。dice[]の考え方自体が違って いるためか、この方法ではエラーになってしまいます。) まだプログラミング自体を始めて程ないものですので、 詳しく教えて頂けると嬉しく思います。 お願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
「さいころが 1個なら動くのですか?」と聞いたのは, 配列の部分をいじれないとかそんなことは関係なく「値を得るための方法をきちんと理解できているのかどうか」を確認したかったんだよ. 補足を読んだ限りではそこからやらないといけないようなので, 「インスタンス化する方法」とか「インスタンスメソッドの呼び出し方」などを確認してください. あと, 課題だというなら出した教員にしつこく聞くべし. もちろん聞きに行くときには「自分で作ったプログラム」と「出たエラー」, (存在するなら) 「実行結果」などはちゃんとプリントアウトして持っていくこと. 以下蛇足なんだけど, クラス Dice で 1個のさいころを表すというのは本来英語的に間違ってるような気がする. dice って複数形なんだけどねぇ. まあ, 特殊な状況でもない限り単数形は出てこないんだけど, 複数形なんだからやっぱり複数を意味してほしいと思う今日この頃.
- temtecomai2
- ベストアンサー率61% (656/1071)
一応確認 > 課題として出されている分なので 課題なんですか?
補足
課題です。ただ、5つのサイコロをただ転がすだけというものでは 当然なく、この5つを使って様々なゲームを作るというもので、 この後のゲームは、大体こういう風なデザインをすれば、 多分、動作できるだろうというメドはたっているのですが、 この、1番最初の段階が自分で設定するのではなく、教授から 与えられているものを使って、ということなので、何も変更できず、 自分自身で組んではいけないので糸口がなく、止まっているという 状態です。 dice[0]= new Dice(); dice[1]= new Dice(14); など、いろいろ試してはいるのですが、学校の方針が 習うより慣れろ、のため、何1つヒントもなくという感じです。
- osamuy
- ベストアンサー率42% (1231/2878)
>private Dice[] dice = new Dice[5]; 単に長さ5の配列を確保しているだけで、インスタンス化してないような。 配列の定義の仕方を確認してみては。
補足
おっしゃる通り、インスタンス化がなされていないのかもしれません。 月並みにint roll1=dice.Roll();(Rollにはランダム関数が 入っています。)として見たのですが、概念自体が分かって いないのかもしれませんが、エラーしか出力されません。 無知で申し訳ないです・・・
- Tacosan
- ベストアンサー率23% (3656/15482)
さいころが 1個なら動くのですか? 動くなら, どのように値を呼び出しているのですか?
補足
1個でも動きませんが、課題として出されている分なので private Dice[] dice = new Dice[5]の部分をいじることも できず困っています・・・
お礼
インスタンス化、ですね?ありがとうございます。 調べてみます。とりあえず、tutorにメールするところから 始めてみます。ありがとうございます。 それと出された課題ではちゃんとDice、ではなくDieという クラスで作られていました。個人的にその単語を書くのが イマイチ好きではないので 複数形にしただけで、英語のの間違いというより preferenceの問題ですね、煩わしくてすいません。