技术开发 频道

Windows游戏专家:Silverlight3开发进阶

  三、游戏设计

  在了解了纸牌游戏的一些重要规则后,现在我们来探讨一些基本的编程技术。为了更好地了解纸牌游戏的开发规则,让我们先看看游戏画面上的不同分区,如图3所示。

 

 

  注意:在图3中我们特意使用了开发本游戏中使用的一些数据结构名称。接下来,我们将给出解释。

  为简化起见,我们只列出在我们的游戏中使用的最重要的数据结构,如下所示。

private Card CurrentCard;

  List Board;

  List Deck;

  List[] SuitStack ;

  List[] RowStack;

  List PlaceHolder;

  在上面的代码中,变量CurrentCard用来保存当前扑克。当你单击屏幕上的任何扑克之一,该变量的值即刻决定下来。

  第二个List类型的变量Board用于保存左上方初始发出的24张随机扑克。注意,为方便扑克翻转和计数,我们引入了一张特殊的“空”扑克,这张扑克永远是Board列表中的最后一张扑克。第二个List类型的变量Deck用于翻转扑克。在我们的开发中,就像Windows的实现版本一样,你可以通过在Options对话框中选择每次翻转一张或三张扑克。接下来的两个List类型的数组变量SuitStack和RowStack分别用于存储右上方目标栈和下部行栈中的四列和七列扑克牌。

  为了方便确定扑克的位置,我们还推出一个List类型的变量PlaceHolder,用于作为屏幕上放置扑克的占位符。注意:在我们的软件中共有13个矩形占位符,它们将在游戏初始化阶段在另一个辅助方法InitPlaceHolder中被初始化。下面的清单给出了初始化扑克占位符相关的代码。

private void InitPlaceHolder(){

  PlaceHolder
= new List(13);

  PlaceHolder.Add(
new Rect(0 + PADDING, 0 + PADDING, WIDTH, HEIGHT1));//topleft

  PlaceHolder.Add(
new Rect(89 + PADDING, 0 + PADDING, 2 * WIDTH, HEIGHT1));//swap area

  PlaceHolder.Add(
new Rect(267 + PADDING, 0 + PADDING, WIDTH, HEIGHT1));//topright1

  PlaceHolder.Add(
new Rect(355 + PADDING, 0 + PADDING, WIDTH, HEIGHT1));//topright2

  PlaceHolder.Add(
new Rect(443 + PADDING, 0 + PADDING, WIDTH, HEIGHT1));//topright3

  PlaceHolder.Add(
new Rect(532 + PADDING, 0 + PADDING, WIDTH, HEIGHT1));//topright4

  PlaceHolder.Add(
new Rect(0 + PADDING, 114 + PADDING, WIDTH, HEIGHT2));//bottom1

  PlaceHolder.Add(
new Rect(89 + PADDING, 114 + PADDING, WIDTH, HEIGHT2));//bottom2

  PlaceHolder.Add(
new Rect(180 + PADDING, 114 + PADDING, WIDTH, HEIGHT2));//bottom3

  PlaceHolder.Add(
new Rect(267 + PADDING, 114 + PADDING, WIDTH, HEIGHT2));//bottom4

  PlaceHolder.Add(
new Rect(355 + PADDING, 114 + PADDING, WIDTH, HEIGHT2));//bottom5

  PlaceHolder.Add(
new Rect(443 + PADDING, 114 + PADDING, WIDTH, HEIGHT2));//bottom6

  PlaceHolder.Add(
new Rect(532 + PADDING, 114 + PADDING, WIDTH, HEIGHT2));//bottom7

  }

  从前面的图3中你也不难看到屏幕上共对应着13个扑克占位符。为此,我们定义了一个可以存储13个元素的List类型数组。此外,请注意,这些占位符矩形中有一些具有不同的尺寸,例如下部区段七个矩形比较高,用于容纳可能最多数的13张扑克;第二个占位符宽度为2*WIDTH,即两张扑克的宽度,用于容纳可能最大数目的3张扑克。如果你熟悉Windows自带的纸牌游戏的话,这是很容易理解的,在此不必赘述。

游戏设计
 

0
相关文章