顯示具有 [2014][Code Review]Team 04 標籤的文章。 顯示所有文章
顯示具有 [2014][Code Review]Team 04 標籤的文章。 顯示所有文章

2014年4月5日 星期六

[Code Review] Team 04 - Hw05


執行檔



Form1.cs
using System;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using quiz4_40273040H;


namespace HW5
{
    public partial class Form1 : Form
    {
        private CardDeck deck = null;
        private FiveCards[] Player = new FiveCards[10];
        public enum HandCardsLevel { Zilch = 0, OnePair, TwoPairs, Threeofakind, Straight, Flush, Fullhouse, FourofaKind, StraightFlush };
        private string[] HandCardsLevelName = { "Zilch", "OnePair", "TwoPairs", "Threeofakind", "Straight", "Flush", "Fullhouse", "FourofaKind", "StraightFlush" };
        private int[] Statistic = new int[10];
        public Form1()
        {
            InitializeComponent();
            InitDeck();
            InitFiveCards();
        }
        private void InitDeck()
        {
            deck = new CardDeck();
            deck.CreateDeck();
            deck.ResetDeck();
        }
        private void InitFiveCards()
        {
            for (int i = 0; i < 10; i++)
            {
                Player[i]=new FiveCards();
                Player[i].CreatFiveCards();
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (null == deck)
                InitDeck();
            switch (comboBox1.SelectedIndex)
            {
                case 0:
                    deck.Shuffle();
                    Player[0].GetCards(0,deck.Cards);
                    Player[0].OrderFiveCardByRank();
                    MessageBox.Show(Player[0].PrintFiveCards());
                    break;
                case 1:
                    deck.Shuffle();
                    for(int i=0;i<2 data-blogger-escaped-deck.cards="" data-blogger-escaped-etcards="" data-blogger-escaped-eterminehandcardlevel="" data-blogger-escaped-i="" data-blogger-escaped-if="" data-blogger-escaped-layer="" data-blogger-escaped-player="" data-blogger-escaped-rderfivecardbyrank="">Player[1].DetermineHandCardLevel())
                        MessageBox.Show("Player1:" +"    "+Player[0].PrintFiveCards() + '\n' + "Player2:"+"    "+Player[1].PrintFiveCards() + "\nPlayer1 win");
                    else if (Player[0].DetermineHandCardLevel() == Player[1].DetermineHandCardLevel())
                        MessageBox.Show("Player1:" +"    "+Player[0].PrintFiveCards() + '\n' + "Player2:"+"    "+Player[1].PrintFiveCards() + "\nEven");
                    else
                        MessageBox.Show("Player1:" +"    "+Player[0].PrintFiveCards() + '\n' + "Player2:"+"    "+Player[1].PrintFiveCards() + "\nPlayer2 win");
                    break;
                case 2:                   
                    for (int k = 0; k < 10; k++)
                        Statistic[k] = 0;
                    for (int i = 0; i < 5000000; i++)
                    {
                        deck.Shuffle();
                        for (int j = 0; j <= 9; j++)
                        {
                            Player[j].GetCards(j, deck.Cards);
                            Player[j].OrderFiveCardByRank();
                            Statistic[(int)Player[j].DetermineHandCardLevel()]++;
                           // textBox1.AppendText(Player[j].PrintFiveCards()+'\n');                            
                        }
                    }
                    for (int i = 0; i < 9; i++)
                        textBox1.AppendText(HandCardsLevelName[i]+"出現機率為" + ((float)Statistic[i] / 50000000).ToString() + '\n');                
                    break;
                default:                    
                    break;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {

            Player[0].fivecard[0].Rank = 1;
                            Player[0].fivecard[0].Suit = 5;
            Player[0].fivecard[1].Rank = 8;
                            Player[0].fivecard[1].Suit = 5;
            Player[0].fivecard[2].Rank = 1;
                            Player[0].fivecard[2].Suit = 4;
            Player[0].fivecard[3].Rank = 6;
                            Player[0].fivecard[3].Suit = 6;
            Player[0].fivecard[4].Rank = 8;
                            Player[0].fivecard[4].Suit = 4;

            Player[0].OrderFiveCardByRank();
            MessageBox.Show(Player[0].PrintFiveCards());

        }

      
    }
}


FiveCards.cs
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using quiz4_40273040H;

namespace HW5
{
    class FiveCards
    {
        public PokerCard[] fivecard = new PokerCard[5];
        public void CreatFiveCards()
        {
            for (int i = 0; i < 5;i++ )
                fivecard[i] = new PokerCard();
        }

        public void GetCards(int start,PokerCard[] deck)
        {
            int i,j;
            j = 5 * (start);
            for (i =j;i-j<5 data-blogger-escaped--="" data-blogger-escaped-4="" data-blogger-escaped-5="" data-blogger-escaped-ank="" data-blogger-escaped-fivecard="" data-blogger-escaped-for="" data-blogger-escaped-i="" data-blogger-escaped-if="" data-blogger-escaped-int="" data-blogger-escaped-orderfivecardbyrank="" data-blogger-escaped-pass="" data-blogger-escaped-pokercard="" data-blogger-escaped-public="" data-blogger-escaped-temp="new" data-blogger-escaped-uit="deck[i].Suit;" data-blogger-escaped-void="">= fivecard[i + 1].Rank)
                    {
                        temp = fivecard[i];
                        fivecard[i] = fivecard[i + 1];
                        fivecard[i + 1] = temp;
                    }
                }
            }
        }
        public string PrintFiveCards()
        {
            string str = "";
            for (int i = 0; i <= 4; i++)
            {
                str += fivecard[i].RankToStr() + fivecard[i].SuitToUnicode() + "  ";
            }
            str += '\n';
            str += DetermineHandCardLevel();
            return str;
        }
        public bool FlushCombo()
        {
            int flushCombo = 1;
            for (int i=1; i <= 4; i++)
            {
                if (fivecard[i].Suit == fivecard[0].Suit)
                    flushCombo++;
            }
            if (flushCombo == 5)
                return true;
            else
                return false;
        }
        public int StraightCombo()
        {
            int straightCombo = 1;
            for (int i = 0; i <= 3; i++)
            {
                if (fivecard[i + 1].Rank - fivecard[i].Rank == 1)
                    straightCombo++;
            }
            return straightCombo;
        }
        public int RankType()
        {
            int rardType = 1;
            int temp = fivecard[0].Rank;
            for (int i = 1; i <= 4; i++)
            {
                if (fivecard[i].Rank != temp)
                    rardType++;
                temp = fivecard[i].Rank;
            }
            return rardType;
        }
        public Form1.HandCardsLevel DetermineHandCardLevel()
        {           
            if (FlushCombo())
            {                
                switch (StraightCombo())
                {
                    case 5:
                        return Form1.HandCardsLevel.StraightFlush;
                    case 4:
                        if(fivecard[4].Rank == 13 && fivecard[0].Rank == 1)
                            return Form1.HandCardsLevel.StraightFlush;
                        else
                            return Form1.HandCardsLevel.Flush;
                    default:
                        return Form1.HandCardsLevel.Flush;
                }               
            }
            else
            {                
                switch (RankType())
                {
                    case 2:
                        if (fivecard[0].Rank == fivecard[3].Rank || fivecard[1].Rank == fivecard[4].Rank)
                            return Form1.HandCardsLevel.FourofaKind;
                        else
                            return Form1.HandCardsLevel.Fullhouse;
                    case 3:
                        if (fivecard[0].Rank == fivecard[2].Rank || fivecard[1].Rank == fivecard[3].Rank || fivecard[2].Rank == fivecard[4].Rank)
                            return Form1.HandCardsLevel.Threeofakind;
                        else
                            return Form1.HandCardsLevel.TwoPairs;
                    case 4:
                        return Form1.HandCardsLevel.OnePair;
                    case 5:
                        switch (StraightCombo())
                        {
                            case 5:
                                return Form1.HandCardsLevel.Straight;
                            case 4:
                                if (fivecard[4].Rank == 13 && fivecard[0].Rank == 1)
                                    return Form1.HandCardsLevel.Straight;
                                else
                                    return Form1.HandCardsLevel.Zilch;
                            default:
                                return Form1.HandCardsLevel.Zilch;
                        }                       
                    default:
                        return 0;

                }
            }
        }
    }

}


CardDeck.cs
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace quiz4_40273040H
{
    class CardDeck
    {
        public PokerCard[] Cards = new PokerCard[52];

        public void CreateDeck()
        {
            for (int i = 0; i < Cards.GetLength(0); i++)
            {
                Cards[i]=new PokerCard();
            }
        }
        public void ResetDeck()
        {
            for (int i = 0; i < 52; i++)
            {
                int j = i;
                Cards[i].Suit = i/13+3;
                Cards[i].Rank=j%13+1;
            }
        }
        public void Shuffle()
        {
            Random rand = new Random();
            PokerCard temp=new PokerCard();
            int j;
            for (int i = 0; i < 52; i++)
            {
                j=rand.Next(52);
                temp = Cards[i];
                Cards[i] = Cards[j];
                Cards[j] = temp;
            }
        }
        public void OrderByRank()
        {
           
         int i,pass;
         PokerCard temp=new PokerCard();
         for(pass=0;pass<51 data-blogger-escaped-ank="" data-blogger-escaped-ards="" data-blogger-escaped-for="" data-blogger-escaped-i="" data-blogger-escaped-if="" data-blogger-escaped-pass="">=Cards[i+1].Rank)
           {
            temp=Cards[i];
            Cards[i]=Cards[i+1];
            Cards[i+1]=temp;
           }
          }
         }
        }
    }

}


