Beispiel #1
0
 /// <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();
     }
 }
Beispiel #2
0
        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, "重新檢查");
        }
Beispiel #3
0
 private void add_to_player_iterator(Iterator iterator, BrandPlayer player)
 {
     while (iterator.hasNext())
     {
         Brand brand = (Brand)iterator.next();
         player.add(brand);
     }
 }
Beispiel #4
0
 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));
             }
         }
     }
 }
Beispiel #5
0
        /// <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;
        }
Beispiel #6
0
        /// <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));
            }
        }
Beispiel #7
0
        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);
        }
Beispiel #8
0
 /// <summary>
 /// 把牌打到桌面上
 /// </summary>
 /// <param name="brand"></param>
 public void PushToTable(Brand brand)
 {
     brand.IsCanSee = true;
     brand.WhoPush  = State;
     show_table.add(brand);
 }
Beispiel #9
0
        /// <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);
        }
Beispiel #10
0
        /// <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);
        }
Beispiel #11
0
 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));
                     }
                 } // 碰的牌組
             }
         }
     }
 }
Beispiel #12
0
        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();
        }