asp.net - How can I deal this deck(Dictionary) in C# -
i have 2 players, want each of them receive 26 random out of 52 card deck. have idea how can give each player, 26 random cards 52 card deck?
this should empty original 52 card deck dictionary, , create 2 smaller 26 card deck dictionary.
i have been struggle 3 day, , have done research do. here deck class:
class deck { public dictionary<int, string> createnewdeck() { dictionary<int, string> newdeck = new dictionary<int, string>() { {1, "~/cards/c1.png"}, {2, "~/cards/c2.png"}, {3, "~/cards/c3.png"}, {4, "~/cards/c4.png"}, {5, "~/cards/c5.png"}, {6, "~/cards/c6.png"}, {7, "~/cards/c7.png"}, {8, "~/cards/c8.png"}, {9, "~/cards/c9.png"}, {10, "~/cards/c10.png"}, {11, "~/cards/cj.png"}, {12, "~/cards/cq.png"}, {13, "~/cards/ck.png"}, {14, "~/cards/d1.png"}, {15, "~/cards/d2.png"}, {16, "~/cards/d3.png"}, {17, "~/cards/d4.png"}, {18, "~/cards/d5.png"}, {19, "~/cards/d6.png"}, {20, "~/cards/d7.png"}, {21, "~/cards/d8.png"}, {22, "~/cards/d9.png"}, {23, "~/cards/d10.png"}, {24, "~/cards/dj.png"}, {25, "~/cards/dq.png"}, {26, "~/cards/dk.png"}, {27, "~/cards/h1.png"}, {28, "~/cards/h2.png"}, {29, "~/cards/h3.png"}, {30, "~/cards/h4.png"}, {31, "~/cards/h5.png"}, {32, "~/cards/h6.png"}, {33, "~/cards/h7.png"}, {34, "~/cards/h8.png"}, {35, "~/cards/h9.png"}, {36, "~/cards/h10.png"}, {37, "~/cards/hj.png"}, {38, "~/cards/hq.png"}, {39, "~/cards/hk.png"}, {40, "~/cards/s1.png"}, {41, "~/cards/s2.png"}, {42, "~/cards/s3.png"}, {43, "~/cards/s4.png"}, {44, "~/cards/s5.png"}, {45, "~/cards/s6.png"}, {46, "~/cards/s7.png"}, {47, "~/cards/s8.png"}, {48, "~/cards/s9.png"}, {49, "~/cards/s10.png"}, {50, "~/cards/sj.png"}, {51, "~/cards/sq.png"}, {52, "~/cards/sk.png"}, }; return newdeck; } }
and here method trying write divide deck can see, novice:
class dealer { public dictionary<int, string> dealplayersdeck(deck deck, player human, player computer) { deck cards = new deck(); player humanplayer = new player(); player computerplayer = new player(); var fulldeck = cards.createnewdeck(); var playerdeck = humanplayer.playercards; var computerdeck = computerplayer.playercards; int halfdeck = fulldeck.count() / 2; foreach (object in fulldeck) { list<int> keylist = new list<int>(fulldeck.keys); random rand = new random(); int randomkey = keylist[rand.next(keylist.count)]; if (!playerdeck.containskey(randomkey)) { playerdeck.add(randomkey, fulldeck[randomkey]); fulldeck.remove(randomkey); } } return playerdeck; } }
you can following:keylist
give list of 26 unique keys. loop through keys , add playerdeck
in same time remove same fulldeck
after iteration of loop full deck contains keys not in playerdeck
can move computerdeck
.
list<int> keylist = new list<int>(fulldeck.keys); random rand = new random(); var keylist = keylist.orderby(item => rand.next()).take(26).tolist();//will take 26 random keys foreach (var randkey in keylist) // loop on keylist { playerdeck.add(randkey, fulldeck[randkey]); fulldeck.remove(randkey); } computerdeck =fulldeck;
Comments
Post a Comment