名称:扑克发牌 计应192(西)第四组--张会鑫
介绍:(1)52张扑克牌,四种花色(红桃、黑桃、方块和梅花),随机发牌给四个人。
(2)最后将四个人的扑克牌包括花色打印在控制台上。
分析: 花色和点数用枚举类型实现。
每张扑克牌用结构实现。
具体代码:
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Test5
{
enum Color {HongTao=-1,HeiTao=-2,MeiHua=-3,FangPian=-4}//花色
enum Point {A,two,three,four,five,six,seven,eight,nine,ten,J,Q,K}//点数
struct Poker
{//扑克
private string p1,p2;
public Poker(string p1, string p2)
{
// TODO: Complete member initialization
this.p1 = p1;
this.p2 = p2;
}
public void Printp()
{
Console.Write("({0},{1}) ", this.p1,this.p2);
}
}
class Program
{
static void Main(string[] args)
{
Poker po = new Poker();
ArrayList myPoker=new ArrayList();//实例化一个ArrayList存放所有的扑克牌
ArrayList Person1 = new ArrayList();
ArrayList Person2 = new ArrayList();
ArrayList Person3 = new ArrayList();
ArrayList Person4 = new ArrayList();
Random r = new Random();
for (int i = -4; i <= -1; i++)
{//外循环初始化扑克的花色
for (int j = 0; j <= 12; j++)
{//外层循环初始化扑克的点数
myPoker.Add(new Poker(
Enum.GetName(typeof(Color),i),
Enum.GetName(typeof(Point),j)
));
}
}//for循环结束,52张扑克牌已经生成
Console.WriteLine("所有的扑克牌:");
for (int i = 0; i < 52; i++)
{//打印52张生成的扑克牌
Poker poAll = (Poker)myPoker[i];
poAll.Printp();
}
//开始发牌,一个人一个人的发,每发一张牌得从myPoker中RemoveAt掉扑克牌,Count数减小;第一个人Add到一张牌。
for (int i = 0; i < 13; i++)
{
int te = r.Next(0,myPoker.Count);
Person1.Add(myPoker[te]);
myPoker.RemoveAt(te);
}
for (int i = 0; i < 13; i++)
{
int te = r.Next(0, myPoker.Count);
Person2.Add(myPoker[te]);
myPoker.RemoveAt(te);
}
for (int i = 0; i < 13; i++)
{
int te = r.Next(0, myPoker.Count);
Person3.Add(myPoker[te]);
myPoker.RemoveAt(te);
}
for (int i = 0; i < 13; i++)
{
int te = r.Next(0, myPoker.Count);
Person4.Add(myPoker[te]);
myPoker.RemoveAt(te);
}
Console.WriteLine();
Console.WriteLine("第一个人的扑克牌:");
for (int i = 0; i < 13;i++ )
{
Poker po1 = (Poker)Person1[i];
po1.Printp();
}
Console.WriteLine();
Console.WriteLine("第二个人的扑克牌:");
for (int i = 0; i < 13; i++)
{
Poker po2 = (Poker)Person2[i];
po2.Printp();
}
Console.WriteLine();
Console.WriteLine("第三个人的扑克牌:");
for (int i = 0; i < 13; i++)
{
Poker po3 = (Poker)Person3[i];
po3.Printp();
}
Console.WriteLine();
Console.WriteLine("第四个人的扑克牌:");
for (int i = 0; i < 13; i++)
{
Poker po4 = (Poker)Person4[i];
po4.Printp();
}
Console.WriteLine();
}
}
}
| 
 PSP阶段  | 
 所花时间  | 
 说明  | 
| 
 计划  | 
 30  | 
 设计扑克牌发牌程序实现随机发牌  | 
| 
 明确需求和其他相关因素,估计每个阶段的时间成本  | 
 10  | 
 
  | 
| 
 开发  | 
 15  | 
 
  | 
| 
 需求分析  | 
 8  | 
 考虑玩家的人数,以及牌的数量  | 
| 
 生成设计方案  | 
 6  | 
 
  | 
| 
 设计复审(和同事审核设计文档)  | 
 7  | 
 
  | 
| 
 代码规范(为目前的开发制定合适的规范)  | 
 3  | 
 注意代码缩进及变量声明规范  | 
| 
 具体设计  | 
 12  | 
 
  | 
| 
 具体编码  | 
 15  | 
 
  | 
| 
 代码复审  | 
 3  | 
 
  | 
| 
 测试(自测,修改代码,提交修改)  | 
 8  | 
 
  | 
| 
 报告  | 
 3  | 
 
  | 
| 
 测试报告  | 
 2  | 
 
  | 
| 
 计算工作量  | 
 2  | 
 
  | 
| 
 事后总结,并提出过程改造计划  | 
 1  | 
 以保证每次发的牌不重复,并且是随机不连续的(炸弹也不是不可以)。  | 
                    
                
                
            
        
浙公网安备 33010602011771号