2014年6月16日 星期一
2014年5月4日 星期日
2014年4月13日 星期日
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;
}
}
}
訂閱:
文章 (Atom)