/// <summary> /// 牌的狀態檢查 暗槓 /// </summary> /// <param name="player">牌玩家</param> public CheckBrands(BrandPlayer player) { for (int i = 0; i < player.getCount(); i++) { if (player.getBrand(i).getClass() != Mahjong.Properties.Settings.Default.Flower) { x.add(player.getBrand(i)); } } for (int i = 0; i < chow_player.Length; i++) { chow_player[i] = new BrandPlayer(); } }
public DealTest() { BrandPlayer[] player = new BrandPlayer[4]; BrandPlayer table = new BrandPlayer(); BrandFactory x = new BrandFactory(); x.createBrands(); x.randomBrands(); table = x.getBrands(); Console.WriteLine("共有: {0}", table.getCount()); // 印出洗好的牌 printplayer(table, "亂數牌"); PlayerSort bbs = new PlayerSort(table); BrandPlayer sort_table = bbs.getPlayer; printplayer(sort_table, "亂數排序回去"); // 分配牌 Deal deal = new Deal(16, table); deal.DealBrands(); player = deal.Player; // 印出全部的玩家 printplayer(player); BrandPlayer check = new BrandPlayer(); foreach (BrandPlayer b in player) { for (int i = 0; i < b.getCount(); i++) { check.add(b.getBrand(i)); } } for (int i = 0; i < table.getCount(); i++) { check.add(table.getBrand(i)); } PlayerSort bs = new PlayerSort(check); check = bs.getPlayer; Console.WriteLine("\n共有: {0}", check.getCount()); printplayer(check, "重新檢查"); }
private void add_to_player_iterator(Iterator iterator, BrandPlayer player) { while (iterator.hasNext()) { Brand brand = (Brand)iterator.next(); player.add(brand); } }
private void brand_2() { // 對子的牌組 for (int i = 0; i < x.getCount() - 1; i++) { if (x.getBrand(i).getClass() == x.getBrand(i + 1).getClass() && x.getBrand(i).getNumber() == x.getBrand(i + 1).getNumber() && x.getBrand(i).Team == 0 && x.getBrand(i + 1).Team == 0) { if (b.getCount() == 0) { b.add(x.getBrand(i)); b.add(x.getBrand(i)); } else if (x.getBrand(i + 1).getClass() != b.getBrand(b.getCount() - 1).getClass() || x.getBrand(i + 1).getNumber() != b.getBrand(b.getCount() - 1).getNumber()) { b.add(x.getBrand(i)); b.add(x.getBrand(i)); } } } }
/// <summary> /// ノ睹计р礟ゴ睹 /// </summary> public void randomBrands() { creatRandomTable(); BrandPlayer tempplayer = new BrandPlayer(); //ㄌ酚睹计硋р礟產い for (int i = 0; i < this.player.getCount(); i++) { tempplayer.add(this.player.getBrand((int)randomTable[i])); } this.player = tempplayer; }
/// <summary> /// 分配牌 /// </summary> public void DealBrands() { BrandPlayer temp = new BrandPlayer(); // 讀出數量的牌,並移除 for (int i = 0; i < countplayer * countbrands; i++) { Brand brand = table.getBrand(i); temp.add(brand); table.remove(brand); } // 把牌加入玩家 for (int i = 0; i < temp.getCount(); i++) { player[i % countplayer].add(temp.getBrand(i)); } }
public CheckTest() { BrandPlayer a = new BrandPlayer(); //a.add(new TenThousandBrand(5)); //a.add(new TenThousandBrand(6)); //a.add(new TenThousandBrand(7)); //a.add(new TenThousandBrand(6)); //a.add(new TenThousandBrand(7)); //a.add(new TenThousandBrand(8)); //a.add(new RopeBrand(4)); //a.add(new RopeBrand(5)); //a.add(new RopeBrand(6)); a.add(new TubeBrand(2)); a.add(new TubeBrand(2)); a.add(new TubeBrand(2)); //a.add(new TubeBrand(2)); //a.add(new TubeBrand(5)); //a.add(new TubeBrand(8)); //a.add(new TubeBrand(8)); //FlowerBrand f = new FlowerBrand(1); //f.Team = 1; //a.add(f); //WordBrand r = new WordBrand(9); ////r.Team = 2; //a.add(r); //a.add(r); //a.add(r); ////a.add(r); //TubeBrand t = new TubeBrand(9); //t.Team = 3; //a.add(t); //a.add(t); //a.add(t); //a.add(new TubeBrand(2)); //a.add(new TubeBrand(2)); //a.add(new TubeBrand(3)); //a.add(new TubeBrand(3)); //a.add(new TubeBrand(3)); //a.add(new TubeBrand(3)); //a.add(new TubeBrand(9)); //a.add(new TubeBrand(9)); //WordBrand w = new WordBrand(6); //w.Team = 2; //a.add(w); //a.add(w); //a.add(w); //a.add(w); //Brand b = new TubeBrand(2); //CheckUser c = new Check(b,a); printplayer(a); CheckBrands c = new CheckBrands(new TubeBrand(2), a); a.add(new TubeBrand(2)); CheckBrands d = new CheckBrands(a); //if (c.Win()) //{ // Console.WriteLine("有胡!!"); // printplayer(c.SuccessPlayer); //} if (c.Chow()) { Console.WriteLine("==========="); Console.WriteLine("\n有吃"); Console.WriteLine(c.ChowLength); printplayer(c.SuccessPlayer); printplayer(c.ChowPlayer[0]); printplayer(c.ChowPlayer[1]); printplayer(c.ChowPlayer[2]); Console.WriteLine("==========="); } if (c.Pong()) { Console.WriteLine("\n有碰"); printplayer(c.SuccessPlayer); } if (c.Kong()) { Console.WriteLine("\n有槓"); printplayer(c.SuccessPlayer); } if (d.DarkKong()) { Console.WriteLine("\n有暗槓"); printplayer(c.SuccessPlayer); } if (//!c.Win() && !c.Chow() && !c.Pong() && !c.Kong() && !c.DarkKong()) { Console.WriteLine("\n都沒"); } printplayer(a); }
/// <summary> /// 把牌打到桌面上 /// </summary> /// <param name="brand"></param> public void PushToTable(Brand brand) { brand.IsCanSee = true; brand.WhoPush = State; show_table.add(brand); }
/// <summary> /// 吃 成立 /// </summary> /// <returns>是/否</returns> public bool Chow() { bool chow_bool = false; ans_player.clear(); if (brand != null && brand.getClass() != Mahjong.Properties.Settings.Default.Wordtiles) { for (int i = 0; i < x.getCount() - 1; i++) { for (int j = i + 1; j < x.getCount(); j++) { if ( // 345 brand.getClass() == x.getBrand(i).getClass() && brand.getNumber() + 1 == x.getBrand(i).getNumber() && brand.getClass() == x.getBrand(j).getClass() && brand.getNumber() + 2 == x.getBrand(j).getNumber()) { if (ans_player.getCount() < 3) { ans_player.add(x.getBrand(i)); ans_player.add(brand); ans_player.add(x.getBrand(j)); } if (chow_player[0].getCount() < 3) { chow_player[0].add(x.getBrand(i)); chow_player[0].add(brand); chow_player[0].add(x.getBrand(j)); chow_index++; } chow_bool = true; } if ( // 234 brand.getClass() == x.getBrand(i).getClass() && brand.getNumber() - 1 == x.getBrand(i).getNumber() && brand.getClass() == x.getBrand(j).getClass() && brand.getNumber() + 1 == x.getBrand(j).getNumber()) { if (ans_player.getCount() < 3) { ans_player.add(x.getBrand(i)); ans_player.add(brand); ans_player.add(x.getBrand(j)); } if (chow_player[1].getCount() < 3) { chow_player[1].add(x.getBrand(i)); chow_player[1].add(brand); chow_player[1].add(x.getBrand(j)); chow_index++; } chow_bool = true; } if ( // 123 brand.getClass() == x.getBrand(i).getClass() && brand.getNumber() - 2 == x.getBrand(i).getNumber() && brand.getClass() == x.getBrand(j).getClass() && brand.getNumber() - 1 == x.getBrand(j).getNumber()) { if (ans_player.getCount() < 3) { ans_player.add(x.getBrand(i)); ans_player.add(brand); ans_player.add(x.getBrand(j)); } if (chow_player[2].getCount() < 3) { chow_player[2].add(x.getBrand(i)); chow_player[2].add(brand); chow_player[2].add(x.getBrand(j)); chow_index++; } chow_bool = true; } } } } return(chow_bool); }
/// <summary> /// 胡牌 成立 /// </summary> /// <returns>是/否</returns> public bool Win() { if (brand != null) { x.add(brand); PlayerSort d = new PlayerSort(x); x = d.getPlayer; } brand_2(); bradn_4(); bradn_3(); // 組合測試 // a 三支 // b 兩隻 // c 組合 int count = 0; for (int i = 0; i < a.getCount(); i += 3) { for (int j = i + 3; j < a.getCount(); j += 3) { for (int k = j + 3; k < a.getCount(); k += 3) { for (int l = k + 3; l < a.getCount(); l += 3) { for (int m = l + 3; m < a.getCount(); m += 3) { for (int n = 0; n < b.getCount(); n += 2) { c.clear(); c.add(a.getBrand(i)); c.add(a.getBrand(i + 1)); c.add(a.getBrand(i + 2)); c.add(a.getBrand(j)); c.add(a.getBrand(j + 1)); c.add(a.getBrand(j + 2)); c.add(a.getBrand(k)); c.add(a.getBrand(k + 1)); c.add(a.getBrand(k + 2)); c.add(a.getBrand(l)); c.add(a.getBrand(l + 1)); c.add(a.getBrand(l + 2)); c.add(a.getBrand(m)); c.add(a.getBrand(m + 1)); c.add(a.getBrand(m + 2)); c.add(b.getBrand(n)); c.add(b.getBrand(n + 1)); PlayerSort d = new PlayerSort(c); c = d.getPlayer; //牌的比對 //完全成立代表胡牌 for (int o = 0; o < x.getCount(); o++) { if (c.getBrand(o).getClass() == x.getBrand(o).getClass() && c.getBrand(o).getNumber() == x.getBrand(o).getNumber()) { count = o; continue; } else { break; } } if (count == x.getCount() - 1) { if (brand != null) { x.remove(brand); } return(true); // 成立 } } } } } } } if (brand != null) { x.remove(brand); } return(false); }
private void bradn_3() { for (int i = 0; i < x.getCount() - 2; i++) { for (int j = i + 1; j < x.getCount() - 1; j++) { for (int k = j + 1; k < x.getCount(); k++) { if (x.getBrand(k).getClass() != Mahjong.Properties.Settings.Default.Wordtiles && //順子的牌組 x.getBrand(i).getClass() == x.getBrand(j).getClass() && x.getBrand(i).getNumber() == x.getBrand(j).getNumber() - 1 && x.getBrand(j).getClass() == x.getBrand(k).getClass() && x.getBrand(j).getNumber() == x.getBrand(k).getNumber() - 1 && x.getBrand(i).Team == x.getBrand(j).Team&& x.getBrand(j).Team == x.getBrand(k).Team) { if (a.getCount() == 0) { a.add(x.getBrand(i)); a.add(x.getBrand(j)); a.add(x.getBrand(k)); } else if (x.getBrand(i) != a.getBrand(a.getCount() - 3) && x.getBrand(j) != a.getBrand(a.getCount() - 2) && x.getBrand(k) != a.getBrand(a.getCount() - 1)) { a.add(x.getBrand(i)); a.add(x.getBrand(j)); a.add(x.getBrand(k)); } } // 順子的牌組結束 else if (x.getBrand(i).getClass() == x.getBrand(j).getClass() && x.getBrand(i).getNumber() == x.getBrand(j).getNumber() && x.getBrand(j).getClass() == x.getBrand(k).getClass() && x.getBrand(j).getNumber() == x.getBrand(k).getNumber() && x.getBrand(i).Team == x.getBrand(j).Team&& x.getBrand(j).Team == x.getBrand(k).Team) { // 碰的牌組 if (a.getCount() == 0) { a.add(x.getBrand(i)); a.add(x.getBrand(j)); a.add(x.getBrand(k)); } else if (x.getBrand(i) != a.getBrand(a.getCount() - 3) && x.getBrand(j) != a.getBrand(a.getCount() - 2) && x.getBrand(k) != a.getBrand(a.getCount() - 1)) { a.add(x.getBrand(i)); a.add(x.getBrand(j)); a.add(x.getBrand(k)); } } // 碰的牌組 } } } }
public TallyTest() { BrandPlayer a = new BrandPlayer(); a.add(new TubeBrand(1)); a.add(new TubeBrand(1)); a.add(new TubeBrand(1)); a.add(new TubeBrand(1)); a.add(new RopeBrand(1)); a.add(new RopeBrand(1)); a.add(new RopeBrand(1)); a.add(new RopeBrand(1)); a.add(new TenThousandBrand(1)); a.add(new TenThousandBrand(1)); a.add(new TenThousandBrand(1)); a.add(new TenThousandBrand(1)); a.add(new TubeBrand(9)); a.add(new TubeBrand(9)); a.add(new TubeBrand(9)); a.add(new TubeBrand(9)); a.add(new RopeBrand(9)); a.add(new RopeBrand(9)); a.add(new RopeBrand(9)); a.add(new RopeBrand(9)); //a.add(new WordBrand(4)); a.add(new WordBrand(4)); a.add(new WordBrand(4)); ////a.add(new WordBrand(1)); //a.add(new WordBrand(1)); //a.add(new WordBrand(1)); //a.add(new WordBrand(1)); ////a.add(new WordBrand(2)); //a.add(new WordBrand(2)); //a.add(new WordBrand(2)); //a.add(new WordBrand(2)); ////a.add(new WordBrand(3)); //a.add(new WordBrand(3)); //a.add(new WordBrand(3)); //a.add(new WordBrand(3)); f = new Tally(); Location l = new Location(); AllPlayers all = new AllPlayers(4, 16); WordBrand w = new WordBrand(9); WordBrand v = new WordBrand(9); w.WhoPush = location.East; //v.WhoPush = location.Table; all.Show_Table.add(w); //all.NowPlayer.add(v); f.setPlayer(all); f.setPlayer(a); //l.next_Winer(); f.setLocation(l, 0); f.ShowDialog(); }