string - C# why am I getting zero count back? -


i hoping help. making deck of cards in c# , create instance there no cards in pack. have never coded in c# understand java well. pretty sure work in java if let me know going wrong helpful.

public class packofcards : ipackofcards {     private int cardsinpack;     private collection<icard> pack = new collection<icard>();     public int count {         {             return this.cardsinpack;         }         set {             this.cardsinpack = value;         }     }      public ienumerator<icard> getenumerator()     {         return pack.getenumerator();     }     ienumerator ienumerable.getenumerator()     {          return getenumerator();     }      public void create()     {         string [] values = {"ace","two","three","four","five","six","seven","eight","nine","ten","jack","queen","king"};         string [] suits = {"hearts", "diamonds", "spades", "clubs"};         int cardsinpack = 0;         for(int = 0 ; i<suits.length; i++){             for(int j = 0; j<values.length; j++, cardsinpack++){                 pack.add(new card(values[j], suits[i]));             }         }     }      public void shuffle()     {         random num = new random();          (int = 0; < pack.count-1; i++) {             int ran = num.next(pack.count);             icard temp = pack.elementat(ran);             pack.removeat(ran);             pack.insert(ran, pack.elementat(i));             pack.insert(i, temp);         }     }     public icard takecardfromtopofpack()     {         int topcard = 0;         icard cardremoved = pack.elementat(topcard);         pack.removeat(topcard);         return cardremoved;     } } 

interface ipackofcards:

public interface ipackofcards : ireadonlycollection<icard> {     void shuffle ();     icard takecardfromtopofpack (); } 

interface icard:

public interface icard {     string getvalue();     string getsuit();     string tostring(); } 

class card;

public class card : icard {     private string value;     private string suit;      public card(string v, string s)     {         value = v;         suit = s;     }     public string getvalue(){         return value;     }     public string getsuit(){         return suit;     }     public string tostring(){         return value+" of  "+suit;     } } 

interface ipackofcardscreator

public interface ipackofcardscreator {     ipackofcards create (); } 

class packofcardscreator:

public class packofcardscreator : ipackofcardscreator {     public ipackofcards create()     {         packofcards p = new packofcards();         p.create();  //addition, please note have tried no avail         return p;      }  } 

thank has helped, appreciated. have leave 1 of life's unanswered questions. believe have done right perhaps else wrong such ide or computer. bad carpenter blames tools , i'm bad carpenter.

firstly taking many things java work. secondly why need own counter if colllection class contains count accurate. implement count property follows:

public int count {         {         return pack.count;     } } 

next, think create method should static , return new instance of class:

public static packofcards create() {     packofcards newpack = new packofcards();     string[] values = { "ace", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "jack", "queen", "king" };     string[] suits = { "hearts", "diamonds", "spades", "clubs" };      (int = 0; < suits.length; i++)     {         (int j = 0; j < values.length; j++)         {             newpack.pack.add(new card(values[j], suits[i]));         }     }     return newpack; } 

and in interfaces c#pify method names:

public interface icard {     string getvalue();     string getsuit();     string tostring(); }   public class card : icard {     private string value;     private string suit;      public card(string v, string s)     {         value = v;         suit = s;     }     public string getvalue()     {         return value;     }     public string getsuit()     {         return suit;     }     public override string tostring()     {         return value + " of " + suit;     } } 

so main method this:

static void main(string[] args) {     packofcards cards = packofcards.create();     console.writeline(cards.count);     icard c = cards.takecardfromtopofpack();     console.writeline(c); } 

also consider implementing implicit conversion icard card.


Comments