PokerCardcs.cs
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace quiz4_40273040H
{
    class PokerCard
    {
        public int Suit;  //花色
        public int Rank;  //點數
        public string RankToStr()
        {           
            switch (Rank)
            {
                case 1:
                    return "A";
                case 11:
                    return "J";
                case 12:
                    return "Q";
                case 13:
                    return "K";
                default:
                    return Rank.ToString();
            }
        }//將點數轉為字串
        public string SuitToUnicode()
        {
            string[] Unicode = { "\u2665", "\u2666", "\u2663", "\u2660" };
            return Unicode[Suit-3];
        }
    }

}


2014年3月24日 星期一

[Code Review] Team 04 - Hw04

Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using quiz4_40273040H;

namespace HW4
{
    public partial class Form1 : Form        
    {
        private CardDeck deck = null;
        public Form1()
        {
            InitializeComponent();
            InitDeck();
            
        }
        private void InitDeck()
        {
            deck=new CardDeck();
            deck.CreateDeck();
            deck.ResetDeck();
        }
        private void Print(CardDeck Deck1)
        {
            
            string x1="";
            for (int i = 0; i < 52; i++)
            {
                x1 = string.Concat(x1, Deck1.Cards[i].RankToStr(), Deck1.Cards[i].SuitToAscii()," ");
                
                if ((i + 1) % 13 == 0)
                    x1 = string.Concat(x1, "\n");
               
            }
            MessageBox.Show(x1);
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (null == deck)
            {
                deck = new CardDeck();
                deck.CreateDeck();
                deck.ResetDeck();
            }
            tex_Message.Text = "";
            switch (cbox_Select.SelectedIndex)
            {
                case 0:
                    tex_Message.AppendText("Combokbox 按花色排列 已被選定"+'\n');
                    deck.ResetDeck();
                    Print(deck);
                    break;
                case 1:
                    tex_Message.AppendText("Combobox 亂數排列 已被選定"+'\n');
                    deck.Shuffle();
                    Print(deck);
                    break;
                case 2:
                    tex_Message.AppendText("Combobox 按點數大小" + '\n');
                    deck.OrderByRank();
                    Print(deck);
                    break;
                    
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (checkBox1.Checked)
            {
                tex_Message.AppendText("Checkbox 按花色排列 已被選定" + '\n');
                deck.ResetDeck();
                Print(deck);
            }
            if (checkBox2.Checked)
            {
                tex_Message.AppendText("Checkbox 亂數排列 已被選定" + '\n');
                deck.Shuffle();
                Print(deck);
            }
            if (checkBox3.Checked)
            {
                tex_Message.AppendText("Checkbox 按點數大小 已被選定" + '\n');
                deck.OrderByRank();
                Print(deck);
            }

        }



        
    }
}


CardDeck.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace quiz4_40273040H
{
    class CardDeck
    {
        public PokerCard[] Cards = new PokerCard[52];

        public void CreateDeck()
        {
            for (int i = 0; i < Cards.GetLength(0); i++)
            {
                Cards[i]=new PokerCard();
            }
        }
        public void ResetDeck()
        {
            for (int i = 0; i < 52; i++)
            {
                int j = i;
                Cards[i].Suit = i/13+3;
                Cards[i].Rank=j%13+1;
            }
        }
        public void Shuffle()
        {
            Random rand = new Random();
            PokerCard temp=new PokerCard();
            int j;
            for (int i = 0; i < 52; i++)
            {
                j=rand.Next(52);
                temp = Cards[i];
                Cards[i] = Cards[j];
                Cards[j] = temp;
            }
        }
        public void OrderByRank()
        {
           
         int i,pass;
         PokerCard temp=new PokerCard();
         for(pass=0;pass<51;pass++)
         {
          for(i=0;i<51-pass;i++)
          {
           if(Cards[i].Rank>=Cards[i+1].Rank)
           {
            temp=Cards[i];
            Cards[i]=Cards[i+1];
            Cards[i+1]=temp;
           }
          }
         }
        }
    }

}

PokerCardcs.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace quiz4_40273040H
{
    class PokerCard
    {
        public int Suit;  //花色
        public int Rank;  //點數
        public string RankToStr()
        {
            switch (Rank)
            {
                case 1:
                    return ("  A");
                    break;
                case 2:                    
                case 3:
                case 4:                    
                case 5:                    
                case 6:                    
                case 7:                    
                case 8:                   
                case 9:
                    return string.Concat(" ", Rank.ToString());
                case 10:
                    return Rank.ToString();
                case 11:
                    return ("  J");
                    break;
                case 12: 
                    return ("  Q");
                    break;
                case 13:
                    return ("  K");
                    break;
                default:
                    return "";
            }
        }//將點數轉為字串
        public string SuitToAscii()
        {
            string Str_Suit="";
            switch(Suit)
            {
                case 3:
                    Str_Suit="\u2665";
                    break;
                case 4:
                    Str_Suit="\u2666";
                    break;
                case 5:
                    Str_Suit = "\u2663";
                    break;
                case 6:
                    Str_Suit = "\u2660";
                    break;
            }
            return Str_Suit;
        }
    }

}