5 本我 5天前 97次点击
下面开发一个类模块,以便在后续使用。这个类模块包含两个类:
● Card—— 表示一张标准的扑克牌,包含梅花、方块、红心和黑桃,其顺序是从A到K。
● Deck—— 表示一副完整的52张扑克牌,在扑克牌中可以按照位置访问各张牌,并可以洗牌。
再开发一个简单的客户程序,确保这个模块能正常使用,但现在还不开发完整的扑克牌游戏应用程序。
但在开始编写代码前,应规划一下需要的结构和类的功能。
1. Card类
Card类基本上是两个只读字段suit和rank的容器。把字段指定为只读的原因是“空白”的牌是没有意义的,牌在创建好后也不能修改。为此,要把默认的构造函数指定为私有,并提供另一个构造函数,使用给定的suit和rank建立一副扑克牌。
此外,Card类要重写System.Object的ToString()方法,这样才能获得人们可以理解的字符串,以表示扑克牌。为使编码简单一些,为两个字段suit和rank提供枚举。
2. Deck类
Deck类包含52个Card对象。我们为这些对象使用一个简单的数组类型。这个数组不能直接访问,因为对Card对象的访问要通过GetCard()方法来实现,该方法返回指定索引的Card对象。这个类也有一个Shuffle()方法,用于重新排列数组中的牌。
编写类库
类和枚举都包含在一个类库项目中,这个项目将包含4个.cs文件:Card.cs包含Card类的定义,Deck.cs包含Deck类的定义,Suit.cs和Rank.cs文件包含枚举。
可使用VS的类图工具把许多代码组合在一起。
(1)创建一个新的类库项目
(2)打开解决方案资源管理器,在练习1 已展开 上下文菜单找查看,找查看类图
(3)视图找工具箱添加一个枚举
接着上下文菜单找类详细信息窗口添加枚举的成员。
再以相同的方式利用工具箱添加Rank枚举
注意:
第一个成员一的输入值为1,它会使枚举的底层存储匹配扑克牌的大小,例如六就存储为6。
为这两个枚举生成的代码位于Suit.cs和Rank.cs文件中。
Suit.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 练习1
{
public enum Suit
{
红心,
方块,
黑桃,
梅花,
}
}
Rank.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 练习1
{
public enum Rank
{
一=1,
二,
三,
四,
五,
六,
七,
八,
九,
十,
J,
Q,
K,
}
}