/* ***********************************************
* author : Administrator
* email : obruch.com
* 说明:
* createtime: created by Administrator 3/16/2009 11:08:43 AM
* ***********************************************/
using System;
using System.Collections.Generic;
using System.Text;
namespace Cowge.Game
{
/// <summary>
/// 洗牌,发牌 说明:用3位数表示一个牌,共52张,鬼不算 如 101,101..
/// 201,202.. 301,302..401,402
/// 其中百位数的代表牌类型 1 红桃 2 方块 3 梅花 4 黑桃
/// 其余两位数表示牌号 如 101代表红桃1 201表示方块1 303代表梅花3
/// 下面是实现的代码
/// </summary>
public class game
{
static void Main()
{
//初始化 生成牌
int[] Pai=new int[52];
for (int i = 0; i <4; i++)
{
for (int j = 0; j <13; j++)
{
Pai[i*13+j] = ((i+1)*100) + j+1;
}
}
Console.Write("请输入洗牌次数:");
int times = Convert.ToInt32(Console.ReadLine());
Random rnd = new Random();
int k;
int temp;
///洗牌
for (int num = 0; num < times; num++)
{
for (int i = 0; i < 52; i++)
{
k = rnd.Next(51 - i + 1) + i;
temp = Pai[k];
Pai[k] = Pai[i];
Pai[i] = temp;
}
}
///存放四个玩家的牌
int[,] Play = new int[4,13];
int index=0;
///发牌
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 13; j++)
{
Play[i, j] = Pai[index++];
}
}
int PaiType;
int PaiHao;
string s=string.Empty;
///开牌
for (int i = 0; i < 4; i++)
{
Console.WriteLine("玩家 {0} 的牌:",i+1);
for (int j = 0; j < 13; j++)
{
///分离出牌的类
PaiType = Play[i, j] / 100;
switch (PaiType)
{
case 1:
s = Convert.ToString("/x0003");///"红桃"
break;
case 2:
s = Convert.ToString("/x0004");///"方块";
break;
case 3:
s = Convert.ToString("/x0005");///"梅花";
break;
case 4:
s = Convert.ToString("/x0006");///"黑桃";
break;
}
///牌号
PaiHao = Play[i, j] % 100;
Console.Write(s+ " "+ PaiHao.ToString() + " ");
}
Console.WriteLine();
}
Console.ReadLine();
}
}
}